oreilly.comSafari Books Online.Conferences.


AddThis Social Bookmark Button

WWDC Fires Up Java on Mac OS X

by Daniel H. Steinberg

It's just before 10 a.m. and a cello plays while a welcoming fire roars in the fireplace in the warmly lit library. Just to the left of this comforting video scene is a lectern holding the water bottles Steve Jobs will return to throughout his fireside chat at this year's Apple WWDC. To the right, nine Macs are set for demos. Above the stage hang two oversized Apple logos and on either side "think different" images of Picasso and Richard Feynman. The doors open and attendees sprint to the front of the auditorium -- shades of general admission rock concerts from many years ago.

Without any introduction, Steve Jobs walks onstage holding a Mac OS X box. He begins by saying how glad he is not to be talking about some future OS but about the currently shipping Mac OS X. He smiles and explains that he's been back at Apple for almost four years and that the "biggest reason I came [back] was I didn't want to use Windows for the rest of my life."

This is a great day for me. This is both my first WWDC and the launch of the new Java Column for O'Reilly's Mac DevCenter. I'm looking forward to this column as it's been such a great year for Java on the Mac and there's plenty to write about. That hasn't always been the case. I've covered Java on the Mac for five years. For most of that time, it's been a lonely beat. The big difference, of course, is the Java support in Mac OS X. During this morning's keynote, Jobs noted that Mac OS X has the full Java 2 stack and that it was probably the best implementation on the desktop.

The "bad old days" of Java on a Mac

In the early years, the Java implementation on the Mac trailed the Windows implementation by at least a year. At each Macworld the current Java product manager would explain that the situation was getting better and that their goal was to have the latest version of Java running on the Mac within 90 days of it running on Windows. At Steve Jobs first Macworld keynote after returning to Apple, he included Java support as one of his five goals.

And then for several years there was a great silence.

Comment on this articleWhat are your observations about developing Java on Mac OS X?
Post your comments

Oh sure, we had a release or two to give us something to play with (although the numbering system tended to be a little confusing). We were finally able to get Swing to work. We enjoyed the benefits of a single VM (virtual machine) on the Mac. We even found that sometimes "run anywhere" meant that our favorite apps and applets could run on a Mac. On the other hand, they never seemed to look quite right.

These changes weren't really minor. For years we had struggled with multiple VMs and tools that were primitive compared to those our colleagues could run on their development machines. The Mac just wasn't a good machine for developing or running Java applications. To be fair, the Java story had changed. Java was no longer about applets and client applications. Sun was pushing the enterprise and network advantages of Java. Neither of these were central to Apple's story. On the other hand, educators were still writing and using applets and Java applications and this core Apple market couldn't run them.

And then the skies cleared.

Java on the Mac rises from the ashes

In his keynote at Macworld San Francisco in January 2000, Steve Jobs announced Apple would be pursuing a single OS strategy. Not long after Mac OS X was released, Apple would begin to phase out the older OS (he's since backed off of this statement). This allowed Apple's Java team to make some announcements of their own. If Mac OS 9 was going away, then they could safely say that they would never support Java 2 on classic Mac. Apple would continue to improve the product, but there would be no reason to rev it.

And then they dropped the bomb. When Mac OS X shipped, Java 2 SE would be included. It was an amazing moment. I was moderating a panel on the state of Java on the Mac when they made this announcement. I'd talked to audience members beforehand and many had come to beat Apple up about their lack of Java 2 support.

In fact, I'd moderated this panel at other Macworld Expos and Apple's Java team would show the results of their hard work and then have to listen to audience questions and comments most of which had been addressed on the MRJ (Macintosh Runtime for Java) list. In any case, once the Java engineers announced that the entire Java 2 SE stack would be shipped with Mac OS X there was nothing much for the audience to complain about. The engineers went further and said that they were aiming to release Java 2 version 1.3.

At the May 2000 WWDC, there were more announcements and demos. Borland (then known as Inprise: the company formerly known as Borland) did a demo of JBuilder on Mac OS X. Three years earlier, Roaster had tried to make this idea work. They wanted to take a good Integrated Development Enviroment (IDE) and write it in Java. This would allow the same codebase to be run on different VMs running on top of different OSs.

Unfortunately, Java wasn't mature enough at the time and Roaster wasn't ready. In the year since last year's demo, the Borland folks have continued to work hard with Apple engineers to make sure that JBuilder will soon be ready for Mac OS X. Borland's Blake Stone did a demonstration of JBuilder at the Java panel at this past January's Macworld Expo San Francisco.

So far, Apple's Java announcements were being made to the Mac faithful. Apple realized it was time to bring the Java on the Mac story to the Java audience. In June 2000, Steve Jobs joined Sun CEO Scott McNeally at the JavaOne keynote. McNeally introduced Jobs as a big inspiration and said that his family used the Mac and that he was glad that Apple was finally committing to first-class Java support on the Mac. Jobs replied that Sun had been too busy putting Java into lightbulbs. Jobs then invited Tevanian to join him onstage to show 20,000 Java developers what Java looks like running on Mac OS X.

Now Mac OS X is out. Sure, some have called this public beta 2. But the support for Java 2 is impressive. You can write impressive Aqua applications in Java, or you can port existing Java applications easily to Mac OS X. As of this morning, Mac OS X will ship with every new Mac. The install base of computers that support your Java applications will explode. This morning Jobs announced that by the end of the year Apple will be the largest Unix supplier.

I've had some complaints about developing on and using the Mac in the past. I'm sure I'll have some issues in the future and I won't hesitate to write about these concerns. But for now, I feel like a kid in a candy store. Feel free to drop me a line and let me know what topics you'd like covered in future articles. In the meantime, check out the performance of Java 2 on Mac OS X. You'll love the hardware-accelerated Swing and performance gains. I've written elsewhere about improvements to the garbage collector that Apple has implemented and that Sun plans to roll back into the general release.

Daniel H. Steinberg is the editor for the new series of Mac Developer titles for the Pragmatic Programmers. He writes feature articles for Apple's ADC web site and is a regular contributor to Mac Devcenter. He has presented at Apple's Worldwide Developer Conference, MacWorld, MacHack and other Mac developer conferences.

Return to the Mac DevCenter.