MIDP Emulators

by Jonathan Knudsen September 2003

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

Vendor: Motorola
Package: Motorola iDEN SDK 3.0 for J2ME Technology
Registration: iDEN Developer Community (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators:
i85s i88s i90c
i90c v2 i95cl 
Notes: Although there are few emulators in this package, they are well done, and seem to emulate closely the appearance and behavior of MIDlets on the corresponding real devices.
Vendor: Motorola
Package: Motorola SDK v3.1.1 for J2ME
Registration: MOTOCODER (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators:
A008 A388 A6288
A830 C353t Generic Phone
i1000 i85s iDEN Platform
Minimal MP3 Player StarTac
T280i T720 T720i
V60i V66i 
Notes: The emulators in this package appear to be skins running on top of the same MIDP implementation.
Vendor: Nokia
Package: Nokia 3410 SDK 1.0
Registration: Forum Nokia (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators: Nokia_3410_SDK_1_0
Notes: In the J2ME Wireless Toolkit, you must select Project -> Package to create the MIDlet suite JAR. The 3410 emulator uses the JAR, and will not run your application without it.
Vendor: Nokia
Package: Nokia 6310i MIDP SDK 1.0
Registration: Forum Nokia (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators: Nokia_6310i_MIDP_SDK_v1_1
Notes: This appears to be a faithful representation of the Nokia 6310i phone.
Vendor: Nokia
Package: Nokia 7210 MIDP SDK 1.0
Registration: Forum Nokia (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators: Nokia_7210_MIDP_SDK_v1_0
Notes: This appears to be a faithful representation of the Nokia 7210 phone. It is also included in the Nokia Developer's Suite for J2ME 2.0 package.
Vendor: Nokia
Package: Nokia Developer's Suite for J2ME, Version 2.0
Registration: Forum Nokia (free)
APIs: CLDC 1.0, MIDP 2.0, MMAPI 1.0, WMA 1.0
Emulators:
Nokia 7210 MIDP SDK 1.0 Series 60 MIDP Concept SDK Beta 0.3
Notes: The Series 60 concept emulator supports MMAPI, WMA, and MIDP 2.0. The 7210 emulator included in this release is the same one that's listed in the Nokia 7210 MIDP SDK 1.0 package; it supports MIDP 1.0 only.
Vendor: Nokia
Package: Nokia Series 60 MIDP Concept SDK Beta 0.2
Registration: Forum Nokia (free)
APIs: CLDC 1.0, MIDP 1.0, MMAPI 1.0, WMA 1.0
Emulators: Nokia_Series_60_MIDP_Concept_SDK_Beta_0_2
Notes: This emulator approximates the appearance and behavior of the Nokia 3650. It even supports video capture, as does the real Nokia 3650. I had to add a line to the emulator.properties file, as described in the release notes, to get this emulator to work properly.
Vendor: Research In Motion
Package: Blackberry Java Development Environment 3.6
Registration: Yes (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators: 6510
Notes: The Blackberry Java Development Environment is a full-featured IDE. Several network-specific variants of the emulator are available for download.
Vendor: Siemens
Package: Siemens Mobility Toolkit for Java Development (choose Tools, then Download Center)
Registration: Siemens Mobile Developer Portal (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators:
2128 3118 6688i
C55 M50 M55
MC60 S55 S57
SL45i SL55 
Notes: Each of the emulators is available as a separate download. They run as parts of the Siemens Mobility Toolkit for Java Development, which must be installed first.
Vendor: Sony Ericsson
Package: Sony Ericsson J2ME SDK
Registration: Ericsson Mobility World (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators:
P800 T610
Notes: This package is actually a port of Sun's J2ME Wireless Toolkit. The P800 and T610 emulators appear to be skins on top of Sun's implementation.
Vendor: Sprint PCS
Package: Sprint Wireless Toolkit for Java 1.0.3
Registration: Sprint PCS Application Developers Program (free)
APIs: CLDC 1.0, MIDP 1.0
Emulators:
DefaultColorPhone DefaultGrayPhone MinimumPhone
SprintLargeColorPhone SprintSmallColorPhone SprintSmallGrayPhone
Notes: This is another port of Sun's J2ME Wireless Toolkit. The DefaultColorPhone, DefaultGrayPhone, and MinimumPhone emulators are the same as in Sun's toolkit. Sprint has added three other emulators to approximate its available devices.
Vendor: Sun
Package: J2ME Wireless Toolkit 1.0.4
Registration: none required
APIs: CLDC 1.0, MIDP 1.0
Emulators:
DefaultColorPhone DefaultGrayPhone MinimumPhone
RIMJavaHandheld Motorola_i85s PalmOS_Device
Notes: The J2ME Wireless Toolkit is a versatile tool for MIDlet development. The 1.0.4 version supports MIDP 1.0 and includes six emulators. Except for PalmOS_Device, all the emulators appear to be different skins based on the same MIDP implementation. In general, these emulators implement the MIDP specification faithfully and provide a wide range of functionality. PalmOS_Device is actually a bridge to the Palm OS Emulator (POSE), which must be installed separately.
Vendor: Sun
Package: J2ME Wireless Toolkit 2.0
Registration: Sun Download Center (free)
APIs: CLDC 1.0, MIDP 2.0, MMAPI 1.0, WMA 1.1
Emulators:
DefaultColorPhone DefaultGrayPhone MediaControlSkin
QwertyDevice  
Notes: This updated version of the J2ME Wireless Toolkit supports MIDP 2.0 and (optionally) MMAPI 1.0 and WMA 1.1.
Vendor: Sun
Package: Mobile Media API Emulator 1.0 for the J2ME Wireless Toolkit
Registration: none required
APIs: CLDC 1.0, MIDP 1.0, MMAPI 1.0
Emulators: MMEmulator
Notes: You can use this emulator with the J2ME Wireless Toolkit 1.0.4 to build and test MMAPI applications.

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.