OmniJ2ME manual

Introduction

OmniJ2ME overview.

About OmniJ2ME

OmniJ2ME is mainly built to run J2ME games smoothly on KaiOS. The PWA version was developed alongside it to make core testing easier. It may not be the main target, but it will be maintained as well.

Platform performance

KaiOS 3.0 and PWA use WebAssembly. KaiOS 2.5 uses asm.js. As a general guide, performance usually follows this order:

  • PWA: highest performance
  • KaiOS 3.0: runs most games
  • KaiOS 2.5: may have a lower frame rate

Open Settings and enable Show FPS overlay to see the actual frame rate while playing.

Compatibility

OmniJ2ME is still in development, so some games may not run correctly yet. If you find a problem, please join the Telegram group and tell us about it.

Why installation can take time

To improve performance, a JAR is precompiled into intermediate bytecode when it is installed. Its resources are also unpacked into a prepared file and saved in the local database.

On KaiOS, installation may take several tens of seconds. Please keep the app open and wait for it to finish. Starting a game mainly reads the prepared file and initializes the emulator. Depending on the game size, startup may take around 10 seconds.

After OmniJ2ME is updated, starting a game may also trigger an automatic recompilation so its bytecode stays compatible with the latest emulator core. The first startup after an update may therefore take longer than usual.

Features available on every platform

  • FPS limit: Set the maximum frame rate the game can display. A game may still run below this limit because of its own frame-rate rules or device performance.
  • Memory limit: The emulator uses a memory limit to help games run more smoothly on KaiOS. The default is 32 MB. Change it in Settings if a game needs more memory.
  • Automatic pause: By default, the game pauses when the app is no longer visible. Press OK/5 to continue when you return to the game.