When the first alpha versions of Java hit the Internet, developers who chose to work on the Macintosh platform felt more than a little left out. Soon, there were beta versions for Solaris, Windows 95, and Windows NT, but still only the vaguest of promises from Sun that a version for MacOS 7.5 was in the works. Nearly every day, it seemed, someone would post a message to the comp.lang.java newsgroup asking whether there was a version of Java for the Macintosh. (Such postings were met with angry responses from non-Mac-oriented readers as the months wore on.)
When I wrote my first Java applets, the only way I could see them run from home on my Power Mac was to use X server software over my 14.4 kbps modem connection to a university SPARCstation running Solaris. Fortunately, Mac users no longer have to use this method to develop and run Java applications and applets, thanks to four currently available tools: Natural Intelligence's Roaster, Sun's Java Developer's Kit, Symantec's Café, and from Metrowerks, the Java component of CodeWarrior. To varying degrees, all of these packages are either beta versions, "developer releases," or simply beta-quality software labeled as a final release (see Truth in advertising, below).
Regardless of where the blame for the delay lies (see JavaWorld editor-in-chief Michael O'Connell's May 1996 editorial), Java has been a long time coming for the Mac. As new technologies have become ascendant in the past few years, Mac users have become accustomed to waiting just a little longer than everybody else. When it comes to Java, Mac users are finding that if they want to live on the "bleeding edge" of technology, they must also be prepared to bleed a little more profusely than everybody else.
The product comes on CD-ROM and sells for a hefty 99, but if you qualify for an educational discount you can get it for 9. The purchase price includes all developer releases, as well as Release 1 and Release 2, shipped on CD. The basic subscription model is similar to that pioneered by Metrowerks with its CodeWarrior product.
Important! See Update.
Sun Microsystems' JDK 1.0.2 for MacOS
Released in beta form a few weeks after Roaster hit the scene, and on the other end of the price spectrum, is Sun's Java developer's kit (JDK), which is available for download at no charge from the JavaSoft Web site at http://www.javasoft.com/java.sun.com/products/JDK/index.html. Now at version 1.0.2, the kit includes four applications: a Java compiler, an applet viewer, Java Runner (an interpreter for running Java stand-alone applications), and JavaH (a utility for generating header and stub files for native methods written in C).
The JDK is not an integrated development environment, and is not to be confused with SunSoft's Java WorkShop, an IDE currently available in beta only for Windows 95/NT and Unix, but expected to be available for the Mac well before hell freezes over, and perhaps even sometime this year. (Though originally scheduled for release this summer, Java WorkShop for the Mac has been put on the back burner at SunSoft while kinks in the non-Mac versions are ironed out.)
In a sense, I'm comparing apples and oranges by including the JDK in this review, but I think it's important for Mac developers to be aware that they can get started with Java without buying expensive tools, provided they are willing to make some significant sacrifices in terms of convenience.
Café currently ships with a preview version of Café Studio, a tool for visually constructing applet Graphical User Interfaces (GUIs).
Café DR1 shipped on CD-ROM; the latest version (DR2) can be ordered online and downloaded directly from the Internet but is not currently slated for pressing on CD. (Registered owners of DR1 may upgrade to DR2 by downloading it from the Web.) Café carries a price of 9. Those who have been following the IDEs closely may recall that 9 was originally announced as an "introductory" price, with an expected increase to 99 after July 22, 1996. Recently, however, Symantec decided to scrap the price increase and stick with the more competitive 9 price tag for Café.
Registered users of Café get one year of free updates via the Web -- free, that is, if you don't count the download time for the updates, which may be as large as 12 megabytes.
Metrowerks' Discover Programming with Java, CodeWarrior Gold 9
Metrowerks, in late 1995, was among the first to announce plans to release Mac tools for Java; to a degree, Metrowerks set the agenda by announcing that Java support would be included in CodeWarrior 9, so that developers whose existing CodeWarrior subscriptions (from versions 7 or 8) already entitled them to the version 9 update would get the Java tools at no additional charge. I reviewed Metrowerks' Discover Programming with Java, a Java-only version of Metrowerks' CodeWarrior IDE, bundled with an electronic version of Barry Boone's Learn Java on the Macintosh (published by Addison-Wesley, and commissioned by Metrowerks exclusively for inclusion in the Discover Programming package). The book is aimed at those with little or no programming experience who want to get started with Java.
CodeWarrior, a multilanguage, cross-platform IDE, supports a modular, "plug-in" architecture. Not to be confused with Netscape plug-ins, each of CodeWarrior's plug-ins provides support for a different language or platform. In this way, the CodeWarrior development environment may be configured to work with new languages or platforms through the addition of new plug-ins. Metrowerks' Java tools for CodeWarrior 9 consist essentially of the Metrowerks Java plug-in for compiling Java, and the Metrowerks Java application, a Java interpreter.
Discover Programming with Java comes on CD-ROM, sells for 9, and includes all of the same Java tools as CodeWarrior 9. The full CodeWarrior 9 Gold package, priced at 99, includes compilers not only for Java but for Object Pascal, C, and C++ as well; it will create code for the Java virtual machine (JVM), Mac 680x0, PowerMac, Windows 95/NT, Be OS, Magic Cap, and now MIPS (support for the latter is still in beta.) If you buy the full CodeWarrior Gold package, you get two free updates shipped on CD. The updates come out regularly in January, May, and September. (Note that if you buy Discover Programming, you don't get any free updates other than the free patches that Metrowerks periodically posts to its Web site -- unless you decide to upgrade to Gold. The upgrade cost is equal to the difference in price between the products.)
In reviewing any product for the Macintosh, one of the most important criteria is the quality of the user interface. If it's going to run on a Mac, it had better look, feel, smell, and taste like a Mac, or Mac users will be instantly turned off. I divided the user interface into five sub-criteria: editor, project manager, class browser, debugging tools, and visual GUI-building tools.
As with any development tool, performance is a key issue as well. This I divided into three sub-criteria: compilation speed, run-time performance (of the virtual machine), and overall stability of the product.
Like the Java language itself, Java tools have gradually "trickled" into existence, rather than appearing on the scene in a sudden flash. As a result, the users of these tools -- especially on the Mac -- have been forced to be patient, waiting for full implementations to appear, while they make do with products that make good on some subset of their ultimate promises. In the section called "Completeness of implementation" I discuss the thoroughness with which each product implements Java on the Macintosh, including the API, support for Java stand-alone applications, support for native methods, and support for 680x0-series Macs, such as the Quadra, Performa, and PowerBook 500 series.
Documentation also is important. Despite the similarity of many Mac IDEs, each has its unique quirks. Furthermore, the unique characteristics of the Java language mean that even your old faithful development environment may handle things a little differently when it comes to Java; good documentation is essential.
When even the documentation can't solve your problem, you may find yourself turning to the vendor of the product for technical support. I phoned the makers of all of these tools -- except Sun -- for technical support. Below, I'll tell you whether I got through or gave up.
As I stated previously, all of these tools are still in some form of pre-release stage. Had the designers of Java foreseen the volume of vaporware and other flatulence to which the language would give rise, perhaps they might have named it for some other species of bean. In "Future prospects," I'll tell you what each IDE vendor says is coming down the pike.
Finally, there is the issue of truth in advertising. Although I don't think anyone here has done anything to merit prosecution, there is a certain degree to which all of these companies have been guilty of stretching the truth a little in order to convince you to choose their product over the others. Ultimately, it's up to you to decide whether these tactics have an influence on your purchase, but you owe it to yourself to know the facts before you buy.
All three of the IDEs have high-quality, syntax-sensitive editors, complete with the standard features you'd expect in any Macintosh text editor: search and replace, regular-expression searching, configurable fonts and colors, auto-indent, pop-up menus with all of the methods in the current file, and so on. The Metrowerks and Symantec editors allow you to split a window into multiple horizontal and vertical panes. Roaster allows you to split a window into at most two horizontal panes.
Despite its limitation on panes, Roaster's editor boasts the most features, including support for named clipboards, smart macros, and various unique search-and-replace options. Additional features of Roaster's editor include the ability to click on the name of any class in the editor and have the editor automatically find the definition for that class.
I'd like to see Natural Intelligence expand the named-clipboard feature. It would be useful, for instance, for Roaster to ship with several pre-installed named clipboards corresponding to the event-handling methods in java.awt.Component, or to commonly used code fragments, such as an applet that extends java.lang.Runnable.
Roaster's configurable toolbar is quite an impressive piece of work. In addition to customizing and rearranging the items on the default toolbar, users may add new items to the toolbar as they are made available by Natural Intelligence. Particularly useful are the well-designed "New Class" and "New Method" wizards, included in the release, but -- oddly enough -- not part of the default toolbar.
Although the Sun JDK does not come with an editor, the Java compiler application that comes with the JDK supports hooks into a few other editors, so that, for instance, when the compiler flags an error, you can go instantly to that error in the editor. Supported editors include SimpleText, BBEdit 3.5, CodeWarrior, the Symantec Project Manager, and Roaster. I would have preferred to see the JDK Java compiler allow you to choose any editor with Apple Event support, such as Pete Keleher's superb shareware editor Alpha; for several months this was the only text editor on the 68k platform to support Java-sensitive syntax coloring.
Café, CodeWarrior, and Roaster each provide a project manager, in which you group files for compilation. The project manager takes care of analyzing relationships and dependencies between files, avoiding the need for Makefiles of the type used with typical Unix-style command-line compilers. All three project managers support dragging of files and folders from the Finder to add them to the project and the opening of files by double-clicking them in the project manager.
The Symantec Project Manager (SPM) is the most flexible of the three, allowing hierarchically nested groups. It even allows you to nest projects within other projects. You may have more than one project open at a time, allowing you to drag and drop items between projects, a feature also found in Roaster but not in the Metrowerks IDE.
Roaster's approach to organizing the project manager is somewhat less flexible, but it has its advantages. Instead of giving you control over (and responsibility for) grouping items in the project manager, Roaster automatically creates groups according to the package statements in your Java source code, providing a direct and automatic mirroring of the structure of your code. If you wanted to mimic this effect in Symantec's or Metrowerks' project manager, you'd have to do it yourself, which is a bit of extra work.
Roaster's project manager also offers the highly convenient feature of having a pop-up menu attached to each source file, displaying all of the methods contained therein. This pop-up menu is available as soon as the file is added to the project, and is automatically updated as you edit your code; you don't have to run a compile in order to enable it. This feature is unique to Roaster.