J2ME emulators
| Developer | Sun→Oracle |
|---|---|
| Type | Cellphone / Mobile |
| Generation | 6th generation - 8th generation |
| Release date | 2000 |
| Discontinued | 2019 |
| 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 (redirects to the applicable version of the store if available and opened on a phone) and Bemobi Apps Club (store list per country). Note that not all versions of the stores continue to have the J2ME sections open.
Emulators
- If you don't want to mess with these tools, just use Kahvibreak - preservation effort for J2ME games.
| Name | Derived from... | VM | Platform(s) | Latest version | Active | License | Compatibility | Accuracy | Mascot Capsule 3D | Recommended |
|---|---|---|---|---|---|---|---|---|---|---|
| PC / x86 (Emulators) | ||||||||||
| FreeJ2ME-Plus | FreeJ2ME | Host JVM | 1.51 Nightly |
✓ | GPLv3 BSD-3-Clause |
94.93% 730 out of 769 reported titles |
High | ~[lower-alpha 1] | ✓ | |
| KEmulator nnmod / nnx64 | KEmulator 1.0.3 | Host JVM | win32 2.20 multi-platform 2.20 |
✓ | Proprietary[lower-alpha 2] | High | ✓[lower-alpha 1] | ✓ | ||
| EKA2L1 | — | KVM | Automatic CI builds | ✓ | GPLv3 (Copyleft) | Mid | ✗ | ~ (Only MIDP 1.0 - S60v1) | ||
| FreeJ2ME (fork) | FreeJ2ME | Host JVM | Releases | ✓ | GPLv3 BSD-3-Clause |
High-Mid | ✓ (impl. from JL-Mod) | ~ | ||
| SquirrelJME | — | Custom | 0.3.0 libretro core |
✓ | MPL 2.0 (Copyleft) | Aims for 100% | ✗ | ✗ | ||
| MahoLator | — | Custom | 2024.324.0 | ✗ | Proprietary[lower-alpha 3] | Mid | ✗ | ✗ | ||
| FreeJ2ME | — | Host JVM | git | ✗ | GPLv2 BSD-3-Clause |
Mid | ~[lower-alpha 1] | ✗ | ||
| KEmulator | — | Host JVM | 0.9.7 0.9.3 1.0.3 |
✗ | Proprietary | Mid | ~[lower-alpha 1] | ✗ | ||
| SJ Boy | — | — | Beta 4 Special Edition |
✗ | ✗ | Mid-Low | ✗ | ✗ | ||
| Jademula | ? | Host JVM | 0.23git | ✗ | GPLv2 (Copyleft) | Mid | ✗ | ✗ | ||
| ME4SE | ? | Host JVM | 2.2.0 | ✗ | ? | Mid | ✗ | ✗ | ||
| Pstros | ? | Host JVM | 1.5.2 1.6.1 |
✗ | Proprietary | Mid | ✗ | ✗ | ||
| MicroEmulator | — | Host JVM | 2.0.4 | ✗ | Apache 2.0 (Permissive) | Mid | ✗ | ✗ | ||
| Minisoyo | ? | ? | 0.0.2 | ✗ | Proprietary | Low | ✗ | ✗ | ||
| MidpX (NHAL Win32 Emulator) | ? | ? | 1.0.1 midp2exe |
✗ | Proprietary | Low | ✗ | ✗ | ||
| MPowerPlayer MPowerPlayer SDK |
? | ? | 2.0 Build 1185 |
✗ | Proprietary | Low | ✗ | ✗ | ||
| Midp-Emulator | ? | ? | 1.31 | ✗ | Proprietary | Low | ✗ | ✗ | ||
| GameMagic S60 | ? | ? | 1.2.1 | ✗ | Proprietary | Low | ✗ | ✗ | ||
| midp-emulator | — | Host JVM | git | ✗ | ? | Low | ✗ | ? | ||
| PC / x86 (SDKs) | ||||||||||
| Oracle Java ME SDK | — | Custom | 3.0 | ✗ | Proprietary | Mid | ✗ | ~ | ||
| Nokia SDKs | ? | ? | Part 1 Part 2 Part 3 |
✗ | Proprietary | Mid | ✗ | ~ | ||
| Sony Ericsson SDK | Oracle Java ME SDK | Custom | 2.5.0.6 Mirror |
✗ | Proprietary | Mid | ✓ | ~ | ||
| Siemens SDKs | ? | ? | Site 1 Site 2 |
✗ | Proprietary | Mid | ✗ | ~ | ||
| Motorola SDKs | ? | ? | 4.1 5.2.1 |
✗ | Proprietary | Mid | ✗ | ~ | ||
| Motorola iDEN SDK | ? | ? | Mirror | ✗ | Proprietary | Mid | ✗ | ~ | ||
| LG SDK | ? | ? | 1.5 Mirror | ✗ | Proprietary | Mid | ✗ | ~ | ||
| Samsung Java SDK | Oracle Java ME SDK | Custom | 1.2.2 Mirror | ✗ | Proprietary | Mid | ✗ | ~ | ||
| Zucotto Wireless Whiteboard SDK | ? | ? | 2.0 | ✗ | Proprietary | Low | ✗ | ✗ | ||
| Mobile / ARM | ||||||||||
| J2ME Loader | — | Host JVM (Dalvik dynarec) |
[1] |
✓ | Apache 2.0 (Permissive) | High | ✓ | ✓ | ||
| JL-Mod (JL fork) | J2ME-Loader | Host JVM (Dalvik dynarec) |
[2] |
✓ | Apache 2.0 (Permissive) | High | ✓ | ✓ | ||
| Zhixiaoyou (JL fork) | J2ME-Loader | Host JVM (Dalvik dynarec) |
1.2 | ✗ | Proprietary | Mid | ✗ | ✗ | ||
| J2ME Runner | ? | ? | 2.0.3.7 Netmite.com midp2apk |
✗ | Proprietary | Low | ✗ | ✗ | ||
| Jbed | ? | ? | 2.3.1 (Android) 2010 (WinMobile) |
✗ | Proprietary | Low | ✗ | ✗ | ||
| Jblend | ? | ? | 0.1 (Android) Full-screen (WinMobile) |
✗ | Proprietary | Low | ✗ | ✗ | ||
| Java by @shifat100 | ? | ? | KaiStore | ~ | Proprietary | Low | ✗ | ~ | ||
| Project Kava | J2meJS | ? | git | ✗ | Proprietary | Low | ✗ | ✗ | ||
| J2meJS | ? | ? | git | ✓ | Proprietary | Low | ✗ | ✗ | ||
| phoneME | ||||||||||
| SVN Dump | Reference Implementation |
KVM (Reference Implementation) |
✗ | GPLv2 (Copyleft) | Reference Implementation |
Vendor Specific | ✗ | |||
| phoneME (unofficial) | PhoneME Advanced (unofficial) |
PhoneME | |
git b168 rev20547 |
✗ | GPLv2 (Copyleft) | Low | ✗ | ✗ | |
| KarinME (Based on MicroEmu) | ? | ? | 3.0.1 | ✗ | Proprietary | Mid | ✗ | ~ | ||
| midpath4dingoo | ? | ? | 3.0 | ✗ | GPLv2 (Copyleft) | ? | ✗ | ✗ | ||
| midp4palm | ? | ? | 1.0 | ✗ | ? | ? | ✗ | ✗ | ||
| Coretek Delta java manager | ? | ? | 2006d | ✗ | Proprietary | ? | ✗ | ✗ | ||
| Esmertec Java (jeodek) | ? | ? | 20070425 build | ✗ | Proprietary | ? | ✗ | ✗ | ||
| TAO Intent Java MIDlet manager | ? | ? | 1.1 build | ✗ | Proprietary | ? | ✗ | ✗ | ||
| IBM J9 | ? | ? | 6.1.0 | ✗ | Proprietary | ? | ✗ | ✗ | ||
| Mitac JVM | ? | ? | Build | ✗ | Proprietary | ? | ✗ | ✗ | ||
| CrEme JVM | ? | ? | 4.12 | ✗ | Proprietary | ? | ✗ | ✗ | ||
| Micro Emulator (Converter) | — | Host JVM | Android Maemo |
✗ | Apache 2.0 (Permissive) | Low | ✗ | ✗ | ||
| phoneME-feature devices (unofficial) | phoneME Feature | phoneME CLDC | git | ✗ | GPLv2 (Copyleft) | Low | ✗ | ✗ | ||
| JarPlay | ? | ? | App Store | ? | ? | ? | ||||
| Consoles | ||||||||||
| PSPKVM | phoneME Feature | phoneME CLDC | 0.5.5 Final Edition git |
✗ | GPLv2 (Copyleft) | Mid | ✗ | ~ | ||
| Bittboy-J2ME | phoneME Advanced | phoneME CLDC | (Miyoo) |
git | ✗ | GPLv2 (Copyleft) | Mid | ✗ | ~ | |
| Midpath | ? | ? | git | ✓ | GPLv2 (Copyleft) | Mid | ✗ | ~ | ||
| phoneME (unofficial) | phoneME Feature | phoneME CLDC | |
git | ~ | GPLv2 (Copyleft) | Mid | ✗ | ~ | |
| Pstros-nds | ? | ? | 0.7.2 r6git | ✗ | ? | Low | ✗ | ✗ | ||
| Browser | ||||||||||
| JS2ME | ? | ? | git | ✓ | MIT (Permissive) | ? | ✗ | ? | ||
| Pluotsorbet | ? | ? | git | ✓ | GPLv2 (Copyleft) | ? | ✗ | ? | ||
| Name | Derived from... | VM | Platform(s) | Latest version | Through | Active | License | Compatibility | Accuracy | Mascot Capsule 3D | Recommended |
|---|---|---|---|---|---|---|---|---|---|---|---|
| J2ME Loader | Host JVM (Dalvik dynarec) |
[3] |
Windows/Linux: Android emulators Nintendo Switch: Switchroot |
✓ | Apache 2.0 (Permissive) | High | ✓ | ✓ | |||
| JL-Mod (JL fork) | J2ME-Loader | Host JVM (Dalvik dynarec) |
[4] |
Windows/Linux: Android emulators Nintendo Switch: Switchroot |
✓ | Apache 2.0 (Permissive) | High | ✓ | ✓ | ||
| PSPKVM | phoneME Feature | phoneME CLDC | [lower-alpha 4] |
0.5.5 Final Edition git |
Vita: Adrenaline Others: PPSSPP |
✗ | GPLv2 (Copyleft) | Mid | ✗ | ~ |
- ↑ 1.0 1.1 1.2 1.3 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
- ↑ The decompiled code used in KEmulator nnmod/nnx64 is available.
- ↑ Only the JVM source is available.
- ↑ Run J2ME apps on BlackBerry 10 - J2ME loader (and possibly PlayBook through PPSSPP)
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 Java ME 8 and MIDP, as well as numerous vendor-specific APIs such as DoJa, 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 | J2ME Loader | KEmulator nnmod | SquirrelJME | PSPKVM |
|---|---|---|---|---|---|
| Automatic DRM soft-patching | ✓ (vServ, Flexion) | ✗ | ✓ (vServ, Flexion) | ✗ | ✗ |
| Choosing APIs to enable | ✗ | ✗ | ✓ | ? | ? |
| Custom screen resolutions | ~ (Via config file) | ✓ | ✓ | ? | ? |
| Custom soundbanks/soundfonts | ✓ (SF2, GM) | ~ (DLS - JL-Mod only) | ✓ (SF2) | ? | ✗ |
| Disabling sleep calls (FPS unlock) | ✓ | ✗ | ✗ | ✗ | ✗ |
| Media ripping | ✓ | ✗ | ✓ | ✗ | ? |
| Performance limit | ✓ (1-60 FPS or uncapped) | ✓ (custom FPS or uncapped) | ✓ (1-120 FPS or uncapped) | ? | ? |
Hardware features
| Name | FreeJ2ME-Plus | J2ME Loader | KEmulator nnmod | SquirrelJME | PSPKVM |
|---|---|---|---|---|---|
| CLDC-1.1 | ✓ | ✓ | ✓ | ? | ? |
| JSR184 - Mobile 3D Graphics (M3G) API | ~ | ✓ | ✓ | ? | ? |
| JSR211 - Content Handler API | ? | ? | ~ | ? | ? |
| JSR256 - Mobile Sensor API | ✗ | ✓ | ✓ | ? | ? |
| KTF WIPI API | ✓ | ✗ | ✗ | ? | ? |
| LG MMPP API | ✓ | ? | ✓ | ? | ? |
| Mascot Capsule V3 API | ✗ | ✓ | ✓ | ? | ? |
| MIDP-2.0 | ✓ | ✓ | ✓ | ? | ? |
| Nokia In-App Payment API | ~ | ~ | ~ | ? | ? |
| Nokia UI API | ✓ | ✓ | ✓ | ? | ? |
| Samsung API | ? | ? | ? | ? | ? |
| Siemens API | ✓ | ~ | ~ | ? | ? |
| Vodafone API | ✗ | ✗ | ✓ | ? | ? |