Artima.com has published Part I of an interview with Sun Microsystems' fellow and chief engineer Rob Gingell in which he discusses open source licensing, source and binary compatibility, binary standards, and the Java Community Process.
The Unix industry was regarded as fragmented by customers because you couldn't interchange the binary artifacts between systems, either in whole or in part. Yet we had all those Unix standards, and everyone claimed to conform to them. So what went wrong?
Well, in some ways, nothing?only, we had an audience mismatch. Unix was very successful in having a technology standard?source code was relatively portable. Linux's rapid rise is in part due to a ready-made set of applications, and its historical evolution was partly driven by finding an application it couldn't run and then adding what was needed. The programmers actually did, and largely do, enjoy "open systems" in Unix.
End-customers, however, did not. For them, the Unix standards have a similar import that steel standards have to a person trying to buy a car. No one cares about them explicitly, nor makes a purchase decision based explicitly on them. The JCP manages Java in both spaces, providing both programmers and end-users of their work the benefits they're seeking.
I am not sure that I agree with the comparisons that Rob made. To port an app from one Unix flavor to another is real work, requiring blood, sweat, and tears from skilled and expensive people. That's why it is only done when there is a business case.
Linux, on the other hand, is far more homogeneous. I don't usually install binaries. I find it easier to recompile from source than to endure the hassles of RPM. The point is that the recompile requires zero effort on my part.
That whole issue is only peripherally related to the issue of whether having a binary standard is essential for Java.
Suppose, for a moment, that all Java programs are delivered as Java source only and are compiled into native code, and further suppose that the build process is as streamlined as ./configure,make,make install in Linux. Binaries of popular programs would surely appear for the popular platforms, for the convenience of users who aren't shell-savvy. More esoteric apps and platforms would be limited to those who can run a script. So what?
Really, the key to the success of Java is the quality of the cross-platform library. Knowing that I can get Tomcat to work without tinkering on a gazillion platforms helps Java. Having a buggy Swing library on OS X hurts Java.