OS X: Best Java Platform?


Apple, on its Java Developer web site, tells us:

Mac OS X is the only mass-market operating system that comes complete with a fully configured and ready-to-use Java Development Kit. Professional Java developers are increasingly turning to the feature-rich Mac OS X as the operating system of choice for cross-platform Java development projects on the Macintosh and other platforms.

Java Preferences

New Java releases however make their way to all OS X users typically quite some time after their initial deployment for Solaris, Linux, and Windows. Java 1.5, auspiciously also code-named “Tiger” was first released in late September 2004, while the Mac JDK came out to the public in an OS X Software update about a year later, in the form of Release 3.

With this said, it’s not uncommon for Apple to seed software earlier to ADC members of appropriate tiers, so if you’ve got to be on the bleeding edge, there are ways.

Beyond those caveats, “Best Java Platform” is a vague assertion I need to qualify: Java’s essence is to be “cross-platform”, so there’s not much of a point in engaging in platform spitting contests unless we look at a few specific practical aspects of Java development.

As a developer, it gives me the warm fuzzies to know that the company that builds my computing platform of choice also maintains and holds itself fully responsible for the flawless release of its own Java implementation.

/Library/Java/Home/../.. shows us all versions of Java installed on Mac OS X. A set of simple symbolic links activate a version over another. It’s very clean. As Apple releases new versions, the installer updates this directory. With the Java 1.5 release, Apple introduced a couple of nifty tools in /Applications/Utitilies/Java/, where you’ll notice the J2SE 5.0 directory, with “Java Preferences” and “Java Cache Viewer”.

Java IDEs, most of which are built in Java and are therefore cross-platform, with their support for standardized application deployment frameworks defined in J2EE, make cross-platform Java application development quite seamless. Most IDEs are however very RAM-hungry. For this and a few other reasons, a simple text editor combined with “ant” and/or a strong command-line interface (CLI) often makes a whole lot of practical sense in Java Development. In Windows-land, DOS is a horrible CLI. Many Windows users cope by installing Cygwin. But “Java is a Windows program, and as such, doesn’t recognize Cygwin-specific paths“.

While Linux provides a strong development environment, it still isn’t quite as “nice” a Desktop operating system as Mac OS X. And Mac OS X being Unix, it feels just as nice on the command-line as Solaris, Linux, or FreeBSD.

Java Preferences

Apple’s embrace of Java goes far beyond the J2RE. Apple enables Java developers to get their feet wet with OS X Application development by allowing them to write native Mac OS X apps … in Java!

See also:

JavaDoc Dashboard Widget

Mac OS X For Java Geeks from O’Reilly.



This information is not correct, I think Solaris Express Developer Edition comes fully-equipped with all Java developers needs, even more than Max OS X.


Apple needs to fix some bugs in Java to be taken seriously as the premier Java platform (graphics2D and the SWT-AWT bridge in particular). I spend too much time adding Mac speicifc code to my Java because things works differently on the MAC! Things like transparency need to work the same across all Java implementations.


Chris Holland

Anunnaki: good point … i purposely left performance out of the equation simply because i’ve never done or yet read any interesting benchmarking of the Java VM on OS X vs other platforms.

If we went into performance comparison, we’d have to distinguish between server applications (servlet container apps, j2ee etc) and desktop/client applications (swing etc).

So i focused purely on the development aspect. Because in the end, you can develop Java apps on just about anything with a CPU and deploy them on hardware/OS that’s better suited for running in production.


I believe the Java Cocoa bridge is disappearing primarily because hardly anyone was using it. Further I believe Apple’s been pushing Cocoa more.

I do think Apple would be wise to get Java technologies out faster and also push Java-Cocoa more. But realistically almost everyone who uses Java either puts a Cocoa front end on it or just uses Swing with the small changes that the Cocoa bridge supplies. So I can understand the problem.


It is just too bad Apple intends to no longer add Java support for APIs created beyond MacOS X 10.4.

The main reason why many java programmers on Mac have no intention to switch, is
– for fear of getting even further away from cross-platform (needing to give up the vast Java libraries, switching language: although trivial as it seems, it is just busy work to convert Obj-C-only computational code back to Java-only computational code)
– our refusal to deal with Objective-C’s primitive memory allocation model.

On the other hand, I can understand that Apple doesn’t find it cost effective to provide parallel documentation sets for both Obj-C and java.

IMHO, however, there is a middle way,
since many of us have enough SmallTalk and C knowledge to actually be able to understand Obj-C code examples:
as long as the java to Objective-C bridge continues to work, I’d be happy to look up the Obj-C documentation.
All it takes is to include occasional links in the Obj-C documentation to java remarks that point out those issues that need extra attention for java programmers.

(to go one step further, the Obj-C docs could be adorned with java icon popups to display short notes such as java calling sequences).

I just hoping these comments provide some ammunition for everyone who is in a position to lobby with Apple for maintaining minimal cocoa+java support for java.


Hmm well,

the “best” platform would also be top notch performance wise, no?

I am happy with the performance for most things, but I still think java on stupid windows or so is faster, no ?

But you have it out of the box, and it just runs – giving the average user a good tool that might or might not be used so often though :-)


Yeah, what a pity Cocoa-Java is fading away. The docs say it won’t be updated after 10.4, although it will still be supported.

Comments are closed.