Jump to content

MicroEmulator

From Alfawiki
MicroEmulator
Company typeOpen-source software project
IndustrySoftware development, Emulation
Founded2001-11
Headquarters
Platform-independent
ProductsJ2ME emulator for MIDlet applications and games

MicroEmulator (also known as MicroEMU) is an open-source, free, and platform-independent J2ME emulator that allows running MIDlet applications and games on any device equipped with a compatible JVM. Implemented entirely in Java as a J2ME runtime within J2SE, it ensures extensive platform support.

History

The inception of the MicroEmulator initiative dates back to November 2001 with its launch on SourceForge. The official 1.0 version became available on 31 March 2006. By November 2009, the project's development shifted to code.google.com, and subsequently moved to GitHub after Google discontinued the former service.

The most recent stable version, 2.0.4, was released on 10 January 2010, followed by the last preview build 3.0.0-SNAPSHOT.112 on 24 May 2013.

After 2014, ownership of MicroEMU technology transferred to All My Web Needs, which led to the removal of official documentation and executable files from the website. Nevertheless, all previously published source code and binaries remain accessible as open-source resources on SourceForge, Google Code, and GitHub, although active development has since ceased.

Features

  • Loads MIDlets from both local and remote JAD or JAR sources
  • Supports a wide range of Java APIs and JSRs, including:
    • MIDP 2.0 (JSR 118)
    • CLDC versions 1.0 (JSR 30) and 1.1 (JSR 139)
    • Generic Connection Framework API (GCF)
    • File Connection and PIM API (JSR 75)
    • Bluetooth API (JSR 82)
    • Wireless Messaging API (WMA, JSR 120)
    • Multimedia API (MMAPI, JSR 135)
    • Location API (LAPI, JSR 179)
    • Record Management System API (RMS)
    • User interface APIs such as LCDUI, Nokia, and Siemens UI
  • Platform agnostic compatibility covering systems like Linux, Mac OS, and Windows
  • Works with multiple graphical user interface frameworks including Swing and SWT
  • Facilitates input by enabling pasting from the PC clipboard into MIDlet text fields, aiding entry of case-sensitive or special characters
  • Offers control over MIDlets through virtual or physical keyboards, touchscreens, mouse gestures, scroll wheels, with customizable key mappings (refer to "Skin, screen and window size configuration")
  • Captures screencasts as animated GIF animation files
  • Integrates a Record Store Manager to monitor MIDlet system interactions with the RMS API
  • Provides a debug console for troubleshooting both MicroEmulator itself and loaded MIDlets
  • Displays the mouse pointer's position relative to MIDlet screen coordinates
  • Allows configuration of network permissions and proxy settings for connectivity
  • Supports headless operation with comprehensive command-line interface options

JSR library loading

MicroEmulator does not automatically load all JSR libraries; users must explicitly include desired libraries at launch using specific commands.

Accessing the file system

The JSR 75 library is not enabled by default, which limits MIDlet access to the file system. Enabling this functionality requires inserting an <extensions> section into the config2.xml file—typically located at ~/.microemulator/ on Linux systems—as shown below:<syntaxhighlight lang="xml"><config>

   ...
   </windows>
   <extensions>
       <extension>
           <className>org.microemu.cldc.file.FileSystem</className>
           <properties>
               <property VALUE="{path/to/folder}" NAME="fsRoot"/>
           </properties>
       </extension>
   </extensions>
   <recordStoreManager CLASS="org.microemu.app.util.FileRecordStoreManager"/>

</config></syntaxhighlight>

To launch MicroEmulator with JSR 75 support enabled on Linux, modify the execution command in microemulator.desktop as follows:<syntaxhighlight lang="bash">java -cp {path/to}/microemulator.jar:{path/to/lib}/microemu-jsr-75.jar org.microemu.app.Main</syntaxhighlight> On Windows platforms, replace colons with semicolons in the classpath specification. Additional libraries can be appended similarly within the classpath parameter.

Java Applet Integration for Web

MicroEmulator facilitates the transformation of any J2ME application into a Java applet format, allowing it to be embedded directly within web pages. This approach is frequently utilized to present applications and game demonstrations on manufacturer websites. However, it necessitates that the user's system has both JVM and Java Web Start plugins installed.

Configuration of Skins, Screens, and Window Dimensions

The emulator offers customization of its user interface through "device" skins, which can be selected under "Options > Select device...". Several predefined skins are included by default:

  • Default device — a mobile phone featuring a 176x220 color screen with antialiased fonts
  • Minimum device color — a compact phone with a 128x128 color screen and non-antialiased fonts
  • Minimum device — a small phone equipped with a 128x128 monochrome screen and non-antialiased fonts
  • Large device — a phone boasting a 240x320 color display accompanied by antialiased fonts
  • Resizable device — a color display that can be resized to fill the entire window, with antialiased fonts and an option for full-screen kiosk mode

Each skin is defined through XML configuration files that specify window dimensions, key mappings, text rendering methods, and may include graphical textures for backgrounds and animated key effects. These skins are distributed as ZIP or JAR archives, which can contain multiple device configurations.

Users can switch screen orientation between portrait and landscape modes. Additionally, the MIDlet display supports scaling at factors of x2, x3, or x4 within a floating window.

