J2ME emulators
| Application(s) | Embedded systems, mobile devices |
|---|---|
| Status | Inactive |
| Emulated | ✓ |
- For emulators that run on J2ME, see Emulators on J2ME.
Java Platform, Micro Edition, Java ME, Java 2 Platform, Micro Edition, or J2ME is a free cross-platform language capable of working in devices with highly reduced capabilities. It was basically Java stripped down to the bare essentials. While originally not intended for games (until its more advanced game-oriented API came), it became the de-facto market standard for cell phone gaming - due in no small part to the SDK being free and without licensing costs.
Mascot Capsule 3D is a proprietary 3D graphics engine developed by Hi Corporation. It was mostly used in Japanese cellphone devices, but it also made it overseas featured in many Sony Ericsson devices. Many developers made use of this tech to bring higher quality 3D graphics to the Sony Ericsson versions of their J2ME games.
A preservation project called Kahvibreak was focusing on collecting a database of J2ME and Mophun games, as well as on maintaining a launcher with a selection of emulators. However, the project became abandoned upon the disappearance of Kahvibreak's lead maintainer in 2022, with the emulator selection becoming outdated. In addition, the game database has raised quality concerns.
Currently, the Android-exclusive J2ME Loader is able to run most 2D and 3D (including Mascot Capsule 3D) J2ME games. On desktops, FreeJ2ME-Plus is excellent for 2D games, but there's a minority of games making use of obscure vendor-specific APIs supported only on their respective SDK tools. Given the scarcity of such tools, this list aims to comprehensively list the available ones for convenience.
While J2ME phones are not manufactured anymore, various J2ME game/app storefronts are still open and functional, operating on either a store or a subscription basis, with the two major content providers being Gameloft Store and Bemobi Apps Club. More info on them can be found in this article.
Comparison
Before editing, review the getting involved and recommended pages. See system requirements page for performance demand of the emulators.
See tables for enhancements and hardware features & peripherals.
For more details such as licensing, programming language, emulation method, visit each emulator’s dedicated page.
Standalone emulators
| Name | Platform(s) | Active? | Latest version | License | Compatibility | Accuracy | VM | Mascot Capsule 3D | Recommended | |
|---|---|---|---|---|---|---|---|---|---|---|
| PC | ||||||||||
| FreeJ2ME-based | FreeJ2ME-Plus | ✓ | 1.52 | GPLv3 BSD-3-Clause |
94.93% 730 out of 769 reported titles |
High | Host JVM | ✓ | ✓ | |
| FreeJ2ME (fork) | ✓ | Releases | GPLv3 BSD-3-Clause |
Mid | Host JVM | ✓ (impl. from JL-Mod) | ✗ | |||
| FreeJ2ME | ✓ | git | GPLv2 BSD-3-Clause |
Mid | Host JVM | ~[note 1] | ✗ | |||
| KEmulator | KEmulator nnmod / nnx64 | ✓ | 2.21.4 | Proprietary The decompiled code used in KEmulator nnmod/nnx64 is available. |
High | Host JVM | ✓[note 1] | ✓ | ||
| KEmulator | ✗ | 0.9.3 | Proprietary | Mid | Host JVM | ~[note 1] | ~ | |||
| MicroEmulator | ✗ | 2.0.4 | Apache 2.0 (Permissive) | Mid | Host JVM | ✗ | ~ | |||
| EKA2L1 | ✗ | Automatic CI builds | GPLv3 (Copyleft) | Mid | KVM (Symbian) | ✗ | ✗ (Only MIDP 1.0 - S60v1) | |||
| GameMagic S60 | ✗ | 1.2.1 | Proprietary | Low | — | ✗ | ✗ | |||
| Jademula | ✗ | 0.23 | GPLv2 (Copyleft) | Mid | Host JVM | ✗ | ✗ | |||
| MahoLator | ✗ | 2024.324.0 | Proprietary Only the JVM source is available. |
Mid | Custom | ✗ | ✗ | |||
| ME4SE | ✗ | 2.2.0 | ? | Mid | Host JVM | ✗ | ✗ | |||
| Midp-Emulator | ✗ | 1.31 | Proprietary | Low | — | ✗ | ✗ | |||
| MidpX (NHAL Win32 Emulator) | ✗ | 1.0.1 | Proprietary | Low | — | ✗ | ✗ | |||
| Minisoyo | ✗ | 0.0.2 | Proprietary | Low | — | ✗ | ✗ | |||
| MPowerPlayer
MPowerPlayer SDK |
✗ | 2.0 | Proprietary | Low | — | ✗ | ✗ | |||
| Pstros | ✗ | 1.5.2 | Proprietary | Mid | Host JVM | ✗ | ✗ | |||
| SquirrelJME | ✓ | 0.3.0 | MPL 2.0 (Copyleft) | Aims for 100% | Custom | ✗ | ✗ | |||
| SJ Boy | ✗ | Beta 4 | ✗ | Mid-Low | — | ✗ | ✗ | |||
| midp-emulator | ✗ | git | ? | Low | Host JVM | ✗ | ? | |||
| Mobile | ||||||||||
| J2ME Loader-based | J2ME Loader | ✓ | 1.8.2 | Apache 2.0 (Permissive) | High | Host JVM
(Dalvik dynarec) |
✓ | ✓ | ||
| JL-Mod (JL fork) | ✓ | 0.87.1 | Apache 2.0 (Permissive) | High | Host JVM
(Dalvik dynarec) |
✓ | ✓ | |||
| Zhixiaoyou (JL fork) | ✗ | 1.2 | Proprietary | Mid | Host JVM
(Dalvik dynarec) |
✗ | ✗ | |||
| Java by @shifat100 | ~ | KaiStore | Proprietary | Low | — | ✗ | ~ | |||
| KarinME (Based on MicroEmu) | ✗ | 3.0.1 | Proprietary | Mid | — | ✗ | ~ | |||
| Coretek Delta java manager | ✗ | 2006d | Proprietary | ? | — | ✗ | ✗ | |||
| CrEme JVM | ✗ | 4.12 | Proprietary | ? | — | ✗ | ✗ | |||
| Esmertec Java (jeodek) | ✗ | 20070425 build | Proprietary | ? | — | ✗ | ✗ | |||
| IBM J9 | ✗ | 6.1.0 | Proprietary | ? | J9 VM | ✗ | ✗ | |||
| J2ME Runner | ✗ | 2.0.3.7 | Proprietary | Low | — | ✗ | ✗ | |||
| J2meJS-based | J2meJS | ✓ | git | Proprietary | Low | — | ✗ | ✗ | ||
| Project Kava | ✗ | git | Proprietary | Low | — | ✗ | ✗ | |||
| Jbed | ✗ | 2.3.1 (Android)
2010 (WinMobile) |
Proprietary | Low | — | ✗ | ✗ | |||
| Jblend | ✗ | 0.1 (Android)
Full-screen (WinMobile) |
Proprietary | Low | — | ✗ | ✗ | |||
| Micro Emulator (Converter) | ✗ | Android | Apache 2.0 (Permissive) | Low | Host JVM | ✗ | ✗ | |||
| midp4palm | ✗ | 1.0 | ? | ? | — | ✗ | ✗ | |||
| midpath4dingoo | ✗ | 3.0 | GPLv2 (Copyleft) | ? | — | ✗ | ✗ | |||
| Mitac JVM | ✗ | Build | Proprietary | ? | — | ✗ | ✗ | |||
| PhoneME Advanced-based (unofficial) | phoneME (unofficial) | ✗ | git | GPLv2 (Copyleft) | Low | PhoneME | ✗ | ✗ | ||
| phoneME Feature-based | phoneME-feature devices (unofficial) | ✗ | git | GPLv2 (Copyleft) | Low | phoneME CLDC | ✗ | ✗ | ||
| Reference Implementation-based | SVN Dump | ✗ | GPLv2 (Copyleft) | Reference
Implementation |
KVM (Reference
Implementation) |
Vendor Specific | ✗ | |||
| TAO Intent Java MIDlet manager | ✗ | 1.1 build | Proprietary | ? | — | ✗ | ✗ | |||
| JarPlay | ? | App Store | ? | — | ? | ? | ||||
| Manic EMU | ✓ | 2.0.0 | AGPLv3 (Copyleft) | ? | ? | ? | ? | ? | ||
| phoneME | ? | ? | ? | ? | ||||||
| Console | ||||||||||
| Midpath | ✗ | git | GPLv2 (Copyleft) | Mid | — | ✗ | ~ | |||
| phoneME Advanced-based | Bittboy-J2ME | ✗ | git | GPLv2 (Copyleft) | Mid | phoneME CLDC | ✗ | ~ | ||
| phoneME Feature-based | phoneME (unofficial) | ✗ | git | GPLv2 (Copyleft) | Mid | phoneME CLDC | ✗ | ~ | ||
| PSPKVM | ✗ | 0.5.5 Final Edition | GPLv2 (Copyleft) | Mid | phoneME CLDC | ✗ | ~ | |||
| Pstros-nds | ✗ | 0.7.2 r6 | ? | Low | KVM | ✗ | ✗ | |||
| Browser | ||||||||||
| FreeJ2ME-Plus | ✓ | Website | GPLv3 BSD-3-Clause |
High-Mid | CheerpJ | ? | ~ | |||
| phoneME-based | web-j2me | ✓ | Website | ? | ? | phoneME CLDC | ? | ~ | ||
| JS2ME | ✓ | git | MIT (Permissive) | ? | — | ✗ | ? | |||
| Pluotsorbet | ✓ | git | GPLv2 (Copyleft) | ? | — | ✗ | ? | |||
SDKs
| Name | Platform(s) | Active? | Latest version | License | Compatibility | Accuracy | VM | Mascot Capsule 3D | Recommended | |
|---|---|---|---|---|---|---|---|---|---|---|
| LG SDK | ✗ | 1.5 Mirror | Proprietary | Mid | — | ✗ | ~ | |||
| Motorola SDKs | ✗ | 4.1 | Proprietary | Mid | — | ✗ | ~ | |||
| Motorola iDEN SDK | ✗ | Mirror | Proprietary | Mid | — | ✗ | ~ | |||
| Nokia SDKs | ✗ | Part 1 | Proprietary | Mid | — | ✗ | ~ | |||
| Oracle Java ME SDK-based | Oracle Java ME SDK | ✗ | 3.0 | Proprietary | Mid | KVM | ✗ | ~ | ||
| Samsung Java SDK | ✗ | 1.2.2 Mirror | Proprietary | Mid | KVM | ✗ | ~ | |||
| Sony Ericsson SDK | ✗ | 2.5.0.6 | Proprietary | Mid | KVM | ✓ | ~ | |||
| Siemens SDKs | ✗ | Site 1 | Proprietary | Mid | — | ✗ | ~ | |||
| Zucotto Wireless Whiteboard SDK | ✗ | 2.0 | Proprietary | Low | — | ✗ | ✗ | |||
Running emulators on emulators
| Name | Platform(s) | Through | Active? | Latest version | License | Compatibility | Accuracy | VM | Mascot Capsule 3D | Recommended | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| J2ME Loader-based | J2ME Loader | Windows/Linux:
Android emulators Nintendo Switch: Switchroot |
✓ | Template:J2ME LoaderVer [+] | Apache 2.0 (Permissive) | High | Host JVM
(Dalvik dynarec) |
✓ | ✓ | ||
| JL-Mod (JL fork) | Windows/Linux:
Android emulators Nintendo Switch: Switchroot |
✓ | This page is a candidate for deletion. The reason is:
If you disagree with the candidate, explain why at the talk page or improve the page and remove the Remember to check for any active links to the page and its history before deleting. |
Apache 2.0 (Permissive) | High | Host JVM
(Dalvik dynarec) |
✓ | ✓ | |||
| phoneME Feature-based | PSPKVM | Run J2ME apps on BlackBerry 10 - J2ME loader (and possibly PlayBook through PPSSPP) |
Vita: Adrenaline
Others: PPSSPP |
✗ | 0.5.5 Final Edition | GPLv2 (Copyleft) | Mid | phoneME CLDC | ✗ | ~ | |
Comparisons
- FreeJ2ME
- An open-source implementation over Java SE with a libretro core, but with less extra features than KEmulator. While the original FreeJ2ME is effectively abandoned, the fork FreeJ2ME-Plus by a former FreeJ2ME contributor made many improvements and fixes, to the point of possibly bringing 2D game compatibility on par with J2ME Loader. Preliminary M3G (Mobile 3D Graphics API) support has also been introduced as of recently.
- J2ME Loader & JL-Mod (Mascot Capsule 3D compatibility list)
- This is one of the highest compatibility J2ME emulators available. Converts
.JARfiles offline using its own resources. Easily launches both 2D & 3D apps. Supports different keyboard layouts and customization. It is highly accurate, with the right frame rate for each game, as well as vibration. Has slightly improved performance through hardware acceleration, but games won't run too fast. Supports various vendor APIs, including its own implementation of Mascot Capsule 3D. JL-Mod is a fork that's updated more frequently, with recent work being done on soundfont support and SoftBank API implementation.
- EKA2L1
- According to the documentation, supports a very limited number of J2ME games (specifically those released for Nokia s60v1) by running those on the Series 60 JVM. The firmware has to be obtained separately.
- SquirrelJME
- Unlike most J2ME emulators, which recreate the J2ME APIs on top of the host system’s Java runtime, SquirrelJME is a project that reimplements the Java Virtual Machine itself (aiming for MIDP, DoJa and Java ME 8, as well as numerous vendor-specific APIs such as JSCL, Nokia UI, WIPI, and more[1]), By taking this approach, SquirrelJME aims to provide deeper emulation with full low-level compatibility, such as accurate memory management and thread behavior, while also enabling portability to environments where no JVM is available. Under heavy development. Note that while the standalone builds are capable of running a few games as of this writing (albeit with various bugs), the libretro core is non-functional.
- KEmulator / KEmulator nnmod
- Historically has been known for being compatible and versatile compared to others, with certain versions introducing interesting features. Originally a shareware product, the original author sold it to some other entity (possibly Gameloft) in the late 2000s to then quit J2ME development. KEmulator did, however, receive an unofficial modded version (based on a decompilation) in the form of KEmulator nnmod, which has fixed many bugs of the original (including the infamous Doom II RPG save issue) and added various features, such as support for many vendor-specific APIs[2] and the ability to play SMAF (.mmf) files by copying DLLs from the MEXA emulator (Win32 version only)[3]. The latest versions of KEmulator nnmod can boast advanced features for homebrew J2ME app development.
- Nokia SDKs
- A set of different device simulators released by Nokia along with their J2ME SDKs. Keyboard bindings are not friendly for playing games. Some of them are buggy. The Nokia 3410 SDK emulator is capable of running some ancient black & white J2ME games no other emulator can.
- Sony Ericsson SDK
- J2ME implementation released by Sony Ericsson along their J2ME SDK. Includes a Mascot Capsule 3D implementation, thus usable as a J2ME Loader alternative in that regard, though the keybinds are likewise not friendly for playing games.
- Siemens SDKs
- Device simulators released by Siemens along their J2ME SDKs. Can run some older games that depend on old Siemens APIs.
- Motorola SDKs
- J2ME development kits released by Motorola. Can run some older games that depend on Motorola-specific APIs.
- Motorola iDEN SDK
- J2ME development kit released by Motorola. Can run some older games that depend on iDEN-specific APIs.
- Samsung Java SDK
- J2ME development kit released by Samsung. Can run some older games that depend on Samsung-specific APIs (Yamaha SMAF music may or may not be supported depending on version).
- LG SDK
- J2ME development kit released by LG for their devices.
- Zucotto Wireless Whiteboard SDK
- J2ME development kit released by Zucotto Wireless, provider of hardware-based Java bytecode execution solutions.
- MahoLator
- This is a newer project developing a JVM implementation of Java ME (aiming for MIDP 2.1 and below). It has shown fast progress over periods of time, and while compatibility is a mixed bag as of this writing (with no 3D support), the feature set is somewhat comparable already to that of KEmulator. Sadly, progress on the emulator has come to a halt, though it might eventually come back.
- Pstros
- Appears to have support for some obscure vendor-specific APIs that other emulators don't support.
- SJ Boy
- While it can run a few games not supported by the original KEmulator, it was made obsolete by modern emulators.
- Minisoyo
- Experimental emulator from the SJ Boy authors. Appears to properly emulate transparency on older games making use of Nokia APIs. To open a game, drag and drop the
.JARfile onto the MiniSoyo window.
- MidpX
- One of the older emulators. Fixed low resolution (176x220) and compatibility, no handler app support. The installer may contain adware.
- MPowerPlayer (MPowerPlayer SDK)
- Emulator from a company that used to develop solutions to allow users to try J2ME game demos on their computer before purchasing them. Doesn't have any known advantageous features. Requires: JRE.
- GameMagic S60
- Early attempt at a commercial J2ME and N-Gage emulator. Has no real benefits over other offerings.
- MicroEmulator
- It's a pure Java implementation of Java ME.
- J2ME Runner
- Old tool, launches J2ME Applications on Android using native library. Apps have to be converted first, using Netmite.com. Overall 2D stability is acceptable, but 3D support almost does not work. Different types of keyboard & screen stics are included. Unfortunately, often experiences troubles with .JAR conversion Here and Catalog of games for Java J2ME Runner
- Netmite.com
- This is a Android J2ME Runner so that any J2ME or MIDP applications can run without modification. Developers can enter the Android Market quickly. You can use your familiar development environment such as J2ME and MIDP or easily port your existing J2ME Application to Android with minimum code change. Users can use java applications directly inside Android. J2ME apps converted found here
- PSPKVM
- Might be the first one that's open-source. Last update was in 2011. PSPKVM is a J2ME emulator for PlayStation Portable, port of Sun's open-source JavaME implementation phoneME Feature.
- phoneME
- This is the reference implementation of J2ME made initially by Sun Microsystems, now owned by Oracle Corporation.
- phoneME (unofficial ports)
- phoneME for Windows CE/Mobile and Android is an implementation of the phoneME open source J2ME application platform for your Windows Mobile phone or Android mobile device. There are two different platforms of the phoneME Virtual machine: phoneME Feature and phoneME Advanced. Beyond precompiled binaries of these VMs for WinCE and Android based operating systems, this website provides information, patches and instructions in order to compile the phoneME sources yourself.
Enhancements
| Name | FreeJ2ME-Plus | KEmulator nnmod / nnx64 |
|---|---|---|
| Automatic DRM soft-patching | ✗ | ✓ (vServ, Flexion) |
| Choosing APIs to enable | ✗ | ✓ |
| Custom screen resolutions | ~ (Via config file) | ✓ |
| Custom soundbanks/soundfonts | ✓ (SF2, GM) | ✓ (SF2) |
| Disabling sleep calls (FPS unlock) | ✓ | ✗ |
| Media ripping | ✓ | ✓ |
| Performance limit | ✓ (1-60 FPS or uncapped) | ✓ (1-120 FPS or uncapped) |
Hardware features
| Name | FreeJ2ME-Plus | KEmulator nnmod / nnx64 |
|---|---|---|
| Nokia monophonic tone (.ota/.rng) playback support | ✓ | ~ |
| Siemens monophonic tone playback support | ✓ | ✗ |
| SMAF (.mmf) playback support | ~ Pseudo playback using MIDI. The playback quality depends on the type of SMAF. |
✓ (Win32 only) You need to copy M7_EmuSmw7.dll and M7_EmuHw.dll from the MEXA emulator.
|
| Standard MIDI file (.mid) playback support | ✓ | ✓ |
Additional APIs
| Name | FreeJ2ME-Plus | KEmulator nnmod / nnx64 | |
|---|---|---|---|
CJSP API (com.gcjsp.v10)
This is a derivative of Vodafone VSCL 1.0/1.1 API used on some devices. |
? | ✓ | |
FarEasTone FSCL API (tw.com.fareastone.v10)
This is a derivative of Vodafone VSCL 1.0/1.1 API used on some devices. |
? | ✓ | |
| j_phone | SoftBank JSCL API (com.j_phone / com.jblend) |
? | ~ |
SoftBank MEXA API (com.mexa / com.j_phone / com.jblend) |
? | ~ | |
| KDDI | KDDI EZ Appli (J) API (com.kddi.oap) |
✗ | ✗ |
KDDI ezplus API (com.kddi / com.jblend) |
✓ | ✗ | |
| KTF | KTF WIPI API (org.kwis.msf / com.ktf.kfc / wec) |
✓ | ✗ |
LG MMPP API (mmpp / com.velox) |
✓ | ✓ | |
Mascot Capsule V3 API (com.mascotcapsule.micro3d.v3) |
✓ | ✓ | |
| Microedition | JSR184 - Mobile 3D Graphics (M3G) API (javax.microedition.m3g) |
~ | ✓ |
JSR211 - Content Handler API (javax.microedition.content) |
~ | ~ | |
JSR256 - Mobile Sensor API (javax.microedition.sensor) |
✗ | ✓ | |
NEC API (com.nec) |
✗ | ~ | |
| Nokia | Nokia In-App Payment API (com.nokia.mid.payment / com.nokia.payment) |
~ | ~ |
Nokia UI API (com.nokia) |
✓ | ✓ | |
Project Capuchin API (com.sonyericsson.capuchin) |
✗ | ✗ | |
Samsung API (com.samsung.util) |
✓ | ✓ | |
| Siemens | Siemens API (com.siemens) |
~ | ~ |
Siemens S60 Game API (com.siemens.s60.lcdui.game) |
? | ✓ | |
Sprint API (com.sprintpcs) |
✓ | ✓ | |
| Vodafone | Vodafone EnhancedGraphics API (com.vodafone.extension) |
? | ? |
Vodafone VSCL 1.0/1.1 API (com.vodafone.v10) |
✓ | ✓ | |
Vodafone VSCL 2.0 API (com.vodafone) |
? | ? | |
See also
Notes
- ↑ 1.0 1.1 1.2 KEmulator nnmod has the choice between JL-Mod's implementation and iDKDoJa's software renderer, the latter also available as an addon for FreeJ2ME and the original KEmulator: 1.0.3 modded + Mascot Capsule 3D support