Although Apple has nothing official to say about the state of Java on the Mac, there’s plenty of news to be read between the lines
In May 1998 at Apple’s Worldwide Developers Conference (WWDC), interim CEO Steve Jobs outlined the company’s three software priorities as the following: the Operating System (MacOS), QuickTime, and Java. Since then we have heard a lot about the plan for MacOS. To summarize, the company would continue to release the MacOS 8 family (currently at 8.6), MacOS X server was released at the beginning of this year, and MacOS X is still expected early next year. On July 21 of this year, during the keynote address at Macworld New York, Jobs announced that the latest version of MacOS 8.x is planned for release as MacOS 9.0 in October. He demonstrated some of the operating system’s new features including the new version of Sherlock, the Mac search engine. If you like to purchase online, you’re going to love the new Sherlock. One of the new features lets you search the net (including auction sites) for items you want — and then sort them by price.
Jobs’s keynote also focused on Apple’s continuing profitability and low inventory, as well as on the new Tangerine and Blueberry consumer portable iBooks, the AirPort wireless networking, QuickTime 4, and QuickTime TV. Jobs views QuickTime, Apple’s multimedia engine and data format for movies, as being “core technology for Apple,” and pointed out that there have been 10 million downloads of the QuickTime 4 player in the last few months. It seems that the keynote would have been a perfect time for Jobs to mention Apple’s QuickTime for Java technology. I’ll come back to this in a minute.
Where’s the Java?
Perhaps the “where’s the Java” question was better answered at the press conference later in the day at Macworld. So far Apple has had nothing official to say about its commitment to Java 2. Mac users and developers would like to know the future of Java on the Mac, but at the press conference Jobs immediately squelched any questions about what to expect next from Apple in any area. He answered the first question he was asked at the press conference by saying that at Apple, “we don’t talk about future or unannounced software…who knows what we’ll do in the future?” Most reporters shrugged and turned off their tape recorders.
At the JavaOne session “Java Technology at Apple,” Steve Naroff, Apple’s director of Java and Core Tools, took a lot of questions from the floor about Apple’s lack of support for Java 2, but he was unwilling to say when or if Apple would support Java 2 and on which Mac operating systems the latest Java platform would be supported. This lack of information caused quite a stir on the MRJ (Macintosh Runtime for Java) listserve. Members were anxious to know what Apple will support and roughly what the timeframe might be. On the other hand, Apple engineers have pointed out at both the Macworld Expo in New York last month and at JavaOne that at this year’s WWDC the keynote address included a demo of work done using the Java 2D API. As this API is part of the Java 2 specification, you can assume Apple is continuing to work on Java support. As one Apple engineer noted, “No one is stopping us — so we keep working on it.”
The press conference also pointed at a more serious issue for Apple and Java. Jobs addressed the question of whether Apple was shifting from a concentration on the corporate market to the personal computing market. According to Jobs, Apple “had not succeeded in the large enterprise market” and that the company’s key markets were education, professional designers, and now the consumer market. In fact, Apple has no plans for any embedded technologies. What does this have do with Java? Of late, Sun’s focus is on the server side, on the enterprise, and on handheld devices and the embedded space — none of which are Apple’s target market. But just six months ago, at the opening keynote for Macworld Expo in San Francisco, Jobs debuted the choice of colors now available for the iMac and emphasized the power of the MacOS X server and WebObjects. Shouldn’t Apple be interested in Java for those server-side products?
QuickTime for Java: Where’s the love?
Apple has made no public comment about support for the Java 2 platform. In fact, although it demonstrated the next version of Sherlock search engine, which will ship in MacOS 9 in a couple of months, Apple won’t talk about which version of the MRJ will ship with the new operating system. One recent Java success that it can publicly discuss is QuickTime for Java, yet this tool wasn’t mentioned anywhere in the recent keynote presentation of “What’s new with QuickTime.”
QuickTime 4 runs on MacOS and Windows. As Apple software designer William Stewart explains, combining QuickTime and Java is natural because “QuickTime provides graphics, sound, and media capabilities, and Java provides the cross-platform app framework and execution. QuickTime for Java is a set of Java classes that represent most of the QuickTime API.” The software development kit includes coded examples of writing to QuickTime for Java, and the book Stewart wrote with Tom Maremaa, QuickTime for Java: A Developer Reference, is a clearly written and complete resource with full documentation and plenty of code snippets.
Educators and developers are excited by the possibilities that arise from using QuickTime for Java. One of Stewart’s favorite demos of the power of this combination is John Burkey’s DynaMap. The map’s controls let you see what was going on in a certain area of the world at a particular period in time, including political and geographic information. Burkey, now an Apple employee, explains how easy it is to add effects such as rippling water using QuickTime. He actually tried using Swing components to create the program controls but switched to QuickTime sprites because they gave him more control over the look and provided greater flexibility with the QuickTime-for-Java hooks.
At this year’s JavaOne and Macworld Expos, Stewart was asked when Apple would port QuickTime to ___ [fill in your favorite OS here]. He replied that he would love to see QuickTime and QuickTime for Java on different platforms, but it would take a large, costly effort. The same thing happened when Sun first released Java. Everyone was anxious for it to be ported to their particular platform. Mac fans might remember that Apple paid Sun’s licensing fees and didn’t receive the support they expected.
Now with QuickTime, Sun has, thus far, been unwilling to pay Apple for rights to the technology. With Sun’s support, the Java community would readily adopt the QuickTime standard, and QuickTime for Java could be an add-on to the Java technology, just as the Java3D APIs are today. As Stewart said during the QuickTime for Java Birds-of-a-Feather session at JavaOne, “We would like to see [QuickTime and QuickTime for Java] on Solaris. It is not a technical issue.”
CodeWarrior introduces RAD tools
At the Macworld Expo panel on the “State of Java on the Mac,” an audience member began a long question by saying that he programs with CodeWarrior on the Mac every day. He continued to explain that he also programs on a Windows box every day and that he has yet to use an IDE on Windows that he likes as much as CodeWarrior. Metrowerks engineer Greg Bolsinga quietly said, “We have CodeWarrior on Windows.” The questioner continued with a long explanation of what was missing in this IDE or that IDE on the Windows side. Bolsinga then added, “You’ll find our Windows product strikingly like the Mac product.”
That sums up the Metrowerks model: support multiple languages on multiple hosts with multiple targets. Recently, the company has also offered a separate Java product, and with the recent CodeWarrior Pro 5 release, Metrowerks has separated the products by the host platforms for people who develop on only one platform (but perhaps target multiple platforms). Other than these packaging issues, the major changes in Pro 5 was the addition of support for RAD tools in CodeWarrior with the corresponding changes to the IDE’s architecture, plus a suite of APIs to allow integration with other tools and improvements to the debugger. The RAD tools have been shipped for Windows and MacOS and should be available for Solaris and Linux by the end of the year.
At JavaOne, Sun outlined the three platforms for the Java 2: Micro Edition, Standard Edition, and Enterprise Edition. Metrowerks President and Chief Technology Officer Greg Galanos says CodeWarrior’s desktop support is basically right on target where the company wants it to be. It plans to make sure that Java 2 development is supported on all CodeWarrior host platforms while improving RAD tools to enhance their support for Swing and the AWT. CodeWarrior will address the Enterprise Edition needs by supporting distributed debugging and by partnering with companies that can add enterprise and data beans as well as Enterprise JavaBeans wizards and deployment tools. Although it isn’t yet identifying its partners, Pro 5 ships with a “light” version of tools from the KL Group. As for the Java 2 Micro Edition, CodeWarrior will support the KVM (the virtual machine that was distributed on the Palm V devices sold at JavaOne), remote debugging, and other features needed for developing to these devices.
CineKit: The tool that uses QuickTime for Java to create QuickTime Movies
CineKit, from the Canadian company Expresto, began as software that allowed researchers to present their work to colleagues using a movie framework. Initially, it was an academic product written in C and C++ with no commercial aspirations. According to Expresto’s Eric Smith, the company began investigating Java late in the summer of 1996 and developed a simple “QuickTime player written using Sun’s original Mac JDK 1.0.2. Originally we wrote our own native glue to QuickTime, but when we found out that Apple was doing QuickTime for Java, we switched to its API.”
Expresto’s Agnes Ouellette adds that it was “easy to see how CineKit would appeal to the K-12 market if it had a nicer user interface and was easier to use. In its current incarnation, CineKit is an easy-to-use movie-making software tool written in Java using QuickTime for Java. The software provides a nice framework and a GUI interface for manipulating QuickTime objects using the QuickTime for Java APIs (without CineKit users seeing the QuickTime for Java).
Using CineKit, you build your presentation up from Acts, which consist of scenes each of which is made out of “shots,” the basic building block. The shot is a video element that can have audio and text attached to it. You can interact with CineKit using one of three views: the Script View stresses the hierarchy of the work including the content and transitions; the Storyboard View stresses the telling of the story in the displayed order; and the Player View lets the content creator preview the media at any point. In the first two views you can work on pre- and post-production using the video editor and audio editor to import and digitize.
The current version of CineKit is the third rewrite of the software. Expresto wants to update the interface, clean up the code, and get it ready to ship by this fall. You can follow the link given in the Resources section below to try out the beta version. There are reports that the current beta is a bit temperamental, but even so, this product has great potential.
JavaGami: Some of the latest technology helps explore some of the oldest
In teaching mathematics, we are pushed to embrace the latest technology and have our students use calculators and computers as much as possible. Some teachers have forgotten that many things can be better taught with “low” technology examples such as paper-folding. Dr. Ann Eisenberg was exploring the role of spatial reasoning in the development of scientific and mathematical problem-solving. She and her husband Dr. Mike Eisenberg collaborated to create a software application called HyperGami, which lets children create mathematical paper sculpture: you manipulate the software to create various 2D templates that can be printed and assembled into the desired paper sculpture. Between 1994 and 1997, Ann worked with over 70 children of various ages.
Her next project was JavaGami. Where HyperGami had been written in Scheme, JavaGami was written in Java. In addition, the environment was more accessible to elementary- and middle-school students, as well as to their parents and teachers. Although you have fewer options with JavaGami than you do with HyperGami, you will find the Java version easy to use and quite addictive. You can find information about downloading the program in the Resources section below. Although it is written in Java, JavaGami is currently a Mac-only program.
Conclusion
At Macworld, just one and a half years ago, vendors rushed to get “Java (something) Inside” printed on their boxes, and the keynote was filled with news on how the Mac would be the best client platform for Java. As author Elliote Rusty Harold said at this year’s “State of Java on the Mac” panel discussion, “in this past year the implementation of Java on the Mac has moved forward; everybody else has just moved forward more.” Still, while Apple won’t publicly talk about its plans, it has provided Java links to some of its core technologies such as QuickTime, AppleScript, MacOS X Server, and WebObjects. And although it hasn’t officially committed to providing Mac support for Java 2, Apple has allowed its engineers to demonstrate Java 2 features running smoothly on a Mac. The message seems to be either “It’s coming, we just can’t talk about it,” or, at other times, “It’s here, we just won’t talk about it.” It will be fun to see what Apple can’t and won’t talk about at this January’s Macworld Expo in San Francisco.