A cornucopia of MIDP emulators reflects the abundance of MIDP devices available. This article surveys the current crop. Although some emulators are designed for demonstrating MIDP applications to prospective users, the emulators in this article are specifically for developers, to help them test applications.
Emulators are usually distributed as part of a larger package or development kit. Each of the blocks below shows a particular package, including its name, important links, thumbnail images of each emulator, and a brief description.
This is not a complete list but captures the knowledge we have at present. If you'd like to see other emulators here, please let us know.
A Few Words About Emulation
Emulation is hard to get right. The ideal is to mimic the behavior of a device exactly, but the accuracy of the emulation correlates to the difficulty involved in developing it. The emulator's developers have to decide how accurate to make the emulation based on the time and skill they have.
At one end of the spectrum, a vendor may choose to take the J2ME Wireless Toolkit emulator and simply create a new skin for it. I'll talk more about this option later.
At the other end of the spectrum, a vendor may write code to emulate the actual processor and other chips on the device, in which case the emulator can run the same OS-level software and MIDP implementation binaries as the real device. This is quite a bit more difficult and expensive, but the end result is an emulator that behaves much more like the real device.
There are other possibilities between these two extremes. It's impossible to be certain what approach a vendor has used without talking to the developers who wrote the emulators, but you can sometimes get a feel for what's been done, especially for emulators that look and behave a lot like the one in the J2ME Wireless Toolkit.
Another Way to Slice It
Another way of looking at the world of emulators is to divide them into concept emulators and real-life emulators. A concept emulator does not represent a specific device but serves to demonstrate the general characteristics of a certain kind of device. The J2ME Wireless Toolkit emulator, for example, is a concept emulator that can be used to represent a variety of MIDP devices. A real-life emulator is designed to mimic the appearance and behavior of an actual device. Such an emulator may run some or all of the binary code that runs on the device itself.
Nokia provides examples of both types. The company releases a concept emulator to help developers prepare for an upcoming device series, then supplies a real-life emulator when the series is actually released.
Skinning the J2ME Wireless Toolkit Emulator
The J2ME Wireless Toolkit emulator can be "skinned" to give it, not only the appearance of any device, but the behavior of buttons and other controllers as well. Providing new skins for the emulator is described in the J2ME Wireless Toolkit's Basic Customization Guide, which you'll find in the docs directory.
Emulators based on the J2ME Wireless Toolkit provide an impressive list of features:
- Creating a skin on the toolkit's emulator gives a good approximation of the user's experience with the screen and input methods of a particular device. In a new skin you can specify the screen size, color depth, fonts, and input methods of a device.
- The toolkit's emulator provides a solid and robust environment for testing applications that don't use vendor-specific APIs.
- The toolkit's emulator is available on Windows, Linux, and Solaris.
- The J2ME Wireless Toolkit includes helpful tools for the application developer, including performance simulation, method profiling, and network monitoring.
Using the Emulators
Unfortunately there are no rules of thumb about using these emulators. Some are packaged to be added to the J2ME Wireless Toolkit or a full integrated development environment (IDE). Others are packaged as part of a standalone development kit or testing tool. This document is simply an overview of available MIDP emulators. You'll have to read their installation instructions and release notes to understand exactly how to install and use them.
Emulator Listings
About the Author: Jonathan Knudsen is the author of several books, including Wireless Java (second edition) , The Unofficial Guide to LEGO MINDSTORMS Robots , Learning Java (second edition) , and Java 2D Graphics . Jonathan has written extensively about Java and Lego robots, including articles for JavaWorld, EXE, NZZ Folio, and the O'Reilly Network. Jonathan holds a degree in mechanical engineering from Princeton University.