JavaSE implementations of MIDP

The reason why midlets can't be run on computers is that they do not use the same Java classes as JavaSE. Actually, MIDP classes are set on top of and next to CLDC classes and both of them are required to run midlets on mobile devices. For simplicity we will refer to them just as MIDP. They offer a simplified subset of JavaSE classes as it is no use for limited devices to pretend use the whole Java2 stuff; which is by the way far too big to be embedded on phones.

Thus, porting CLDC and MIDP to JavaSE is all you need to run your favourite midlets on computers. As you will see, you can also run midlets in browser. Unfortunately, applets security systems prevent an applet from making network calls to somewhere else than the site that hosts them. Hence I won't be able to demonstrate to you WapcamLet connecting to my WapcamServer demo.

Attention: You need to have Java Runtime (JRE) installed in order to run the following applets.

ME4SE from kObjects

ME4SE is one such porting of MIDP to JavaSE ans it works good.
It doesn't come with a device skin but if you need that, you can check MobileRunner from Wap3. Its drawbacks are that it has a restrictive licence and it doesn't seem to have been updated for a year now.

Click directly on the screen elements to trigger actions

MicroEmulator project

MicroEmulator distributed under the LGPL. That makes it free to use. It is a very nice looking project offering three different skins and still being maintained. Its drawback is that, well, it doesn't work with WapcamLet !! As you can see, the midlet is launched but for an unknown reason, you cannot navigate in the menu and access the different pages.

I still want to talk about it as I have the seen Opera Mini working with it and I find it a good lib though.


Emulators

Emulators are well known by midlet developpers as they are maybe the most handy tool. They are slightly different than the two previous libs.
Their purpose is not only to implement specific classes related to CLDC/MIDP (midlet specific Java classes) but to reproduce a real handset on your computer. They are designed in order to facilitate development and debugging of midlet and allow special monitoring of system calls, heap and stack consumption, network use etc...

Running them is generally consumming a lot of resources of your PC and thus, they are not really designed to be used to run midlet in "normal" conditions. Still you can use them occasionnaly if you want so.

You should at first head to Sun Microsystem's WTK as the WTK includes a standard ugly emulator. According to your handset's manufacturer, there may also exist specific emulator to reproduce your device more closely. Forum Nokia is a reference for Nokia devices (and not only). You should find similar toolkits from Sony-Ericsson, Samsung,...