Java was designed to support applications on networks. In general, networks are composed of a variety of systems with a variety of CPU and operating system architectures. To enable a Java application to execute anywhere on the network, the compiler generates an architecture-neutral object file format--the compiled code is executable on many processors, given the presence of the Java runtime system.--The Java Language, An Overview
This is useful not only for networks but also for single system software distribution. In the present personal computer market, application writers have to produce versions of their application that are compatible with the IBM PC and with the Apple Macintosh. With the PC market (through Windows/NT) diversifying into many CPU architectures, and Apple moving off the 680x0 toward the PowerPC, production of software that runs on all platforms becomes nearly impossible. With Java, the same version of the application runs on all platforms.
The Java compiler does this by generating bytecode instructions which have nothing to do with a particular computer architecture. Rather, they are designed to be both easy to interpret on any machine and easily translated into native machine code on the fly.
It's amazing how quickly "write once, run anywhere" degrades into "write once, run on solaris or windows, and only in america..."
--Luke Gorrie on the jeeves-interest mailing list
Support for platforms other than Solaris and Win32 has been small to non-existent. Even Sun's own popular SunOS 4.1 is not supported. Sun does not work closely with others porting Java to different platforms, and is not truly open with Java.
Bottom Line: C-