Why Apple Should Not Ditch Java

I'm not an hardcore Apple user. My first Apple product ever was a Macbook Pro I bought about one year ago.

But I fell in love with the Mac platform, and I think its really strong point is that it's versatile. It's got plenty of useful proprietary apps that sometimes I want to use or I am forced to use, like Microsoft Office or Adobe Photoshop, a pretty decent Adobe Flash implementation, but since it's a BSD derivative it's got a lot of nifty tools I'm used to and that I really like.

Sure, Windows might be faster at many tasks, especially if you're gonna spend as much money as you need to invest in Apple hardware, but my feelings towards Windows are mixed. I liked XP at the beginning, but it grew old and tired; Vista was a mess; Seven seems fine, but Microsoft still needs to conquer back my trust. Also, Windows is fine as a development platform as long as you use Microsoft tools - which are quite good - but it can get squeaky as soon as you adventure into the FLOSS land - I can remember some madness I incurred in while trying to use git under Windows.

What about Linux? I's a great development environment. I simply love my Ubuntu box, it's exactly as I want it. Eclipse, Netbeans, everything is set up as I want, all the key bindings, all the details. But my Ubuntu box is a tower form factor workstation with ethernet connectivity and two monitors - I think Ubuntu fails pretty hard at the common desktop experience, especially on a notebook - wireless connectivity is often an issue, suspend and hibernate are unreliable, the battery doesn't last as long as I'd like, and Flash on full screen is flaky. I don't think it's Canonical's own fault - it's really hard to have an OS work on each and every hardware and giving it away from free - but from the user's point of view this is a failure.  Some key apps are also missing - OpenOffice might not be enough a replacement for Office, and GIMP is not quite as effective as Adobe Photoshop.

But the Mac has it all, and that means it's got a lot of appeal on developers - we usually want the eye candy and the dark console, we like our computer to 'just work' and yet we like to be able to tune every detail. Whenever I go to a conference I can see there're far more Macs, iPads, iPhones than in any other typical business environment. A lot of developers from many communities simply love using Macs for their development work - I simply don't think that developers don't count in Mac market as someone stated. Maybe many of them are not Java developers, but as soon as they're unable to install Eclipse they'll complain as well.

Apple's Java sports its own Cocoa bindings, which are very useful to achieve a native look-and-feel, OS integration and general responsiveness for all java based software. Eclipse is java based and it's a widely used platform, RubyMine is one of the great favourites for Ruby coders, Netbeans is evolving at a great pace and supports Java, Ruby, Python, PHP and many others. Not to mention the fact that while I write those lines it's the only JDK available and working out of the box on Snow Leopard.

Now this is going to change. Java is deprecated on Snow Leopard, won't be included in Lion and can't be used for Mac App Store.

If Mac OS X were to be left with a third-party Java implementation - and let's hope SoyLatte can cope with such burden - we'll probably lose native OS integration, everything that's Swing or SWT based will need X11 to run, Swing will probably use its native Metal widget set while SWT will probably rely on GTK+ bindings; Apple doesn't even seem to be willing to contribute its own patches to the OpenJDK project, even though it would be meaningful if they just didn't want to waste resources on what they think it's a dead technology.

It's not a great scenario, but the real question here is: why?


Why should Apple have done all that? Is it that difficult to update the current JDK to work with  Lion? JDK7 might be a different topic, but hey - they're basically dropping what they've already done! And they're not letting anyone to continue their job easily. I think Apple is perfectly aware that the Mac OS X ecosystem is fairly different from the walled garden of IOS -  Windows is still got a much larger market, and limiting what Mac OS X can do will just feed Microsoft's pockets again.

I don't think there will be an official statement on that, but I bet Oracle has a part on this. Mac JDK seems to have been built by Apple but to have sprung from Sun's own JDK - is Oracle not willing to let this deal to go on? Maybe Apple needed to renegotiate its license and it turned out to be too expensive? Even though Apple may think Java is dead, it has no apparent reason to silently stab it again.

Their decision is causing a lot of noise in the Mac/Java community, let's see if Steve comments on this as well