Tuesday, April 29, 2008

Apple Chose...Poorly

So after a long wait, Apple finally released Java 6 for OS X. It's for Leopard only. And Leopard is apparently going to be the only Java-supporting OS without a 32-bit Java 6.


I can accept that it only runs in Leopard. They're moving forward, and with Java shipped as part of the OS it's a lot more hassle to backport it to Tiger. Plus, I've got Leopard so I'd be fine.

But the 32-bit thing really burns me.

It's not like there's only 64-bit Javas out there and Apple would have to do all the heavy lifting to support them on 32-bit machines. The vast majority of installed Java distributions are the 32-bit versions, and Sun ships 32 and 64-bit JDKs for both Linux and Windows. Hell, Landon Fuller even got the FreeBSD patchset JDK 6 to successfully build on Mac. It's missing the "last mile" of OS X integration like a Cocoa UI (X11 only right now) and sound support, but hell, it's there and it runs. So it's not even the JVM bits standing in their way.

Could it possibly be the OS integration? I don't buy that. Unless there's some serious problem with their libraries on 32 versus 64-bit systems, it oughta be a recompile. Even if it's a little more work than that, there's a lot of 32-bit Intel Macs out there.

Of course the fanboys are just going to tell me "welcome to the club." Yes, I know Apple regularly holds back features to encourage people to upgrade OS or hardware. And this is probably one of those cases, since there certainly doesn't seem to be a good technical reason for it. But seriously...this one just seems dumb, since they could have put the same bits in Landon's port and essentially had it working.

Maybe I'm too naive. Is this just standard operating procedure at Apple? Anything we can do to convince them?

22 comments:

Anonymous said...

Speaking for the drooling, slack-jawed, hopelessly ignorant fanboys, Java apps just aren't a significant factor on the Mac platform. (I use one Java CLI program, and that only rarely.) So there's very little reason for Apple to care.

See also Gruber:

http://daringfireball.net/2007/10/shipping_means_prioritizing

Charles Oliver Nutter said...

anonymous: I meant no offense with the fanboy comment...especially since you guys have felt the pain many more times than I have.

That link is pretty old, not relevant to Apple's decision to bail on 32-bit support. I still don't see how it could have been that much more effort, but I'd love to be proven wrong.

And I suppose it irritates me most because Rubyists love Macs, and I'd love for them to be able to run JRuby on the fastest Java possible. Now any of them on Tiger or slightly older machines will still have to use soylatte, if they can get past the JRL trolls.

Anonymous said...

My point was partly that we haven't felt much pain. Even when I ran Linux regularly (5-6 years ago) I had little use for Java, and AFAICT the main use for Java today is either writing more Java (e.g. Eclipse, NetBeans, JEdit), or writing Enterprisey things that matter not at all to my field (scientific computing). On the Mac I avoid it like the plague, since it's almost as bad as X11 in enabling inconsistent, poorly-ported apps.

My guess is that Apple did something like the minimum necessary to introduce Java 1.6 going forward, namely getting it running on current and future architectures. I'm not sure how much more work it would have taken to get it working on 32-bit, but any nontrivial amount probably would have been time wasted.

And while it may have some adverse impact on JRuby adoption, I don't have any particular preference for JRuby, so... meh. It sounds like a really cool project to work on -- part of me wishes he had your job -- but that's no reason for Apple to care.

Barry Kelly said...

Apple hates developers. It's as simple as that: their fascistic control of aesthetics means that it'll never be a good platform to write software for while it has its current culture, IMHO. I'd take MS any day of the week over Apple for a platform, and I have no love for MS.

Giles Bowkett said...

I think the hating devs thing is overkill, but definitely it's a culture thing. Persuading Apple to change its mind is impossible as long as Steve Jobs is in charge, and the company would sink without him, so the only thing to do is kidnap him and demand a 32-bit Java as your ransom. Even then it would be a logistical nightmare and the minute Jobs got out he would destroy the 32-bit Java for whatever insane reason he had for not creating it in the first place, and probably go on to have the developers who built it killed for contradicting him. Steve Jobs is relentlessly opinionated, so much so that he makes DHH look like a talk-show host.

