Run classic Java ME (J2ME) games natively on iPhone & iPad.
Embedded OpenJDK Mobile · FreeJ2ME · SwiftUI · Open Source
Miami Nights: Singles in the City — gameplay on a physical iPhone
Documentation · Compatibility · Architecture · Roadmap · Source
| Feature | Status |
|---|---|
| Embedded OpenJDK Mobile | ✅ |
| FreeJ2ME Runtime | ✅ |
| Commercial MIDlets | ✅ |
| LCD Rendering | ✅ |
| Touch Input | ✅ |
| Virtual Keypad | ✅ |
| Save / Load (RMS) | ✅ |
| Multiple Launch Cycles | ✅ |
| Gameplay | ✅ |
| Silent Audio Compatibility | ✅ |
| Native Audio Playback | 🚧 In Progress |
| Compatibility Expansion | 🚧 In Progress |
Validated on:
- Physical iPhone
- Embedded OpenJDK Mobile
- FreeJ2ME
- SwiftUI frontend
Current validation
| Check | Result |
|---|---|
| Launch | ✓ |
| Menus | ✓ |
| Gameplay | ✓ |
| Save | ✓ |
| Load | ✓ |
| Dialogs | ✓ |
| Stable gameplay | ✓ |
| No crashes during manual play session | ✓ |
Remaining work
- Native MMAPI audio backend
- Compatibility expansion
Gameplay and menu — Miami Nights on device
| Preview | Caption |
|---|---|
![]() |
Miami Nights — commercial title, playable session on physical iPhone |
![]() |
Tetris — LCD rendering and virtual keypad |
![]() |
Astroids — touch + keypad input path |
| Screenshot | Caption |
|---|---|
| Library — SwiftUI game list and import | |
| Tetris — FreeJ2ME LCD surface | |
| Astroids — device capture | |
| Gryzzles — RMS / save path validation |
More captures: Screenshots
Full device recordings (MP4):
| Title | Video |
|---|---|
| Miami Nights | miami-nights.MP4 |
| Tetris | tetris.mp4 |
| Astroids | astroids.MP4 |
HTML5 playback is available on the documentation site.
SwiftUI
↓
Bridge
↓
Runtime Host
↓
Embedded OpenJDK Mobile
↓
FreeJ2ME
↓
Commercial MIDlet
Details: Architecture
- Embedded JVM (OpenJDK Mobile Zero)
- FreeJ2ME Integration
- AWT
- ImageIO
- JPEG
- FontManager
- RMS
- Commercial MIDlets
- Miami Nights gameplay
- Native MMAPI Audio
- Compatibility Database
- Controller support
- Per-game settings
- Save States
- Performance optimization
- Shader pipeline
Full plan: Roadmap
| Guide | Description |
|---|---|
| Getting Started | Install and launch a MIDlet |
| Why CoreJ2? | Vision and technical rationale |
| Architecture | Layer ownership |
| Compatibility | Device-validated matrix |
| Roadmap | Milestones and next steps |
| FAQ | Common questions |
python3 -m venv .venv-docs && source .venv-docs/bin/activate
pip install -r requirements-docs.txt
mkdocs serveOfficial assets: assets/branding/ · Guidelines
Palette: #2563EB · #60A5FA · #0B1220 · #FFFFFF · #94A3B8
🚧 Alpha · v0.9.0-alpha — commercial J2ME titles run on physical iPhone with embedded OpenJDK Mobile. Native audio playback and broader compatibility are in progress.
See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.
Application licensing: see repository terms when published.
Vendor FreeJ2ME: GPL-3.0 (Vendor/FreeJ2ME).
Brand assets: original CoreJ2 identity (see branding guidelines).
GitHub · Documentation · Roadmap · Compatibility
Copyright © CoreJ2 contributors


