A year after its official debut, Apple's Java 6 implementation is now available for Intel-based Macs. Was it worth the wait?
Many developers and Java thought leaders, including James Gosling, were very disappointed at Apple's lackluster support for the latest Java features. Although not all developers depend on the most up-to-date Java capabilities, the fact that a JDK 6 implementation was not available at all on Mac computers resulted in sour feelings toward Apple and the state of Java on the Mac.
Just when some developers, including Gosling, were giving up on the Mac as a Java development platform, Apple released a preview of its Java 6 implementation a few months ago. And today, a short, cryptic note on the Apple Developer Connection heralded Java 6's availability for Intel Macs through the company's software update mechanism:
This update provides Java SE 6 version 1.6.0_05.
This release does not change the default version of Java. This release is only for Mac OS X v10.5.2 and later, and should not be installed on earlier versions of Mac OS X. This release is for 64-bit Intel-based Macs only and cannot run on PowerPC-based or 32-bit Intel-based Macs.
Software developers can visit the Java Reference Library for information on this release's features.
Was the more than one-year wait worth it?
In a word, yes.
While Sun has devoted a great deal of resources to supporting Java on Windows, Solaris, and Linux, and while the latest Java features are always available on those platforms, I have to say that sometimes good things come to those who wait—and, concomitantly, bad things may happen to those in haste. I'm not saying this as a developer writing Java code but, more importantly, as a user of Java applications.
In my case, actually, the roles of user and developer merged in that I had such a strong confidence in Java on Windows that I actually developed a product relying on that technology, using Swing. That was several years ago. I do not want to recount the heartache from trying to make client-side Java work well pre-JDK 6 on Windows, the platform our customers used.
In addition, it was Java applets that arose my interest in the JVM and the language in the first place in early 1995. I still think that applets are a truly brilliant idea, and it fills me with sadness that this wonderful idea is now finding its inferior implementation in the form of Ajax applications (and its true fulfillment in Flex).
While I had such a poor experience with client-side Java on Windows, Solaris, and Linux, one of the most surprising experiences of switching to a Mac over a year ago was the excellent and, in fact, seamless, Java support on OS X. Applets just work in Safari. And that Swing application I had so much trouble supporting customers with on Windows, turned out to work best on the Mac. WebStart never failed to launch the application, and the Swing app feels rather at home on the OS X desktop.
Firms undoubtedly have to make the choice between rapid delivery and a quality implementation. Not wanting to sound like an Apple fanboy, I'd note nevertheless that many software firms should take a page from Apple's consumer-focused approach to product releases. In hindsight, I would have rather waited until now to get a decent JRE 6 implementation on Windows, especially if that would make applets and client-side Java a truly viable option to write software for.
And even on Windows, we still have a long way before a decent client-side user experience is generally available. When Sun announced the Java 6 Update 10, I immediately visited the download page of a few applets to experience this release. Alas, I was greeted with several error messages, and only after, again, having to manually install the update, was I able to access those applets.
Where do you stand between speedy releases, on the one hand, and a quality implementation and user experience, on the other?
apple has a lot better developer's guidelines - they've got materials telling you how to design gui for osx (and in genereal, i'd say), how to make it technically (jar bundler) possible and user friendly. a lot pluses. on the other hand, the windows and linux worlds get everything fast, BUT: you will never find apple-like guidelines from microsoft on windows, nor linux (impossible, linux is just a huge mess regarding this issue). so what? let's find the less common denominator: developers :) we just simply don't give a ... (you know). it's all java after all - wora. and that's it, we don't care how the applications actually feels like on all of the platfroms that java can run on. i found onla a few apps that actually behave kind of right on all of the platforms i've got (windows at work, linux and osx at home). sad but true. think about it guys.
> apple has a lot better developer's guidelines - they've > got materials telling you how to design gui for osx (and > in genereal, i'd say), how to make it technically (jar > bundler) possible and user friendly. a lot pluses. > on the other hand, the windows and linux worlds get > everything fast, BUT: you will never find apple-like > guidelines from microsoft on windows, nor linux > (impossible, linux is just a huge mess regarding this > issue).
thanks for the links:) the os x and windows gui design rules are quite easy, but for linux we've got different gui managers, so that's what i meant by "huge mess". beside this, i forgot to mention that it would be really nice from microsoft to put some effort in making applets working seamlessly in msie as they do in safari. for linux-based systems, they (community) would have to first stick with one browser - firefox is nice and then do the same.
The bottom line is that they are simply too slow. A while back ago I bought a MacBook for development on projects where the client doesn't want or can't provide me hardware to use. I used it for one Java 5 project then a Java 6 project came up and I couldn't use it. I had to install Ubuntu on the damn thing because of it. So their lackadaisical attitude turned the thing into a brick as far as I'm concerned.
Apple came out and lured Java devs in by saying that it would treat Java as a first-class citizen on their OS, and now that the Java people have embraced the platform they don't care. They won't even tell us when they might release this stuff we can make plans based on it. Hardly seems like first class treatment to me. My next portable dev machine will be whatever runs linux well -- it sure as hell won't be a Mac.
> for linux we've got different gui managers, so that's what > i meant by "huge mess".
Even though I put up links to GNOME and KDE, my UI advice goes as follows:
Unless you are writing a KDE, GNOME, Eclipse, etc. application (that is, unless your application is either an official part of KDE, GNOME, Eclipse, etc.), choose either the Apple or the Windows UI guidelines and stick with it. It's either Coke or Pepsi.
Even after pouring substantial effort and money into porting Office over to the Mac, Microsoft's (really nice) Mac Office doesn't feel like a completely native Mac application. Then again for the last few years Microsoft Office on Windows hasn't felt like a completely native Windows application either. There are a few UI issues that simply don't port well (for instance, Mac applications generally don't have multiple menu bars even when there are multiple windows). If Microsoft can't make the peg fit in the hole, don't hold your breath on anybody else doing so.
Apple and Microsoft don't necessarily have the *best* UI guidelines out there (especially since there are multiple definitions for "best": efficient to use? easy to pick up? easy to add support for disabled users?), but they do have the most recognizable. At least some portion of users will be able to pick up your application and use it.
And, for the record, KDE applications run perfectly well in GNOME, and GNOME applications run perfectly well in KDE, and this has been the case since before the turn of the century. So it's not a question of actually running the app, just interacting with it.