Networked UNIX workstations as well as workstations running Windows 98 and Windows NT are fast becoming the standard computing environments at many universities and research sites. Additionally, many of these workstations, because of recent cost improvements, are commonly Symmetric Multiprocessor (SMP) workstations with two or four (or sometimes more) CPUs. Educators and researchers search for efficient methods of taking advantage of these advances in hardware technology. Java, with its wide usage, is fast becoming the choice of professionals because of its wealth of options as well as its ease of use. This paper investigates the use of Java sockets, Java RMI, and Java threads for parallel programming. We compare Java results with a standard message passing environment widely used in distributed programming, message passing interface (MPI). Keywords Java, message passing interface, distributed and parallel programming, sockets, threads, RMI.