MicroEmulator


MicroEmulator — is a free and open-source platform independent J2ME emulator allowing to run MIDlets on any device with compatible JVM. It is written in pure Java as an implementation of J2ME in J2SE.

History

In November 2001, MicroEmulator project has been created on SourceForge.
On 31 March 2006, MicroEmulator version 1.0 has been released.
In November 2009, project moved to code.google.com, and after Google closed it, development moved to GitHub.
On 10 January 2010, the last stable version 2.0.4 has been released.
On 24 May 2013, the last preview version 3.0.0-SNAPSHOT.112 has been released.
After 2014, MicroEMU technology has been acquired by All My Web Needs company and all the MicroEmulator's docs and binary builds has been removed from the official site.
All sources and binary previously released on SourceForge, Google Code and GitHub preserved as open-source, but development stalled since then.

Features

By default MicroEmulator does not loads all distributed JSRs; user should load it per launch via custom commands instead.

File system access

By default, MicroEmulator does not loads JSR 75 lib, required to grant MIDlets an access to file system.
To grant file system access, config2.xml file should include the next code block after tag:
...



org.microemu.cldc.file.FileSystem







MicroEmulator should run with loading JSR 75 lib. On Linux, launch command to add into microemulator.desktop file is:java -cp /microemulator.jar:/microemu-jsr-75.jar org.microemu.app.Main
On Windows, ; in command should be replaced with : .
To load more libs, path to additional libs should be added each after each in a row into launch command.

Java applet for Web

MicroEmulator allows conversion of any J2ME app into a Java applet, that could be placed on a web page. This feature is used for demonstrating apps and games demos on vendors sites, but it requires JVM and Java Web Start plugin to be installed on the user's PC or device.

Skin, screen and window size configuration

MicroEmulator allows interface customization with skins called "devices" and distributed with few "devices":
  • Default device — phone with 176x220 color display and antialiased font
  • Minimum device color — small phone with 128x128 color display and non-antialiased font
  • Minimum device — small phone with 128x128 monochrome display and non-antialiased font
  • Large device — large phone with 240x320 color display and antialiazed font
  • Resizable device — full window resizable color display with antialiased font
Each "device" skin consist of XML-files, that stores definitions of window size, keys layout and assignations, text rendering options, etc. Optionally, skin could include image textures for "device" background and keys animation on key click and key relax. All files of "device" skin should be packed into ZIP or JAR, and its possible to include few "devices" into single package.
Screen could be switched between portrait and landscape orientation. Additionally its possible to show current MIDlet screen scaled in a separate floating window.

Limitations

  • MicroEmulator lacks support for few Java APIs and JSRs often used in j2ME games :
  • * Mobile 3D Graphics API
  • * Scalable 2D Vector Graphics API
  • * Java bindings for OpenGL ES
  • * Mobile 3D Graphics API 2.0
  • * Mascot Capsule 3D API
  • Some MIDlets may require other JSRs, that are not availabale for MicroEmulator yet.
  • For input Cyrillic characters it might require to use special "device" skin.

    Ports and forks

Android

MicroEmulator has official support for the Android platform. It is also possible to convert J2ME MIDlet JAR-packages into standalone APK files.
J2ME Loader — is an enhanced fork of MicroEmulator for Android.
JL-Mod — is an enhaced fork of J2ME Loader with the Mascot Capsule 3D API support.

iOS

MicroEmulator has been ported to iOS, but it requires to use iOS jailbreaking technique to install it on iPhone or other iOS device.

Mac OS

MicroEmulator officially supports Mac OS, but there is also package in MacPorts repository.

Maemo

MicroEmulator has an official support for Maemo platform, and there is custom MicroEmulator devices skins made for Nokia N900.
Here is a command to launch MicroEmulator on Maemo with JSR 75 lib loaded, to grant MIDlets file system access:microemulator -libraryjars /opt/maemo/usr/share/microemulator/lib/microemu-jsr-75.jar

MeeGo/Harmattan

KarinME — is a MicroEmulator front-end launcher for MeeGo/Harmattan platform, with a GUI written in QML.

mpowerplayer SDK

mpowerplayer SDK — is a freeware enhanced fork of MicroEmulator, initially created for MacOS as J2ME MIDP 1.0 emulator, later become a platform independed J2ME MIDP 2.0 emulator with own implementation of M3G and SVG.
WMA has been implemented for mpowerplayer SDK as an open-source library.
Development stalled after mpowerplayer SDK version 2.0.1185 release in 2007. ZIP of latest distribution package available for download from archived official website on Wayback Machine.

Usage

MicroEmulator as Opera Mini sandbox

  • Web applet with Opera Mini MIDlet running inside MicroEmulator has been placed on Opera official website.
  • MicroEmulator used together with Opera Mini MIDlet to browse Internet via metered networks and slow mobile GPRS connection on netbooks, low-end PCs and other mobile devices.
  • In some countries mobile network operators provided free traffic or very lowcost plan with unlimited traffic for Opera Mini and some social networks and services via its J2ME clients. Use of MicroEmulator together with Opera Mini or other app with free traffic plan allowed to browse Internet fully free on PC at home or on netbook on the go.

    MicroEmulator as J2ME SDK

  • MicroEmulator, together with few MIDlets for programming directly on phone, could be used as a fully complete J2ME SDK: it is possible to write MIDlet source code, compile and preverify Java class files, package all files and resources of MIDlet project into JAR with JAD, and then run built MIDlet for test and debug without even leaving MicroEmulator window. The only external dependency is a JVM installed on PC or device to run Microemulator itself.
  • MicroEmulator could be used as alternative to Sun's and Oracle's JavaME emulators for various desktop Java IDE's. For Eclipse, there was initially an open source bridge plugin known as EclipseME, but Eclipse 1.7 and onward got its own bridge plugin.
  • MicroEmulator available as org.microemu plugin for Apache Maven build automation tool.

    Publications

  • Video

  • Alan Bazan.