Being architecture neutral is a big chunk of being portable, but there's more to it than that. Unlike C and C++, there are no "implementation dependent" aspects of the specification. The sizes of the primitive data types are specified, as is the behavior of arithmetic on them. For example, "int" always means a signed two's complement 32 bit integer, and "float" always means a 32-bit IEEE 754 floating point number. Making these choices is feasible in this day and age because essentially all interesting CPUs share these characteristics.

The libraries that are a part of the system define portable interfaces. For example, there is an abstract Window class and implementations of it for Unix, Windows NT/95, and the Macintosh.

The Java system itself is quite portable. The compiler is written in Java and the runtime is written in ANSI C with a clean portability boundary. The portability boundary is essentially a POSIX subset.

--The Java Language, An Overview


This is essentially true. However some concern has been expressed that this may not be the best choice for some platforms, especially the X86.

Furthermore, certain aspects of thread behavior vary from system to system.

Bottom Line: B+

Previous | Next | Outline | Cafe Au Lait Home Page
Copyright 1997 Elliotte Rusty Harold
Last Modified Sunday, March 9, 1997