With the rise of Sun Microsystems Inc.’s Java 2, Micro Edition (J2ME), companies that want to develop applications specifically for embedded devices now have a language that allows them to do so. Unfortunately, what’s often missing is the IDE (integrated development environment) that can turn your plans into reality.
Many garden-variety Java IDEs don’t support J2ME. The language gives you a unique JVM (Java virtual machine) and set of APIs that has been optimized to yield runtime environments for embedded devices. So unless you have a J2ME-specific IDE, your developers may be forced to improvise; in a worst-case situation, they may even be left completely unequipped to write embedded software. Therefore, if you’re going to use J2ME to make embedded software, your developers should have the right tools.
Metrowerks Corp.’s CodeWarrior 6.0 is a Java IDE designed to support J2ME application development. With CodeWarrior, you can build applications that conform to Sun’s PersonalJava specification — the branch of J2ME that addresses the software needs of networked applications running on personal consumer devices, such as set-top boxes and car navigation systems.
Furthermore, the package supports Sun’s Connected Limited Device Configuration (CLDC) and Mobile Information Device Profile (MIDP) specifications, two J2ME offshoots that address the software needs of small, resource-constrained devices, such as handheld units and smart phones.
And that’s not all. The newest version of CodeWarrior also supports Sun’s Java versions 1.1.x, 1.2.x, and 1.3.x, and it allows you to integrate alternate JVMs, such as those provided by IBM, into the lineup. This makes it easy to test your applications across multiple versions of Java, thus extending this IDE’s flexibility in enterprise settings.
In all, we were impressed with the wide range of Java specifications that CodeWarrior can support and which give your developers plenty of options. Add smooth, wizard-driven project templates, subtract a few points for a clunky text editor, and CodeWarrior 6.0 comes up with a final score of Very Good.
Extending the family
As any seasoned Java developer can tell you, the CodeWarrior line of IDEs spans the market from desktop systems to embedded applications to gaming consoles.
With one glance at this latest addition, the family resemblance is unmistakable. As far as Metrowerks is concerned, Java and its JVM are just another platform/processor combination, and the company goes to great lengths to make Java fit the model it has established with the rest of its products. So if you are familiar with the CodeWarrior line, you will not have any difficulty adjusting to this version. On the other hand, if you are not a CodeWarrior veteran, be prepared to spend some time with the documentation (which, by the way, was very helpful, walking us through the entire process of creating a project, adding a class, and running it.)
We installed CodeWarrior on both Windows 98 and Windows 2000 machines. The installation ran flawlessly with one minor exception: Although CodeWarrior detected existing JVMs and automatically configured itself to use them on Windows 98, it failed to detect the JVMs on Windows 2000. We had to use the included VM Registrar tool and install the JVM manually. But this was a minor snag.
Next we opened, built, and ran a series of sample applications, which included everything from Java 2, Standard Edition (J2SE) applets to J2ME applications. Those sample projects worked without a hitch.
Yet we had problems when we tried to create projects completely from scratch, because CodeWarrior forces you to negotiate a number of tricky project settings, including file mappings and project targets. In our tests, we were never able to get those settings to line up in the right configuration. They were simply too confusing to be useful.
Thankfully, CodeWarrior 6.0 comes with a complete set of project templates in the form of “stationery,” which was extremely helpful in getting our new projects off the ground. For example, if you want to use the Java Application stationery, CodeWarrior will create a project with all the core Java libraries already in place, thus simplifying and speeding development. With the stationery on hand, the difficulty meter on the development process went from diabolical to very easy.
There’s a lot to choose from, too. CodeWarrior provides stationery for applets, desktop applications, and of course, J2ME applications. Another nice bonus is that you can develop custom stationery, which makes it easy to enforce departmentwide or companywide project organization standards.
The J2ME stationery automatically creates a project for building a MIDlet (a small application that conforms to Sun’s MIDP specification), complete with all the correct libraries and a very simple application skeleton. Similarly, the PersonalJava stationery automatically generates a project that allows you to build a PersonalJava applet or application, once again structuring your project for you. All the while, CodeWarrior provides many helpful wizards that make it easy to create applets, applications, and JavaBeans, streamlining the development process even further.
The debugging features fared well in our tests, too. CodeWarrior 6.0 sports a solid, integrated Java debugger that supports breakpoints, variable inspection, and stack inspection. It can also debug servlets remotely — a handy feature if you ever want to ferret out misbehaving code that’s running on the server.
Editing the old-fashioned way
One downside was that CodeWarrior’s text editor, while acceptable, was nothing close to state-of-the-art. In this day and age, all text editors for programming languages — including Java, with its seemingly endless supply of libraries and classes — should automatically complete partially-typed class, method, and field names regardless of whether you’re working with J2ME, J2SE, or J2EE. But CodeWarrior’s text editor doesn’t. On the other hand, CodeWarrior does pack a fairly sophisticated browser tool that helps you explore project source code and classes.
Moreover, the package lacks JSP (Java Server Page) and Enterprise JavaBeans (EJB) support, limiting CodeWarrior’s enterprise development usefulness: You could not use this tool to develop high-performance, scalable, database-driven transaction systems. But that’s not a slight against Code Warrior. The package is clearly meant to be the IDE you use for embedded applications, and only embedded applications.
Instant code compilation
Those shortcomings aside, how did CodeWarrior perform in our tests? Very well. Small test projects consisting of a handful of classes compiled almost instantly on a 700MHz Pentium machine.
The built-in “make” utility streamlines the build process by compiling only the minimum set of classes necessary to get a project up to date. That’s enough to calm even the most anxious product manager’s fears about unproductive developer time.
If you are developing Java applications for products that support one of the J2ME technologies, such as handheld devices or embedded systems, CodeWarrior 6.0 is an excellent choice. Its out-of-the-box J2ME support was truly impressive, and Metrowerks has thrown in enough extra features to make the package worth the investment for shops that create embedded applications. Just don’t expect CodeWarrior to replace the heavy-duty package you use for enterprise development.
Todd Sundsted is a writer and Java architect at ComFrame Software, in Corpin Hoover, Ala. He can be reached at email@example.com.
THE BOTTOM LINE: VERY GOOD
Business Case: Metrowerks’ newest IDE offers tools for creating applications for embedded devices, reducing development costs and time to market. The package offers excellent J2ME support, but it’s not meant for enterprise development.
Technology Case: CodeWarrior 6.0 allows you to build applications that conform to Sun’s PersonalJava specification for networked applications. It also supports the CLDC and MIDP standards, enabling development for small, resource-constrained devices.
+ Excellent support for various embedded development standards
+ Strong, fast performance
+ Wizard-driven, “stationery”-based development guides
– No automatic code completion
– Lack of support for enterprise development standards, including JSP and EJB
Platform(s): Windows 98/2000 and Windows NT
Metrowerks Corp., Austin, Texas; (800) 377-5416; http://www.metrowerks.com
Prices listed are in US currency.