So long story short, chances of persuading Apple to see reason, snowball, hell, etc. There is always the chance that Jobs will unexpectedly reverse his opinion entirely and demand a 32-bit Java himself - he actually does that kind of thing all the time - but other than that, you're basically stuck.

izidor said...

Don't panic, Java people :-)
Have you heard of software releases, as in Release 1, Release 2, ... ?

Current java 6 or 1.6 XYSWE or whatever it should be called runs on leopard,intel,64 bit only. I guess you will get a more general release in time...

And it is true that Java on the Mac is hated, by users and developers alike. Apple gave people a choice of developing in Java and/or Objective C (initially even wanted us ObjC developers to move to Java, ugh), and guess what - nobody used Java. So its priority was decreased, and it is getting worse.

Too bad for you, Charles, since your software is not ugly Java monstrosity.

santi said...

We can do something to convince them: stop buying them. I just did this 4 years ago, when they stopped releasing security updates for jaguar just after the panther release, and let me with a just machine just bought (3 months of 1 year warranty) full of bugs, and trying to make me pay an extra 200€ to get them fixed. I switched it to linux and this was the last thing I bought from Apple.

Rob Dickens said...

The kidnap idea is a good one. Otherwise, some very narrow-minded comments. While a Java UI is probably never going to be quite as polished as a native one, Java apps do have other tricks up their collective sleeve. I suspect that Java on the Mac is a bigger deal for developers (like me), who appreciate OS X as a development environment.

mathie said...

As Izidor says, with any luck they're taking the release-early, release-often mantra to heart. It's better that *some* folks get Java 6, rather than everybody having to wait 'til they've finalized the 32-bit port too.

Then again, I'm one of the drooling fanboys with the latest hardware, so it runs fine on my Macbook Pro. :-D

Christian Seiler said...

I strongly believe that JRuby will become the superior deployment option (speed, memory mgmgt., threading, available cluster options on the JVM...) for Rails apps within the next months.

But this stupid decision by Apple probably will be a real obstacle for adoption since Mac OS is so dominant in Rubyland (besides JRuby being slow at development time and some childish and unprofessional distaste of Java by some folks)

Frederick Cheung said...

Most intel macs are 64bit capable. The first ones shipped early 2006 with 32bit only CPUs, everything from late 2006 onwards is 64 bit capable, so there was only a 9 month or so window in which you could buy a non 64 bit intel mac. In terms of number of machines missing out I would have thought that the absence of PPC support would exclude far more people (admittedly people with (on average) older machines).

AkitaOnRails said...

I was a Java programmer and I never programmed in Java in a Mac. I programmed Java in Windows out of job necessity alone. I don't miss it in my Mac and soylatte is enough for what I need (running JRuby). Even 1.5 is not bad as I will deploy in Linux servers anyway, so it is only a matter of development environment.

Again: this is targetted at the wrong place. Does Microsoft build its own Java distro?? I don't think so, the last time they did it was a nightmare (remember J++).

Also: who builds Java for Linux distros? I doubt it is Canonical or RedHat, right??

So, for the haters, stop whining like small girls and instead of speaking non-sense, go bitch with Sun to release a decent Mac release.

Java is not an Apple product and they do more than necessary by packaging their own release. Java is a Sun(C) product and therefore it is in Sun's best interesting to release it decently. If they don't it means that Sun doesn't consider Macs a priority for them (heck, they already have 90% of the installed base anyway).

And what about open source?? Isn't Java supposedly open source? what happened to the 'scratch your own itch'? soylatte is a decent distro that needs more love. Again, nothing to do with Apple.

I think people here is deviating from the true matter.

Anonymous said...

There seem to be multiple things in play here:

1) It's partly Sun's own fault. Contrary to their belief, there is a distinct lack of widespread end-user Java applications so it makes perfect sense for Apple to down prioritize it.
2) It's quite a monster to get working, I reckon L&F issues was what kept Java 6 from shipping 1½ year ago. I bet, with a native peer UI (like WinForms) or a custom UI (like Flash) things would've been much simpler.
3) Last but not least, Apple is not really the most caring company, it's pretty evident that once you laid down your $, they are already contemplating how to sell you the next generation 6 months later, with even more polish and shiny knobs.

