Metrowerks seems to have their hand in just about every platform's development tool suite these days. Metrowerks' Codewarrior is now available for just about every platform and operating system imaginable. Version 7 of Codewarrior Wireless Studio aims to provide an inexpensive and robust development environment for wireless application programmers using Java. This includes not only mobile phones, but PDAs, set top boxes, and other Java-enabled devices using J2ME, J2SE, and even PersonalJava.
For wireless game developers, Wireless Studio 7 definitely serves to fill a growing need. Slowly, we are rising from the primordial soup of stale WAP products and simplistic embedded games. The mobile gaming industry is currently hampered by a lack of properly executed standards and dysfunctional carrier and handset manufacturer priorities. Even within the leading mobile applications platform standard, Sun's J2ME, there is a mess of custom extensions and and handset features.
Why should you spend a dime on wireless Java development tools when Sun provides their own kit for free? This is a good question. Sun's own J2ME Wireless Toolkit features KToolbar, a simple project manager which allows for the easy compilation, emulation, and packaging of J2ME MIDlets. Its no-frills presentation is a bit inflexible, but you get what you pay for. Regardless, it has its benefits. In fact, I have done complete commercial games using only KToolbar.
However, wireless games are getting more complicated. Memory capacities are rising and multimedia capabilities are rivaling the GameBoy Color and even approaching those of the GameBoy Advance. Soon the spare-bedroom programmer banging out a mobile game in a few weekends will have to get serious. This means things like using debuggers, source control, and having the ability to quickly build your code for multiple handsets.
Currently, most handset manufacturers adhere to Sun's basic MIDP specifications. However, manufacturers often include their own custom packages to contend with their own unique hardware. Extensions to access features like MIDI music, sprite graphics, pixel transparency, and low-level networking are commonplace in various J2ME SDKs. Also, many manufacturers have created their own emulators in an attempt to accurately simulate the custom features of their hardware. Metrowerks has taken on the daunting task of uniting all of these disparate emulators and SDK extensions with Wireless Studio.
Opening the Box
Codewarrior Wireless Studio 7 Professional Edition comes on two discs. The first has the actual IDE on it while the second CD, labled "SDK Disc", contains the J2ME SDKs and emulators for Sun, Motorola, Siemens, and SprintPCS. It also includes Sun's PersonalJava SDK as well as support for the Sharp Zaurus' flavor the platform. The SDK disc has a few third party libraries, including PointBase Micro Edition, Softwired iBus-Mobile LE, Lutris Enhydra kXML, and kSOAP. This also includes the popular Retroguard obfuscator. Many of these additions are of minor importance to the average game developer. However, Retroguard is invaluable when trying to slim down your application for distribution.
The installation process is relatively painless. If you do not have Sun's J2SE 1.3 and Java Wireless Toolkit already, the installer will guide you through the process of installing these required kits on your machine. After registering the product, you are ready to start developing. If you want to bring over a project from an earlier version of Codewarrior, you need to modify it somewhat since many changes have been made to the project format. Fortunately, Metrowerks provides simple instructions on how to convert your old projects in the handy release notes.
Wireless Studio 7 also comes with a few manuals and a quick start guide to get you up and running as fast as possible. The larger of the two manuals is a guide to Codewarrior's interface. This is a generic tome that applies to all versions of Codewarrior. The second smaller book is dedicated to Codewarrior Wireless Studio 7 and features detailed instructions on how to use most major features of the product. Codewarrior also has on-line documentation which is pretty much the same as the printed manuals.
Using Wireless Studio
There are many religious wars in computing: Windows versus MacOS, Emacs versus VI, and sometimes Codewarrior versus DeveloperStudio. In most cases this argument is moot since Microsoft only supports their own platforms with DeveloperStudio, whereas Codewarrior is available for just about any device on the planet. I must say I have never been a big fan of Codewarrior's somewhat bewildering interface. Perhaps it is because I was reared on Microsoft's products. Colleagues of mine who use Codewarrior daily seem to really love the interface. I must say, Codewarrior has cone a long way interface-wise from its disastrous initial steps outside of the Macintosh world. After using the IDE for several weeks, I have become accustomed to the Codewarrior way. Although I still feel more at home in the comfortable world of DeveloperStudio.
Codewarrior Wireless Studio works largely the same way as their normal Java IDE. In fact, you can also create J2SE projects with it. Think of it as Java Codewarrior with a few extra bells and whistles for mobile development. This includes all of the standard features of editing, project management, and version control integration. Among the bells and whistles are editing JAD properties, verifying and packaging the MIDlet suite, obfuscating, and developing your code with a variety of different emulators and SDKs.
It is the latter feature that is the major win in Wireless Studio 7. As mentioned previously, the J2ME world is currently awash in non-standard extensions and unique hardware implementations. Codewarrior has consolidated many of these custom SDKs and emulators under one roof. Simply pick which SDK you want to compile with and you are in business. Codewarrior also will work with updated versions of some SDKs. In particular, newer offerings such as Motorola's 2.0 J2ME SDK have installation options to automatically merge with Codewarrior. Hopefully more manufacturers will follow suit.
Because the various included SDKs are not made by Metrowerks, Codewarrior is in many cases at the mercy of the quality control of another company's product. In some cases, such as with SprintPCS's tookit, they are genuine beta releases. In other cases they are finished products with a lot of quirks. Despite the fact that Metrowerks is now owned by Motorola, the support for Motorola hardware is the worst out of all the included SDKs. Although the emulator runs the code without a hitch, neither the debugger nor obfuscator seem to work with Motorla's J2ME toolkit. Even the newer 2.0 release of the SDK available from Motorola's website does not help the situation. Hopefully the upcoming 3.0 edition will fix these bugs and work as well with Codewarrior as the other third-party products do. These SDKs are not Metrowerks products, and thus the quality of Codewarrior must not be judged by them. What Metrowerks has done right is allowing for switching between any of the provided kits, as well as the ability to register different VMs and SDKs to expand support for other devices.
Wireless Studio 7 comes with Codewarrior's familiar debugging tools. This includes their robust source-level debugger with all the pleasantries we have grown accustomed to in a modern debugger. However, one of the more interesting features is the ability to do on-device debugging.
Anyone who has created a product for a J2ME handset knows that the emulators are often extremely inaccurate when compared with the actual handset. This includes various crashes, exceptions, and other peculiarities that are not present when running the code on the emulator. Thus, it becomes necessary to extensively debug your code on real hardware before releasing a commercial application. Previously, you have only been able to get println output via a terminal program communicating from the handset to a host PC. Codewarrior Wireless Studio 7 includes support for debugging on the device itself. This means you can connect the debugger to the handset and step through code as it executes on the actual hardware. This requires a debug version of the handset firmware to be installed on the device. Right now, only debug Java VMs for PDAs are supported with on-device debugging. Metrowerks is working with manufacturers to provide developer firmware updates that work with Codewarrior's debugger. This is an absolute godsend and is alone worth the price of admission if it actually works.
Overall, Codewarrior Wireless Studio 7 is way ahead of the pack when it comes to J2ME IDEs for mobile game development. At a mere $599, it is an absolute steal when contrasted with competing products like Borland's JBuilder which can approach prices of $2000. Metrowerks has been making tools for game developers for quite some time, and thus Wireless Studio is one of the first wireless Java tools to support game programmers. Codewarrior has announced an upcoming "Entertainment Edition" of Wireless Studio which will have specific features for game development, including multiplayer server libraries and such. Considering the miniscule budgets of the average mobile game, Codewarrior's low price and useful array of features make it the only choice for we cash-strapped development houses of the mobile age.