Product ReviewA Small-Device Power ToolCodeWarrior PersonalJava Platform Edition 1.0

There's no doubt about it: The world is going wireless. Providing applications for a fast-emerging generation of mobile computing devices is the challenge of the day. Beyond the sexier wireless applications, embedded devices of all kinds are pushing programmers into smaller and smaller spaces. Small-device programmers everywhere are charged with the task of providing high-performance, robust apps that won't have much legroom. They need all the help they can get as they strive to squeeze an ever-swelling package of features and functions into a stampeding herd of the limited-footprint, resource-constrained devices.

For Java programmers, Sun's PersonalJava standard is making it easier to get this particular job done. Already licensed by more than 1,300 companies (Motorola, Sony, and TCI among them), this subset of the Java 2 Micro Edition (J2ME) is quickly becoming a key technology for mobile computing developers.

New tools specifically designed to exploit the PersonalJava standard are beginning to appear. Products such as Wind River Systems' Personal JWorks and Insignia Solutions' Jeode are creating a new category of Internet-appliance and embedded-device applications. Among this new crop of development tools, the newly released Metrowerks CodeWarrior PersonalJava Platform Edition Version 1.0 caught our eye. We asked freelance programmer L. J. Cohen to take the product for a test-drive.

—John K. Waters Product Review Editor

whole mugwhole mugwhole mugwhole mug Company Logo
Version Reviewed:
Current Version:
5 Outstanding 4 Very Good
3 Acceptable 2 Has Potential 1 Poor

Vendor Info
Metrowerks Corp.
9801 Metric Blvd.
Austin, TX 78758

THE METROWERKS CODEWARRIOR IDE has been around for a number of years, and because it's easy-to-use, Mac compatible, and so many junior colleges and universities recommend it to their programming students (there's a student version of the product), it has grown a fairly substantial fan base.

As one of those fans, I was delighted to learn the company had released a version of the product this past summer for small-device programmers. CodeWarrior PersonalJava Platform Edition 1.0 offers excellent support for Sun's PersonalJava technology.

PersonalJava is a subset of the J2ME, which is used to develop applications for devices such as set-top boxes, Internet-connected cell phones, PDAs, and automotive navigation systems. The new CodeWarrior IDE accelerates the development of PersonalJava applets and applications that target these kinds of networkable consumer devices.

The new CodeWarrior IDE supports the PersonalJava 3.1 platform and combines most if not all of the features developers expect in a good IDE. The product is touted by the vendor as "a complete tool suite for PersonalJava development," and I'd have to say they're not exaggerating. The product offers: a Java compiler; Rapid Application Development (RAD) for the Abstract Windowing Toolkit (AWT) GUI library; JavaCheck (see Figure 1), which provides validation of an application's API requirements with the PersonalJava API; and a Project Template that provides developers with a quick start to creating PersonalJava applications.

Figure 1
Figure 1. PersonalJava Platform Edition 1.0 validates code using the JavaCheck testing tool.

The product includes all the tools and functionality of the traditional CodeWarrior IDE. It also comes with the Truffle Graphical Toolkit, with which developers can create customized interfaces. It supports version control through third-party products such as Microsoft SourceSafe and Merant PVCS. And if you want to disassemble your compiled source code and view the machine code, it'll let you do that too.

I installed the CodeWarrior PersonalJava Edition from a CD onto a Pentium III-based desktop PC running Windows 98. Not much to say here, except that the wizard-managed installation came off without a hitch.