Welcome to the real world! After all it seems that YOU chose poorly.

Chris Adams said...

I share the disappointment (another 32-bit Intel Mac owner) but can somewhat understand given the relatively low levels of Java usage on OS X. There is one other possibility, however: Apple may have a big enterprise/government deal which was contingent on getting Java6 out the door - I haven't seen a public confirmation that they will never ship for the other supported 10.5 platforms.

Anyone else who wants this should head over to bugreporter.apple.com and file an enhancement request, preferably stating the concrete benefits to having it (e.g. "I develop jRuby-on-Rails applications and OS X is currently x% as fast as Linux or Windows").

Anonymous said...

What features that are in Java 6 but not in Java 5 are you needing besides bug fixes?

enricod said...

I disagree that there's little reason for apple to care: I use many java applications on my Mac, and not only to develop. Out of my mind
- lightzone for photo editing
- blurb to create my photo books
- neooofice (which uses java)
- jalbum to create photo albums

What I dislike most is the lack of information from Apple. I agree that Sun, or the community with OpenJDK, should take care of java releases on Mac.
Anyway, this is my first Mac, and probably the last, not only for this reason.

Anonymous said...

Is there any reason to think Java 6 on OS X will not get 32-bit support , other than the fact that this particular release doesn't have it?

I can't see this release on Apple's developer site... has it been pulled?

Anonymous said...

@akitaionrails

So, for the haters, stop whining like small girls and instead of speaking non-sense, go bitch with Sun to release a decent Mac release.

Spoken with equal amounts of venom and ignorance. Perhaps a little more research next time?

The reason that Sun didn't release a version of Java for the Mac is because Apple wanted to do it all themselves.

Still, I cannot really blame them for not supporting the platform; Sun has done very little to promote the platform for desktop applications, so why should Apple?

AkitaOnRails said...

@anonymous - I wonder why 'anonymous'. Anyway, now you will convince me that Apple prohibited anyone else to do a JDK to OS X??

OS X comes bundled with several open source tools including Apache, Ruby and others.

I prefer to install my own versions through MacPorts. I don't see Apple 'prohibiting' anyone of doing whatever distribution they want.

I certainly see absolutely no reason why there shouldn't be a JDK from any number of sources other than Sun. In the recent ExtJS controversy, for example, there already is a fork of it at sourceforge. When the community really feel it is necessary, new distros, etc arise very fast. So it leaves me wondering about Java itself. Either it is such a complex beast that no one else knows how to tackle the problem; or it is not really open source; or no one else actually feel it is necessary to do it. Who knows.

Hervé Girod said...

It's not the first time apple try to lock people in their monetized world, after luring them with the (obviously) good looks of their products. It is not only a problem with Java. Look at the iPod / iTunes forced association, the iPhone SDK, etc... An in terms of OpenSource, it seems to me that Apple took a lot (BSD kernel, DTrace), but gave very little in return. OK, for now, their products are really good, and they were far from only taking from others, but for this we should not trust Apple too much... Saying that, I plan to buy a Mac, and I already have an iPod (like so any people). But I'm concerned about how Apple behave, and not only with Java....

elhumano said...

I think there not holding new features, what they are doing is degradation of Java , remember that Apple does software, and a lower performance for Java based Apps gives them some strange advantage on exclusivity.

Anonymous said...

If you are developer and embraced (read : flocked) to Mac bandwagon, then you have nothing to complain about.

You should have full well known how well your development environment runs on Mac. And more importantly, you are giving up the freedom to download and install any thing you please; Instead now depending on Apple's mercy for software 'updates'

* lovingly pats my laptop with Ubuntu Hardy, and running latest Java 6 version, from the repository, nothing less*
sudo apt-get install sun-jdk6
bham!

Back to coding in Java6 while you are doing your 178th ITunes update !!!!