Constraints

  • MicroEmulator does not support several Java APIs and JSRs frequently employed in J2ME gaming and available in other emulators:
    • Mobile 3D Graphics API (M3G 1.0/1.1, JSR 184)
    • Scalable 2D Vector Graphics API (SVG, JSR 226)
    • Java bindings for OpenGL ES (JSR 239)
    • Mobile 3D Graphics API 2.0 (M3G 2.0, JSR 297)
    • Mascot Capsule 3D API
  • Certain MIDlets depend on additional JSRs that MicroEmulator has yet to implement.
  • Proper Cyrillic text input may require selecting a specialized "device" skin.

Android

MicroEmulator offers official compatibility with the Android platform. It also supports converting J2ME MIDlet JAR files into standalone APK applications.

An enhanced Android-based fork named J2ME Loader builds upon MicroEmulator's capabilities.

The JL-Mod project further augments J2ME Loader by incorporating support for the Mascot Capsule 3D API.

iOS

A port of MicroEmulator exists for iOS, though installation requires jailbreaking the device.

Mac OS

Official support is provided for Mac OS, with MicroEmulator accessible through the MacPorts package manager.

Maemo

The Maemo platform is officially supported by MicroEmulator. It includes customized device skins inspired by Nokia S60 smartphones with resolutions of 240x320 and 640x360 pixels, tailored specifically for the Nokia N900. This enables execution of Java MIDlets with file system access via JSR 75 APIs.

MeeGo/Harmattan

KarinME serves as a MicroEmulator front-end launcher tailored for the MeeGo/Harmattan environment, featuring a QML-based graphical user interface designed to improve user experience on these platforms.

mpowerplayer SDK

The mpowerplayer SDK is a free enhanced derivative of MicroEmulator, originally created as a J2ME MIDP 1.0 emulator for MacOS. It later transformed into a cross-platform J2ME MIDP 2.0 emulator, incorporating proprietary implementations of M3G (JSR 184) and SVG (JSR 226). Additionally, it includes an open-source WMA (JSR 120) library. Development ended with version 2.0.1185 in 2007, and the final release remains accessible through archived sources.

MicroEmulator as Opera Mini sandbox

  • The official Opera website hosted a web applet running the Opera Mini MIDlet within MicroEmulator.
  • This setup, combining MicroEmulator and Opera Mini MIDlet, allowed web browsing over metered and slow mobile GPRS connections on devices such as netbooks (e.g., Asus Eee PC), entry-level PCs, and other mobile hardware.
  • In various regions, mobile network operators provided free or affordable unlimited data plans for Opera Mini and specific social applications (including Facebook, Yandex Maps) via J2ME clients. Employing MicroEmulator with these offers enabled users to access the Internet without charge on PCs or netbooks connected through USB modems.
  • This integration supported strategic collaborations between Opera Software and network operators, facilitating expanded affordable Internet availability in developing markets and increasing Opera Mini’s user adoption.

MicroEmulator as J2ME SDK

  • Alongside several MIDlets designed for direct phone programming (such as J2ME SDK Mobile and Mobile BASIC), MicroEmulator functions as a comprehensive J2ME SDK. It supports writing MIDlet source code, compiling and preverifying Java class files, packaging all project assets into JAR with JAD files, and executing the MIDlet for testing and debugging—all within the MicroEmulator environment. The sole external dependency is a JVM installed on the PC or device to run MicroEmulator.
  • It represents an alternative to the Java ME emulators provided by Sun and Oracle across multiple desktop Java IDEs. An open source plugin named EclipseME was initially available to integrate with Eclipse, but from Eclipse version 1.7 onwards, native support for MicroEmulator integration is included via its own bridge plugin.
  • Additionally, MicroEmulator is distributed as the org.microemu plugin for the Apache Maven automation tool, streamlining Java ME development workflows.

Publications

  • J2ME Building Blocks for Mobile Devices: White Paper on KVM and the Connected, Limited Device Configuration (CLDC), Sun Microsystems, 2000
  • Stefan Haustein, ME4SE: A Pure Java Emulation of the Mobile Information Device Profile (MIDP), Siemens JavaTalks, 2004
  • Michael Kroll, J2ME Software Entwicklung und Fehlersuche, Michael Kroll Consulting & Solutions, 2007
  • Michael Smith, Browsers on the move: 2007-05 to 2008-06, W3C, 2008
  • Andre Luiz Camargos Tavares & Marco Tulio Valente, A remote display system for Java-based mobile applications, ACM Symposium on Applied Computing, 2008
  • Vipul Delwadia, RemoteME: Experiments in Thin-Client Mobile Computing, Victoria University (New Zealand), 2009
  • Robert Virkus, Mobile Developer's Guide To The Galaxy, Enough Software GmbH + Co. KG, 2009 & 2nd Edition 2009
  • David Vávra, GPS game for mobile framework Locify, Czech Technical University in Prague, 2009
  • Faranak Fotouhi-Ghazvini, Mobile Learning using Mixed Reality Games and a Conversational Paradigm, University of Bradford, 2012
  • Yogesh Padmanaban, Learning API mappings for programming platforms, Rutgers University Graduate School, 2013
  • Amruta Gokhale, Vinod Ganapathy & Yogesh Padmanaban, Inferring likely mappings between APIs, ICSE Conference Proceedings, 2013
  • Robert Virkus, Mobile Developer's Guide To The Galaxy (15th Edition), Enough Software GmbH + Co. KG, 2015
  • Cao Phong, Porting J2ME Apps to Nokia X Using J2ME Android Bridge

This compilation showcases significant scholarly works and development efforts related to Java ME technologies and mobile app development methodologies.

Video

  • Alan Bazan.

See also

References


External links