Where’s Java 1.5? (Redux)
By Adrian Sutton
It appears the java.net crowd picked up on my labeling some of them wingers – the response has been much more polite than I would have expected (or deserved really). The most well reasoned response so far is from Chris Adamson who points out the history of Java releases lagging behind on Mac as a reason for people to be worried. Before I go into Chris’s comments, let me point out that there are two main groups of people:
- Those that are concerned that Apple will take too long porting the JVM and they will have problems working on their projects that move to Java 1.5. These are the people Chris seems to have in mind.
- Those that are complaining that Apple doesn’t have a JVM out right now. These people are expecting way too much and were mostly who I was directing my whingers comment at. To be clear, I was directing my wingers comment at both groups because I’m sick to death of hearing “when is Apple going to release X?” where X is anything Apple may or may not ever release. The answer is always “Apple doesn’t comment on future products unless it suits their purposes”. I’ve known that since I was 7 (in that case it was related to the ill-fated HyperCard – the best anyone’s gotten in the 15 years or so since that they’ve been pestering Apple is a comment about drinking Clorox) so I don’t think it should be too hard for people to work it out. It also shouldn’t be hard to work out that the question has been asked a million times on the Apple Java-Dev list nor should it be hard to work out that the Apple Java-Dev list is not an official feedback channel (it says so in the list description). In fact, anyone who’s been dealing with Apple should know by now that the only way to get Apple engineering to get anything done is to log a bug. Apple judge the priority of issues based on the number of times they are reported. This applies both for actual bugs as well as feature requests. Apple also has an official contact page on their web site – it’s much more effective than your blog for getting Apple’s attention. All up, people who find themselves complaining that Apple doesn’t already have a version of Java 1.5 publicly available hasn’t done their homework. If you follow Java development on Mac these repeatedly misdirected complaints about Apple’s Java support become extremely annoying and hence should be labeled whinging. To provide some examples of the second group of people, let’s take some of the comments from my last entry:
If you install Tiger (java) on Tiger (OS X) then copy the binaries onto OS X (Panther) it works fine. So Apple totally could have released Java 5 (beta) for Panther a very long time ago. Sigh. — James Strachan No James, it won’t run perfectly – in fact it won’t run anything that uses Swing or AWT at all. I imagine it would be somewhat difficult to pass the JCK if you didn’t have any support for GUIs. Furthermore, as far as I’m aware noone has done any comprehensive testing of the Java 5 prerelease on Panther at all so it’s quite possible that even what has been implemented doesn’t actually work in all cases. It’s fairly unlikely that the entire JRE suddenly became dependent on Tiger, but it is quite possible that some part might be and that that part simply hasn’t been discovered by someone running it on Panther yet. The real idiocy however comes from “Gili”. He said:
Again, had Apple made this a priority they could have released a port of JDK 1.5 GA within a month of Sun’s release. which might have been reasonable if a month had actually passed since JDK 1.5 was released. It hadn’t. In fact, it was less than 72 hours afterwards (some of which was the weekend). From statements by some of Apple’s Java engineers on the Apple Java-Dev list, you can’t even run Apple’s full suite of tests for their Java runtime in 72 hours because the stress testing involves running a Java process for insanely long periods of time. Sun in fact ran servers for 5 weeks prior to releasing their JVM: The QA team runs some heavy-duty stress tests, where the “pass” criteria is that the systems stay up for a certain number of days. Well, at this point all those tests systems have been running for five weeks and they look like staying up until we decide to pull the power cord. — Graham Hamilton So anyone complaining that Apple hasn’t released Java 1.5 prior to at least 5 weeks after Sun released theirs (ie: early November) is asking Apple to do less testing than Sun did. Personally, I’d prefer to get a stable JVM even a year later than to get a half-baked implementation now. Sure I’d prefer it if I could get a stable JVM before then (6 months is probably the best I’d expect), but if it took a year then so be it. And now back to the main point: Cris Adamson’s comments. Chris provides a very informative table in his entry, here’s a slightly different way of looking at it:
Version | ||||
1.0 | ||||
1.1 | ||||
1.2 | ||||
1.3 | ||||
1.4 | ||||
Note that 1.0 and 1.1 were only available on Mac OS (System 7.5 – 9.2), while 1.3 and beyond were only on Mac OS X |
- Sun didn’t take Java on Mac seriously. Looking at how often the Java APIs conflict with the way things are done on Mac OS says to me that people at Sun didn’t really consider the Mac when designing the APIs or at least did so very poorly. I’m not sure I’d like to see Sun writing the Mac JVM even if it did mean it came out at the same time as the Windows JVM unless Sun started to show more of an interest in working well on Mac OS (as an example of Sun not caring recently, try running the demo CD they gave out at Java One on a Mac: you can’t).
- Apple don’t have enough resources in the Java team and they seem to be having a really hard time making Java run well on Mac – particularly in terms of the GUI (there have been two rewrites of the windowing code and a rewrite of the OS). Chris also mentioned that the number of Java developers mightn’t justify Apple’s effort in Java. Glen Fisher (a regular on the Java-Dev list) has pointed out time and time again that if Java were a really important feature for getting users to OS X, it would be mentioned an awful lot more in at least WWDC keynotes if not MacWorld keynotes. The reality though is that it barely gets mentioned if at all in keynotes. Let’s be honest here, Java doesn’t justify people buying a particular OS – Java is designed to make the OS irrelevant. Frankly, I don’t care what OS I develop Java on – Eclipse, NetBeans and IDEA all run cross platform anyway. Maybe
you bought a Mac just because of it’s Java support (silly you) and maybe even a thousand other developers you’ve heard from did. Who cares, there’s millions of Mac users out there and most of them have no idea what Java is let alone why they would want it. Finally, Chris really hits gold when he talks about Windows Bigot Java Programmers:
The Windows Bigot Java Programmer seems like it should be a contradiction in terms – if you like Windows so much, why not program in Active X or .NET or whatever Redmond’s flavor of the month is – but in reality, I think this actually accounts for a massive percentage of Java programmers. Absolutely. If you’re a long time Mac user who’s used to things being Mac-like and then try and run most Java applications you’ll realize just how bad Java programmers are at writing cross-platform code. Most of the time the code does run, but it’s very rare to find a program that looks and feels like a Mac program. It’s not the fault of the look and feel either, most Java programmers don’t even do simple things like make sure the OK and Cancel buttons are in the right order. Even GUI guru Karsten Lentzsch falls into the trap of creating Windows looking GUIs, for example his log in screen example is a replica of the Windows login screen. Looks fantastic on Windows, okay on Linux – very out of place on Mac. More commonly though, people fall into traps that don’t even require special coding, like using new BufferedImage(…); instead of createCompatibleImage(…) – using new BufferedImage makes an assumption that the type you pick will perform acceptably on all platforms, but depending on the windowing system it may actually perform very badly. createCompatibleImage on the other hand creates an image type that is guaranteed to be the best representation for the current platform. So if you’re in a development team that’s madly rushing to find all the bugs in Java 5 as soon as possible by betting their project on it and thus you run the risk of not being able to use your Mac to develop, I pity you but I still don’t want to hear another whine about Apple not having released Java 1.5. For those like me who are sick and tired of hearing the complaints, the news is all bad. Even if Apple ship Java 5 tomorrow, the complaints will just move on to the next thing that developers just absolutely have to have and can’t live without (despite the fact that they have done so for ages) but before that you’ll have to put up with the barrage of complaints about all the bugs in Apple’s Java 5 implementation first. Oh and if for any reason people run out of things to complain about, they’ll start up the complaints about the Java-Dev list archives again or maybe the fact that Apple doesn’t publicly list reported bugs… Of course, people like me won’t be whinging about any of that, we’ll be whinging about all the whinging that’s going on.