When Java first appeared on the scene (way back in 1995), Macintosh support for the new language was non-existent, and Sun's plans for porting Java to the Mac were vague and non-committal. By 1996, with the release of the first generation of Mac-hosted Java integrated development environments (IDEs), things had improved somewhat -- at least there was something that would run on a Mac -- but the situation was far from ideal. (In August 1996, JavaWorldpublished my article, "March of the Mac IDEs," a comparative review of some of those IDEs.) The first crop of tools were, at best, beta quality, and many who would rather have worked on their trusty Macs found themselves switching to PCs, and even Unix boxes, for their Java development. Moving to the PC wasn't that bad; after all, there are a wide variety of IDEs for the PC. Unix developers aren't quite that fortunate, but at least most Unix platforms support version 1.1 of the Java platform, something Mac Java developers are still waiting (sometimes quite impatiently) for.
Mac developers no longer have to be content with the beta-quality IDEs of the past; however, these same developers are, just the same, experiencing an uneasy feeling of déjà vuas the rest of the development world is starting to cut its teeth on JDK 1.1.3. With the viability of the Mac OS as a Java development platform in question, some of us are still doggedly determined to prove that Java can fulfill its promise as a cross-platform language, allowing us to work where we feel most comfortable, where we are most efficient, and most of all, where we are happiest -- the Mac OS.
In an effort to determine just how viable a platform the Mac is for Java development, I conducted a comparative review of Mac-hosted Java IDEs. I focused on tools currently that are available in final-release versions for the Mac platform, avoiding those that are either still in alpha (such as Marimba's Bongo GUI development environment), or beta (such as Visix Vibe), and those that require Java 1.1 in order to work (such as JavaSoft's Java Workshop). Also, although I did not review Apple's Macintosh Runtime for Java (MRJ) as a development tool -- it's not an IDE -- I did include it in performance tests, because most of the tools are moving toward replacing their built-in VMs with MRJs. See the sidebar Apple Mac OS Runtime for Java (MRJ) for more information on MRJ.
If you just can't wait to see how the tools fared, take a look at the following table, which provides a quick rundown of each tool's features. Each of the tools, along with the company contact information, is listed in the Resources section of this article.
|Tools at a glance|
Discover Programming for Macintosh
|Price||9||9.95||99.95||CodeWarrior Pro: 99 |
Discover Programming for Macintosh: 9
|Pros||Superior user interface; fastest JIT; reasonable VM performance; great debugger; supports duplicate filenames||Fastest compiler||Most advanced GUI development support; moving toward support for Java Beans||Excellent user interface; most stable VM; very fast JIT; best support for native methods; support for Object Pascal, C, C++; CodeWarrior Pro includes tools for Windows 95/NT; Discover Programming for Macintosh is very inexpensive|
|Cons||JIT is still beta; VM not as solid as CodeWarrior; no JDK 1.1 support until MRJ 2.0||Poor support for application development; no JDK 1.1 support; outdated documentation||Major stability problems, inadequate documentation||User interface cluttered by C, C++, Pascal features, CodeWarrior Pro is not cheap; can't develop commercial software with Discover Programming|
|Create Double- Clickable Apps from IDE||Yes||No||No||Yes (requires CodeWarrior VM)|
|Free Trial Version Available||Yes||No||Yes||No|
|Native Method Support||No||No||No||Yes|
|JDK 1.1 Support||Dependent on MRJ 2.0 (not yet released)||None||Dependent on MRJ 2.0 (not yet released)||Pre-release Metrowerks VM available|
|Includes JIT||Yes (beta quality)||Yes||Yes||Yes|
|68K Support||Yes||Yes (no JIT for 68K)||No||Yes (no JIT for 68K)|
|Extras||Comes with ObjectStore PSE, ObjectSpace JGL, OpenLink database connectivity software, Netscape's IFC||Comes with Introduction to Java in PDF format||Includes libraries of useful GUI widgets||Both CodeWarrior Pro and Discover Programming include Learn Java on the Macintosh (and several other books on C, C++, etc.) in PDF format, ObjectStore PSE, ObjectSpace JGL, Netscape's IFC|
|Bottom Line||If you develop on the Mac because having a good user interface is important to you, Roaster is an excellent choice for Java development.||If Symantec wants to keep discerning Mac developers interested in its tools, it needs to think about upgrading Cafe, or discontinuing it in favor of Visual Cafe.||Visual Cafe is an ambitious product that has not yet realized its potential.||CodeWarrior Pro is the premiere power tool for Mac-hosted development in any language. For those just starting out, there is no better deal than Discover Programming for Macintosh.|
The tools -- an overview
This section provides an overview of all the tools I reviewed. As I mentioned earlier, I chose only those tools that are in final release. Here's a list of those tools that made the cut:
- CodeWarrior Professional/Discover Programming for Macintosh from Metrowerks
- Roaster 3.0 from Roaster Technologies
- Cafe 1.5 and Visual Cafe 1.0.1 from Symantec
Metrowerks CodeWarrior Professional/Discover Programming for Macintosh
In the foreground is CodeWarrior
Pro's clas browser, with the toolbar
above it. Behind that, the class
hierarchy viewer is visible, and
in the background, CodeWarrior's
With CodeWarrior Pro Release 1 (sometimes referred to as CodeWarrior 12), Metrowerks has merged its Mac-hosted and PC-hosted development environments into one package, replacing the separate versions of CodeWarrior previously available for Mac and Windows. Included on the three CodeWarrior Pro CDs are compilers for several languages in addition to Java, including Object Pascal, C, and C++, all of which are hosted within a new version (2.0) of the CodeWarrior IDE. The project formats are not yet the same across platforms, so Mac users and PC users can't currently share CodeWarrior project files.
With its multi-language, multi-platform support, CodeWarrior Pro (priced at 99) may be overkill for someone who is just getting started or who has no need for Pascal, C, and C++ compilers.
Metrowerks, however, doesn't dismiss beginners. To support those new to Java development on the Mac, the company offers Discover Programming for Macintosh. At only 9, this package includes just the Mac-hosted tools from CodeWarrior Pro (including support for Java, C, C++, and Object Pascal) -- a remarkable deal. The license does not allow you to develop commercial software, though, so if you're a professional developer, Discover Programming is not an option. If you're a student or an educator who would like the full power of CodeWarrior Pro, you may qualify for academic pricing. (Contact Metrowerks for more details.)
As with all of the IDEs reviewed in this article, CodeWarrior supports Java 1.0.2 and includes both a JVM and a Just-In-Time (JIT) compiler (PowerPC only). In addition, Metrowerks gives you a sneak preview of its tools for JDK 1.1. Check out the Thrill Seekers folder on the installation CDs for these pre-release versions of CodeWarrior tools with 1.1 support.
Shortly before this article was published, Microsoft made available a pre-release version of Internet Explorer 4.0 for Macintosh, including a new JVM and JIT supplied by -- you guessed it -- Metrowerks. The Metrowerks VM included with this version of IE 4.0 includes full support for all aspects of Java 1.1 except RMI (Remote Method Invocation) and JNI (Java Native Interface). Metrowerks has promised a soon-to-be-released update for CodeWarrior Pro with full support for Java 1.1, including JNI and RMI.
Roaster Technologies Roaster 3.0
In the foreground is Roaster's class
browser, with the class tree viewer
visible behind it. In the upper-left
corner is Roaster's package-oriented
project manager. Notice the menus next
to each file, which allow the user to
navigate directly to any method defined
in that file. Notice also the Scripts
menu in the menu bar. Users can easily
write their own scripts and have them
show up here simply by adding them to
Roaster's Scripts folder.
Release 3.0 is the first final release of Roaster, following a string of Developer Releases. New in version 3.0 is an optionally enabled JIT (still considered beta quality) for both PowerPC and 68K Macs, many bug-fixes, a stable debugger, the ability to build libraries in zip format, and a generally improved IDE. There are also a few bundled third-party libraries supporting database access among other things. At the MacWorld Expo in Boston, Roaster Technologies' John Dhabolt demonstrated Version 3.1 (not yet publicly available), which allows developers to choose between Roaster's VM and the MRJ VM. This means that when MRJ 2.0 is available, Roaster 3.1 will support Java 1.1 via MRJ 2.0.
Symantec Cafe 1.5 and Visual Cafe 1.0.1
Cafe's editor window is in the
foreground, with the class browser
visible just above it. On the right are
two project manager windows for
different projects. Notice that Cafe's
class browser is unable to find the
selected function even though it is
part of the current project.
Symantec's Java tools for the Mac come in two flavors: Cafe and Visual Cafe. Cafe is a standard, Java-only IDE, with its own VM and a JIT. For the most part, other than bug fixes and the addition of a 68K/PowerPC JIT, Version 1.5 of Cafe is not significantly different from Developer Release 2.0, covered my last comparative review of Mac IDEs for JavaWorld. (Mentioned at the beginning of this article, you can also find a link to it in the Resources section.)
Despite the similarity in name, Visual Cafe is a substantially different product from Cafe. Not merely a visual tool living alongside, or grafted onto, the same old Cafe IDE, Visual Cafe is a development environment designed from the ground up with visual development in mind. It strives to let developers create complete Java applets and applications -- not just layout components on screen -- without ever writing a line of code. "Serious" developers may scoff at this idea, and, of course, there are limitations to the concept; Symantec recognizes the limitations, so Visual Cafe doesprovide a full-featured IDE.
This figure shows how easy it is to add
menus to an application in Visual Cafe.
The property list on the right is
dynamically updated as you manipulate
objects graphically. GUI components
can be dragged and dropped from the
toolbar palette on the top of the
screen directly onto a mock-up of your
running application. This figure shows
only a few of Visual Cafe's libraries
of components, but there are many more.
It's a pity Visual Cafe is so unstable,
because in terms of its design, it
shows evidence of real genius.
Coming soon from Symantec is Visual Cafe Pro for the Macintosh (already available for Windows). On the Windows platform, the main difference between Visual Cafe and Visual Cafe Pro is that the Pro version is bundled with Symantec's dbANYWHRE Workgroup Server, Sybase SQL standalone version, and Netscape FastTrack Server. However, none of these additional products currently exist for the Macintosh, so it's hard to tell in advance what the Mac version of Visual Cafe Pro will actually look like.
Furthermore, Visual Cafe on the Mac is so unstable that it seems Symantec's development team will have their hands full for a while just fixing bugs. Perhaps this is part of the reason that Visual Cafe Pro for the Mac is behind schedule (it was originally slated for an August ship).
I've evaluated the tools with respect to the following criteria:
User interface: How intuitive is the product's interface? How Mac-like is it? To what extent does it actually speed development relative to other platforms? "What kind of documentation is provided with the product?"
Performance: How well does the VM perform? How fast is the compiler? How stable is the product overall?
- Functionality: To what extent does the tool provide a full-featured development environment? Does it allow the developer to create double-clickable Mac applications? Does it support native methods? What version of the Java platform does it support?
User interface: Roaster rules the roost
The single most important reason Mac users prefer Macs is that the user interface helps us get our work done faster and with less hassle. This is a very hard thing to quantify, but as you work with a tool regularly, you begin to get a feel for whether the tool is helping you or hindering you.
Developers want tools that allow them to navigate their code in logical ways -- class browsers, hierarchy browsers, method menus, etc. -- without making them jump through hoops. If it takes half an hour to find the right dialog box to turn on the class browser, for example, you lose whatever advantage the class browser provides. Documentation is also a crucial part of an application's user interface. No matter how intuitive the graphical user interface of an IDE is, you're still going to have to turn to the manual at some point. When you do, you want it to be easily accessible, clearly written, and comprehensive.
Editors: It's all in the toolbar