This is one of those blogs where I’m trying to take off my editor’s hat and speak with my own voice. Usually, I do that when I plan on offending someone, so that it isn’t mistaken as being “official”.
Over on java.net, John O’Conner has posted a blog describing why he’s angry that Apple hasn’t released its Java SE 6 implementation for Mac OS X yet, despite the fact that they had an early-access program that pretty closely tracked the SE 6 betas, and that SE 6 has been final for several weeks.
Give me a reason, any reason at all, to continue using Mac OS X as my primary development platform for Java applications. Java SE 6 is available now for Windows, Linux, and Solaris platforms. Why not for Mac OS X? Don’t you dare mention that Java SE 6 is available on Mac OS X…I know about that. The available Java SE 6 implementation is stuck at build 88 and hasn’t been updated in months.
He goes on to complain that the JDK is the most important thing he uses, and his choice of operating systems prevents him from using the most current version. He’s also upset by the fact that there is no information coming from Apple as to when we might see a final SE 6 for OS X.
Well, at the risk of sounding like an apologist for Apple, the latter behavior is very much their modus operandi nowadays. This is not the company that wants all its employees blogging about their current project, their cats, or the latest Miyazaki movie. Quite the opposite: Apple jealously guards its secrets and its plans, and (all together now) “does not comment on unannounced products.”
So, yeah, you don’t know if or when SE 6 is coming from Apple, when you can count on it being on users’ machines, or your own, whether it’ll be Leopard-only or compatible with Tiger as well. Frankly, this is a case where you should apply Adamson’s First Law: All software is vapor until it ships. Meaning that any talk about an OS X implementation of SE 6 is just that — talk — until it’s out. If you count on any specifics of anyone else’s yet-to-be-released software, you do so at your own peril. After all, wasn’t Sun originally planning on mid-2006 for SE 6? They missed by six months.
SE 6 was officially released on December 11. It’s been just a month and a half since then, with the winter holidays falling in that period. Realistically, it’s been maybe six business weeks. Should all third parties that develop their own Java implementations be expected to have theirs out by now? Then I guess people who depend on the IBM JDK’s, such as AIX and Linux-on-PowerPC users, should also be furious, since IBM only just dropped its first early access release in the last week, and has given no guidance as to when it will be final. If Apple has turned their back on Java developers, then I guess IBM has too, and we should all pick up our tinkertoys and stomp back home to Windows or Linux (so long as it’s the Sun-supported distros and not something crazy… like, you know, Ubuntu or anything).
It’s easy to underestimate the difficulty of bringing Java to another platform. Apple was incapable of bringing Java 2 to the classic Mac OS and instead waited for Mac OS X, so it could work with Java’s “Latent Subtle Unixisms” more directly. By my count, Java SE 6 has 3,777 classes and interfaces… just regression testing and passing the TCK for all of this sounds like a beastly proposition, to say nothing of developing code to integrate it into your platform or to address bugs that show up on your OS.
I sound angry, but mostly I’m concerned. Concerned that the talkbacks to John’s blog have an air of entitlement that doesn’t serve us well. It’s worth remembering that the only way Java (or any technology) moves forward is if it helps people do something, specifically if it helps them make money. Cynical, but that’s pretty much the prime motivator of most of what’s going on in our industry. Nobody’s interested in charity cases, or tiresome name-calling “evangelism”, so we as Java developers need to be keenly aware of where Java provides value, and where it doesn’t. And if a major OS vendor suddenly de-emphasizes Java — I don’t think this is the case with Apple, but many others seem to — then a more useful response would be to come to an understanding of why the vendor’s self-interest would lead them to that decision. If Apple didn’t think Java were worth its time and money, then I as a Java developer would really like to know why. Maybe they know something I don’t. Maybe I’m too set in my ways. Maybe C#, Ajax, and Flash have already won. And, then again, maybe not.
If you think everything begins and ends with what serves your needs today as a Java developer, go nuts. I’m more interested in the big picture, and where things are going.



