# Awesome J2ME

> An awesome list about Java platform Micro edition(J2ME). Documentation, academic papers, tutorials, communities, IDEs, SDKs, emulators, apps, video games. J2ME is a Java specification designed for old keypad phones and PDAs. MIDP is used to create Midlets, which have `.jad` or `.jar` extension, and run on platforms like old keypad phones, Symbian and PDAs. MIDP is supported till Java ME SDK 3.4.

Please give it a star(⭐) to raise awareness about J2ME community, and support the development of this project. Read about history of Awesome J2ME in this blog post. Also check out Awesome Symbian.

## Contents

- Communities
- Development
  - IDEs
  - SDKs
- Emulators
- Hardware
- Native Software
  - Apps
  - Video Games
- Related Projects
- Reverse Engineering
  - Decompilers
- Tutorials
  - Academic Articles

## Communities

- HackClub Retrospect J2ME - J2ME development contest by Hackclub. Features Awesome J2ME in its resources section.
- Kahvibreak Discord - Discord community focused on preserving J2ME games.
- Ketai Wiki - Wiki dedicated to cataloging games from Japanese Feature Phones (keitai), pre-Android/iPhone mobile devices released in Japan.
- r/J2MEGaming - Reddit community for J2ME, Symbian, and related platforms.

## Development

- Cibyl - Cibyl is an environment to compile and run programs written in C, Objective-C, C++ and possibly Fortran on J2ME phones.
- J2ME Docs - Documentation for J2ME and some vendor-specific APIs.
- NN JSON - JSON parser for CLDC 1.1.
- NN JSON CLDC 1.0 - Modified version of NN JSON for CLDC 1.0.
- J2ME Game Script Engine - A lightweight script interpreter for building flexible J2ME games, with a BASIC-like scripting language. Runs on J2SE/J2ME/Win C++ platforms; ideal for game rapid prototyping and customization.

### IDEs

- Eclipse - Archive of all versions of Eclipse IDE.
- NetBeans 6.1 - Mobility-pack, normal NetBeans and Java-ME SDK, all of them are required to set up MIDP development environment.

### SDKs

- Extra Transit Mobile Interaction Suite - IDE and SDK for J2ME specializing in the development of internet-based applications.
- Hecl - A mobile scripting language based on Java, capable of running on J2ME-based devices.
- J2ME Polish - Open source, Ant-based build tool for J2ME that supports building for multiple platforms including Blackberry and Symbian.
- MBooster - Optimizing suite for .jar files. Compresses images, audio, zip files, and optimizes API calls.
- Micro Code - Cross-device development framework for J2ME. Supports more than 100 devices.
- Sony Ericsson - Supports various Sony Ericsson devices. Can run Mascot capsule software too.
- Soap ME - SOAP-compliant Web service container that supports dynamic development.
- Sun Java Me SDK mirror - Successor to WTK that integrates CLDC/MIDP development.
- Sun WTK - Official J2ME SDK by Sun.

## Emulators

- FreeJ2ME - J2ME emulator with LibRetro, AWT and SDL2 frontends.
- FreeJ2ME Plus - Active fork of FreeJ2ME.
- J2ME Loader - J2ME emulator for Android.
- JL Mod - Fork of J2ME loader with Mascot capsule v3 support.
- JS2 J2ME - J2ME emulator for Firefox OS.
- KEmulator nnmod - Open source J2ME emulator in Java, based on KEmulator 1.0.3.
- PSPKvm - J2ME emulator for PSP.
- SquirrelJME - Java ME 8 Virtual Machine for embedded and Internet of Things devices.

## Hardware

- Mobile Phone Museum - Registered charity and museum for mobile phones. Currently has over 2,800 models over 250 brands.

## Native Software

### Apps

- Discord J2ME - Unofficial Discord client for J2ME. Utilizes a proxy server for HTTP and gateway connections.
- Hotpants - HOTP/TOTP client.
- J2ME Emu Software - Executables, source code of various emulators that run on J2ME.
- Jtube - YouTube client based on Invidious API.
- MeBoy - Supports emulating GBC with sound, color, and save states.
- Telegram Micro - Telegram client.
- VK4ME - Unofficial client for Russian social network VK for devices supporting CLDC 1.1 and MIDP 2.0.

### Video Games

- Gravity Defied CPP - C++, SDL2 port of J2ME game of the same name.
- Kahvibreak - Collection of J2ME games.
- Moby Games - Database of J2ME games with links to official stores.
- The “New” J2ME software archive - 74GB+, sorted collection of J2ME games.
- Nowhere Dialogues - Dialogues from a Nowhere, a 2007 J2ME game, with character names reverse engineered.

## Related Projects

- Awesome Symbian - An Awesome List about everything related to Symbian, a discontinued mobile OS for ARM popular in the early 2000s. It supports J2ME applications.
- Cell Phone Game Preservation Wiki - Wiki dedicated to phone preservation, including emulation and game dumps.
- J2ME Fandom - Wiki of everything related to J2ME.
- J2ME Preservation - Archive of various J2ME software.

## Reverse Engineering

- PyLng - HandyGames .lng file parser written in Python.

### Decompilers

- Fernflower - Analytical Java decompiler by JetBrains.
- Jd Decompiler - Java decompiler with support for Java 5 and later.
- Javadecompilers.com - Online Java decompiler that supports various decompilers.
- Recaf - Bytecode editor that supports multiple decompilers.
- Vineflower - Fork of Fernflower decompiler with improved output quality.

## Tutorials

- J2ME In Nutshell - “Solid, no-nonsense reference to the ‘alphabet soup’ of micro edition programming, covering the CLDC, CDC, KVM and more.”
- Revive Nokia N95 - A quick guide to revive the legacy Nokia N95 and develop for it.

### Academic Articles

- A Testing Method for Java ME Software - Reviews various unit testing methods for J2ME and introduces a custom one for NetBeans.
- Automated GUI Testing for J2ME Software Based on FSM - Introduces a technique for automating tests of LCDUI J2ME applications based on FSM.
- Developing Jini applications using J2ME technology - Book on Developing networking applications using Jini and J2ME.
- Distributed Gaming using J2ME and XML - Writeup on creating a cross-platform using Oracle XML database for gaming.
- Experiences of Implementing BitTorrent on Java ME Platform - Detailed writeup on implementing BitTorrent client on Nokia S40. Includes methodology and results.

j2me.md Github