In the area of parallel processing, performance has been the primary goal, and historically, parallel software writers paid less attention to software portability. However, as software is becoming more complicated, costs for developing and maintaining parallel applications are rapidly increasing. Reusable and portable software is certainly needed even in the parallel processing area. Java appeared on the scene under the slogan of "Write once, run anywhere", advertising portability as its largest advantage. Java Grande Forum was established to achieve two goals; portability and highperformance. Current Forum discussions seem to concentrate on optimization of Java programs, elements of numerical libraries, message passing interface for Java, etc. Few implementations of practical applications are presented so far. To find out obstacles in writing Grand Challenge applications in Java, empirical studies on developing large and practical applications in Java are strongly desired. As an example of practical distributed parallel applications, we have implemented two versions of a parallel multi-pass rendering system. One version is written in C++ and the other is written in Java. The multi-pass rendering method is a combination of radiosity and ray-tracing methods. These implementations, about 56,000 lines in total, are publicly available at http://www.archi.is.tohoka.ac.jp/research/cg/.These two programs are based-on the identical algorithm and are directly comparable in terms of performance and efficiency in software development. Experimental results on Sun Enterprise with JDK 1.2.1 and gcc 2.7.2 which is used only for compiling message passing library show that compared to the C++ version, the performance of the Java version is about three to five times slower and requires approximately four to seven times more memory space. We also discuss some problems encountered in developing practical parallel distributed applications in Java.