> >... much-exaggerated claim ... that the Java _language_ is > >somehow more portable than any other. It is not. > > Well, in fact it is. Very little in the Java language is left > implementation dependent. Order of expression evaluation? Left to right. > Size of primitive data? Completely specified (e.g. 32 bit 2's complement > for int, etc.) Parameter passing? By copy. Semantics of floating-point > arithmetic? IEEE-754. References to uninitialized values? This can't > occur. Character set? Unicode. Well, I suppose you are correct--but only for the the platforms that have JVMs which are not made by Microsoft or HP. :-) And which correctly implement IEEE-754 even if the platform doesn't. In the points you mentioned, Java IS more portable than Ada and FAR more portable than C or C++. (Except also that Ada's character sets are as clearly-defined as Java's, and Ada's parameter passing almost as clearly-defined.) The reason I didn't consider that is that the Java advocates themselves seem to think of portability in terms of J-Code and the JVM. > .... API is a different situation; e.g. there have been horror stories about > the non-portability of the AWT. And obviously the effects of environment > inquiry methods depend on the platform. But as far as the Java language > semantics are concerned, the designers sought to completely eliminate > implementation-defined/dependent behavior, and they have come pretty close > to meeting that goal. I hadn't thought of this either. It's a bit misleading to crow about the portability of a language when almost all programs depend on a "standard" library that is non-portable. (In fairness, I've seen lots of UNNECESSARY implementation-dependencies in Ada programs.)