Hiya Chris. My primary goal of writing blog entries is to stimulate conversation and sometimes to teach. I rarely have any new information; I'm not an information source. However, I do have a talent for stimulating a debate. Don't mistake my disappointment over SE 6 on the Mac for anger...I'm not angry at all. Blogs, like email, are horrible at conveying emotion...especially for poor writers. So, just to correct the impressions, I'm not angry, not even close. If I have any emotion about the SE 6/Apple issue, it's this: disappointment and a little frustration. I'm disappointed because I can't get some of my tools to work properly, and I'm frustrated at the lack of information from Apple. By the way, I'm surprised at the blog comments too.
I am actually pleased with Apple's work to get Java SE 6 out there. I was very concerned when it took them more than a year and a half to have Java SE 5 become the default VM after Sun officially released that version. They seem to be ahead of that schedule.
It's an interesting balance because Java SE is required for both desktop and server Java applications. Personally I'm interested in the backend improvements to the Java SE because I develop Java web applications on a mac (before pushing them live to unix or linux based servers). The Apple VM engineers have to concern themselves with the whole beast though - how are the Swing changes going to affect Java desktop applications? How are the core changes going to affect web objects, tomcat, and jboss? So they have to satisfy all concerned in terms of memory usage/performance, stability, etc. both on the desktop side as well as the server side before taking it live. That's a tall task.
That said, I hope Apple continues to prioritize Java and stay current - I would hate to have to switch to Linux or *shudder* back to Windows because I couldn't do my work on a Mac any more. Moving to where the puck will be doesn't mean that Steve Jobs' dictates what programming language I use. So if Apple decides to deemphasize Java to the extent of not supporting future VM versions in the extreme case, sure I'll evaluate where Java stands in the wider world, but in the world of web application servers themselves, Apple is a tiny data point. I would be disappointed but would probably move on.
Hi Chris, nice summary of the difficulty Apple & others have in maintaining their own JDK implementations. I don't fault Apple at all for not having JDK 1.6 out yet.
That said, as a Mac-head it pains me to note that developing Java apps is a much better experience in Eclipse on Windows XP than it is in Eclipse on Mac OS X. The SWT toolkit looks great with Windows' silver XP theme, but in OS X the controls are puffy and take up way to much screen space. So even though the Mac's a real unix environment & its terminal kicks ass, I keep my Java development on the PC.... with JDK 6 :)
Does anyone else feel the same way?
You argue that it's okay for Apple not to release any information about when Java 6 is coming. You say that this is only natural for Apple because they like to keep their release plans secret. This is simply not true. What about the iPhone? Leopard? Apple TV? The Intel machines? In each case, Apple had no qualms about announcing an expected release date well in advance. Do you mean to tell me that Java 6's release date is a closely-guarded company secret, while the iPhone's is not? At least with Leopard we know the approximate time frame when it will arrive, but with Java 6 we don't even know whether Apple is merely sitting on it until Leopard's release. And just as Cocoa developers need to have an expected arrival date of Leopard to synchronize their products, Java developers need to know when Java 6 is coming for the Mac. For these reasons, I have no problem taking Apple to task for not being more forthcoming about their Java 6 release schedule.
You argue that it's okay for Apple not to release any information about when Java 6 is coming.I never said it was okay. I said it was typical. If you're surprised or disappointed, then you haven't been paying attention. What about the iPhone? Leopard? Apple TV? The Intel machines? In each case, Apple had no qualms about announcing an expected release date well in advance.All of these are announced products. Java SE 6 has only been "announced" by way of ADC seeds, which are under an NDA, I might note. Maybe that seems like splitting hairs, but it is consistent with how they've operated historically.And just as Cocoa developers need to have an expected arrival date of Leopard to synchronize their productsReally, you know the release date of Leopard? What is it? I have no problem taking Apple to task for not being more forthcoming about their Java 6 release schedule.Have fun with that. Let us know how it works out for you, okay?
That said, as a Mac-head it pains me to note that developing Java apps is a much better experience in Eclipse on Windows XP than it is in Eclipse on Mac OS X. The SWT toolkit looks great with Windows' silver XP theme, but in OS X the controls are puffy and take up way to much screen space.Is that the Mac's fault, or SWT's? One of the common complaints about SWT is that it's too tightly coupled to Windows conventions, and doesn't port well (this comes up several times in SWT's Wikipedia entry). Swing apps are often considered more attractive on Macs than on other platforms, so maybe it's a matter of your GUI framework of choice.
Is that the Mac's fault, or SWT's?
Both, I'd say. I don't know if you can make an tight UI like Eclipse/SWT on Windows given Mac's pre-sized controls. On the other hand, Apple needs to get with it and port SWT to Cocoa - using Carbon may limit SWT's look and feel, and SWT will be around for a while.
Both, I'd say. I don't know if you can make an tight UI like Eclipse/SWT on Windows given Mac's pre-sized controls.Would it help if there were a way to access the tiny widgets used by the Pro media apps (Soundtrack, Final Cut, etc.)? Then again, maybe that could/should be a second Mac Swing L&F?Apple needs to get with it and port SWT to Cocoa - using Carbon may limit SWT's look and feel, and SWT will be around for a while.Is Apple currently responsible for the SWT port? (honest question; I really don't know) Maybe the choice of Carbon speaks to a C++ affinity on someone's part?
I never said it was okay.
You seemed to imply as much. Isn't that what you meant when you said, "At the risk of sounding like an apologist for Apple..."?
Java SE 6 has only been "announced" by way of ADC seeds, which are under an NDA, I might note.
Any release date estimates could be provided under the same NDA. I see no issue here.
Really, you know the release date of Leopard? What is it?
Spring 2007, as Apple has repeatedly stated.
http://www.apple.com/pr/library/2006/aug/07leopard.html
Why can't we get a similar estimate for Java 6? They don't even have to give a timeframe; they could just say "Java 6 will be out whenever Leopard is" (as I suspect that's exactly what will happen).
Chris,
I'll back you up on this one:
talkbacks to John's blog have an air of entitlement that doesn't serve us well.
Java has been 'top dog' for the last 10 years and we could more or less presume that everybody wanted to play with Java.
There are a lot of things going on right now that is changing this. Web 2, openly available Web API's , new scripting solutions, alternative GUI (both Ajax and Flex based) are all making their mark.
Will Java have a place in this new order? Yes. But it will be 'First among equals' , rather than 'Top dog'
Paul
Why is it Apple's problem to come out with a JDK anyway, I've always found it a little odd that Sun doesn't target Mac OS in its own development. They target Windows, Solaris, and Linux. Is the Sun code so bad that they can't just deliver a version for Mac? Or, is it just that the market for Macs is so much smaller?
With the new Mac Intel platform, and Mac Minis and MacBooks at less than $1000 from some vendors (and dropping each time a new rev comes out) this talk of switching from Mac OS X is moot. If Apple takes too long in getting JSE6 out, and I really NEED SE6, I'll just fire up Parallels and get that cracking on Linux or Windows, without really being put out too much. Sure, it's not ideal. I'd rather do all my work in OS X. But the frustrated comments lead me to think some people have their tighty whities on too tight. I mean, does anybody really NEED an SE6 feature right now? Are you saying you can't deliver that software for your customer with anything else? Come on! Give me a break.