The tool comes with an emulation environment for analyzing, verifying, and debugging code, which you choose to install at the beginning of the installation routine. (I can't think of a reason not to install it.) According to both Metrowerks and Sun, any code that operates in CodeWarrior's emulation environment will run on any PersonalJava certified device.

Working with the product was—no surprise—easy and intuitive. I particularly liked the project templates and wizards, which offer quick starting of Java and PersonalJava applets and applications (which is why you bought the product), but also Beans, Java Stationary, and Project Makefiles. The product also allows users to set markers at specific locations inside the code for easy navigation. Also, you can right-click on any method to find the definition and all the implementations—very cool and a real time-saver.

To create a simple PersonalJava app (for this review, a stock-ticker-like text display), I chose a template (although the product gave me the option of building it from scratch). I was then able to work with a project preconfigured with all the necessary libraries and source files. The unifying "entity" here is the project, which is a gathering of source files, resource files, compiler and linker switches, and parameters.

The speed, integration, and flexibility of the product are truly impressive. CodeWarrior manages projects visually. Adding a source file to a project is simply a matter of dragging its icon from the desktop and dropping it into the project window. For all intents and purposes, you can create, compile, link, and debug a project with a couple of mouse clicks. I was particularly pleased with the built-in debuggers for the Sun VM, the Apple MRJ, and PersonalJava emulation environment (PJEE).

The product's File menu contains an updated New command, with which users create files, projects, RAD designs, and objects. The New command also lets users access CodeWarrior's Makefile Importer and RAD wizards.

Developers of large, complex object models will love the straightforward navigability of the class hierarchy in this product. The class browser is a powerful and simple-to-use feature that lets you maneuver to precise locations in your source code, quickly and easily.

I was probably most impressed with the product's debugging capabilities. You turn on the debugger from within the Project pull-down menu (not the Debug pull-down menu—go figure), and you set conditional breakpoints from within the editor with a right-click of the mouse. The product also provides menu options that allow you to single-step through the code and even change program counters. A syntax error at compilation opens a fully functioning editor window, with the insertion point set automatically to the offending statement.

As I mentioned earlier, the JavaCheck testing tool is integrated with CodeWarrior. To validate my code—to make sure that it conformed to the PersonalJava spec—I simply set the post-link compiler to execute JavaCheck.

Running the application within the PJEE is the final step, if you want to make sure it's going to run in a PersonalJava environment. This involved a command-line call with the name of the class file, but having the emulator successfully display my text gave me a real sense of confidence that the application would work later on.

Although I was warned that early release versions of this product had some rough edges, I had virtually no trouble with it. One of my colleagues encountered program exceptions that crashed the tool, but I didn't have that experience with this test, and I have great confidence in the product line. New users to the CodeWarrior environment have also told me the icons are "weird," and that they were PO'd by the lack of tip boxes. I guess if you're not a CodeWarrior user, this could be frustrating, but I suspect it's a small point.

All in all, the CodeWarrior for PersonalJava Edition 1.0 IDE is a great tool. It's a powerful product and a "must try" for small device programmers.

NewMonics Uses CodeWarrior for Java for In-House Development and Supports it With its Own Products
Steve Lee is director of product development at NewMonics Inc. ( The Tucson, AZ-based company develops and sells JVMs and tools for embedded and real-time systems. NewMonics focuses on supporting mission critical systems, with particular emphasis on the telecommunication, data communication, and industrial automation markets.

NewMonics began using Metrowerks software development tools in 1999. The company currently uses them for in-house development, but also supports them through its PERC product family. PERC software is a collection of advanced programmer productivity enhancement tools and reusable software components designed for use in developing embedded real-time computer systems. The PERC product family provides full compatibility with the Java 1.1 language and key embedded system libraries, as defined by Sun Microsystems.

Java™ Report: I understand that, when you began evaluating CodeWarrior, you weren't just looking for an IDE to use for your own product development.

Steve Lee: That's right. In the spring of 1999 we began evaluating [CodeWarrior] to decide whether we wanted to use it in-house, but also whether we needed to support it with our products. We've really been using it as a development tool since that time. We officially began supporting it in the spring of this year.

JR: How important is this kind of decision to your company? I mean, who cares which IDE your coders use, as long as the applications work where and when they're supposed to?

SL: Well, it's important to us internally for our own development efficiencies, but also we have to be thinking about our customers. We're also integrating with other products and tools, and we want to make sure that they're easy to use.

JR: Is your company strictly a Java shop?

SL: No. We have a lot of C and Java code, so we use a mix of debuggers and tools. In our own product we support CodeWarrior for Java so that our customers can use it to develop Java applications and debug them on a remote target, running on PERC. We like CodeWarrior because it supports both C and Java development.

JR: What do you like about the CodeWarrior PersonalJava Edition in particular?

SL: It's targeted for embedded systems, which is obviously important to us. A lot of other commercial IDEs have fancy features, but they're driven by the enterprise. They're not thinking about embedded developers, where the system you're developing for is usually on a separate board and there are a lot of limitations. The folks at Metrowerks have been thinking about that. It's just a better fit for us.

JR: Any other features that work particularly well for you?

SL: An important feature for us is its plug-in architecture. It's easy to customize. We've had no problem integrating our tools and our GUIs inside the CodeWarrior IDE. I also like the debugger. CodeWarrior debugs Java programs using a standard, wire protocol. It's able to debug a lot of different virtual machines, including ours, but also Sun's and some of our competitors. That's important to us because open standards make it easier for us to integrate our software with their software.

JR: What about the product's usability?

SL: It's project based, which I like because I came from a Microsoft Visual C++ background. You can add Java source files to the project, you can group them as JAR files, you can incorporate third-party libraries that are JAR files, and then from that project do all the common project things, such as building, running, debugging, etc.

JR: Was it difficult to switch from Visual C++?

SL: Not really. Every IDE has its quirks, but the learning curve [with CodeWarrior] isn't much. I was able to get to work fairly quickly.

Review in a Nutshell
  • Same basic interface as other versions of CodeWarrior
  • Excellent debugging capabilities
  • Easy-to-use development environment
  • Great add-ins, including JavaCheck and Truffle Graphical Toolkit
  • Includes the PersonalJava emulation environment for analyzing, verifying, and debugging code
  • Includes all the tools and functionality of the traditional CodeWarrior IDE
  • Twitchy Help system
  • Quirky interface for users new to CodeWarrior products
Bottom Line:
This is a great tool for small-device application developers. Anyone working on applications for set-top boxes, Internet-connected cell phones, or PDAs will want to take a serious look at this product.

System Requirements:

  • Runs on Windows 95/98/2000, Windows NT, Mac OS, and Solaris
  • 32 MB of RAM (64 MB recommended)
  • Minimum of 30 MB free hard disk space