By the end of the year, Apple's MRJ will be only Java virtual machine (JVM) on the Mac. "Write-once, test-everywhere" didn't just mean developers had to test on each of their target platforms -- they also had to test on each VM on each platform. Metrowerks President and CTO Greg Galanos sees having a single VM on the Mac as a benefit to both developers and customers.
Why were there multiple VMs on the Mac? Over a year ago, Galanos explained that since "there wasn't a VM available on the Mac, we developed one. However, the Java virtual machine is really OS software, and we will support Apple's Java VM for the Mac as soon as they begin shipping in parallel with the Solaris and Windows versions."
The current version of Metrowerks's CodeWarrior Pro will be the last to include the Metrowerks VM. The company plans to use Apple's MRJ in September's CodeWarrior Pro 4 release and subsequent releases.
Microsoft partnered with Metrowerks on its VM. The current version of Microsoft's Internet Explorer (IE) for the Mac allows users to choose between Microsoft's VM and Apple's MRJ. As soon as the MRJ team has worked out a few more details requested by Microsoft, MRJ will be the only option.
MRJ is also working on a plug-in for Netscape's Navigator. Gary Little, Apple's Java product manager, explains that "Navigator 5 (which should beta later this year) will have an 'Open Java Interface' which is a plug-in interface that should allow us to integrate our Java in very nicely."
Partly responsible for causing a stir in the Mac Java community is the coupling of an announcement that there would be a single VM on the Mac with an announcement that Apple and Microsoft would collaborate on Java for the Mac. This caused concern because Microsoft is not supporting all of Java in its Windows implementation. In particular, Microsoft does not support the Java Native Interface (JNI) and Remote Method Invocation (RMI).
Apple's Little stresses that MRJ will support all features in Sun's core Java specification (MRJ 2.0 does support all of the 1.1.x features). The Microsoft collaboration will not affect Apple's support for JNI and RMI. Little explains that much of the Microsoft collaboration will help make MRJ work better inside of Microsoft IE and support its security level. Also, Apple plans to port over some of the features of Microsoft's J/Direct that haven't yet appeared in Apple's JDirect (used to access the toolbox and underlying shared libraries).