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?


  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  7. 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)

  8. 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).

  9. 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.

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

  11. 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?

  12. 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....

  13. 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.