Page 2 of 7
The case for the compiler directives and keywords seems clear. The Java Language Specification lists all of the keywords that are part of the language, along with a couple that are reserved for future use. Under direct examination by Sun attorney James Batchelder, James Gosling, Sun VP and Fellow, pointed out that the compiler directives and keywords that Microsoft has added simply are not part of the language. Furthermore, Alan Baratz, President of Sun's Java Software Division, pointed out in his testimony that nowhere in the contract is Microsoft granted any rights to the Java language. The contract covers the Java runtimes and compiler -- not the language itself.
The bottom line is that a valid Java program must compile and run, period. That is the proposition that Sun is going to great lengths to defend. The Microsoft version provides for programs that are "valid" in one context, but not in another -- and that is contrary to the very purpose and rationale of Java itself.
Because Microsoft's virtual machine supports the Runtime Native Interface (RNI) defined by Microsoft, but does not support the Java Native Interface (JNI) defined by Sun, any program utilitizing native code that runs in one environment will not run in the other. This situation creates a serious breach in the Java compatibility story. All other implementations of the Java virtual machine support JNI, including versions created by Oracle, IBM, Symantec, and Inprise, as well as those created by Sun. Microsoft is the one outstanding exception. The question is, is Microsoft required to support JNI under the terms of its contract?
The crux of the matter was summarized by Alan Baratz, in testimony given under the direct examination of lead attorney Lloyd Day on Wednesday afternoon, September 9. Stepping through a series of definitions in the contract, Baratz stated that the definition of the Applet Application Programming Interface (AAPI) had been defined in the contract to include all interfaces defined for the virtual machine, including the native method interfaces defined by Sun that allow Java programs to access native code.
Baratz did not deny that Microsoft had the contractual right to define its own interfaces, for example, in the form of the Windows-specific RNI. That right was explicitly granted so that Microsoft could produce a highly efficient version of the Java runtime that could be accessed by Microsoft operating systems and utility programs. But, because the contract had been enlarged to allow that, the definition of AAPI had been expanded to ensure future compatibility with any all interfaces defined by Sun -- documents that are the result of the "open specification process" that addresses concerns from anyone and everyone in the industry who cares enough to voice an opinion on the preliminary versions that Sun publishes on its Web site. (Those specifications are sometimes authored by Sun and sometimes by other parties, so the process truly is an industry-wide collaborative effort.)
Note: When you see the word redacted in these documents, it means that material has been removed in order to protect trade secrets. It's like "retracted", except the text isn't actually taken back -- it's simply not present in the version you are reading. Interestingly, the space it occupied is still there, so you can gauge how much of the document was redacted.