\documentstyle[12pt]{article} \textheight 25cm \textwidth 15cm \pagestyle{empty} \newcommand{\Title}[1]{{\large \bf #1}} \newcommand{\Author}[1]{\vspace*{1.5em} \par #1} \newcommand{\Affiliation}[1]{\par #1} \newcommand{\Address}[1]{\par #1} \begin{document} \begin{centering} \Title{Parallel Accurate Linear Algebra in Java} \Author{Michael Lerch, J\"urgen Wolff von Gudenberg} \Affiliation{Informatik II, Universit\"at W\"urzburg} \Address{Am Hubland, D--97074 W\"urzburg\\ E-mail: {\tt \{lerch | wolff\}@informatik.uni-wuerzburg.de}} \end{centering} \vspace*{2.5em}\par\noindent In this talk we analyse the programming language Java with regard to its capabilities for reliable scientific computing. Although efficiency is very important it will not be our main concern here. We first examine the basic arithmetic features of Java. It is well known that the definition of Java floating--point arithmetics is based on the IEEE 754 standard. But it unfortunately leaves out several important points, e.g. directed roundings and exception handling. We present an solution using the JNI (Java Native Interface) which provides full IEEE support. If arithmetic exception handling is not important, a portable pure Java implementation can be used instead. Based on these low level arithmetic features we define an extensible class hierarchy of arithmetic data types including different kinds of intervals and matrices. To increase the reusability of these classes we examine several mechanisms to simulate genericity. We use an SPMD approach to introduce parallelism to our class hierarchy. Parallel matrices are derived from an abstract matrix class and can be used without knowing anything about distribution and parallelism. We compare several implementation variants, including Java built-in threads, TCP sockets, RMI (Remote Method Invocation), CORBA and wrapping of native message passing libraries such as PVM. \end{document}