# Awesome J2ME [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)

[<img src="j2me-logo.jpg" align="right" width="100">](https://www.oracle.com/java/technologies/javameoverview.html)


> An awesome list about Java platform Micro edition[(J2ME)](https://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition). 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.

<!--lint disable double-link-->
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 <a href="https://hstsethi.vercel.app/posts/programming/awesome-j2me">this blog post</a>. Also check out [Awesome Symbian](https://github.com/hstsethi/awesome-symbian).



## Contents

- [Communities](#communities)
- [Development](#development)
   - [IDEs](#ides)
   - [SDKs](#sdks)
- [Emulators](#emulators)
- [Hardware](#hardware)
- [Native Software](#native-software)
   - [Apps](#apps)
   - [Video Games](#video-games)
- [Related Projects](#related-projects)
- [Reverse Engineering](#reverse-engineering)
   - [Decompilers](#decompilers)
- [Tutorials](#tutorials)
    - [Academic Articles](#academic-articles)



## Communities

- [HackClub Retrospect J2ME](https://retrospect.hackclub.com/j2me) - J2ME development contest by Hackclub. Features Awesome J2ME in its resources section.
- [Kahvibreak Discord](https://discord.gg/8TgbHAG) - Discord community focused on preserving J2ME games.
- [Ketai Wiki](https://keitaiwiki.com/wiki/KeitaiWiki) - Wiki dedicated to cataloging games from Japanese Feature Phones (keitai), pre-Android/iPhone mobile devices released in Japan.
- [r/J2MEGaming](https://reddit.com/r/j2megaming) - Reddit community for J2ME, Symbian, and related platforms.



## Development

- [Cibyl](https://github.com/SimonKagstrom/cibyl) - Cibyl is an environment to compile and run programs written in C, Objective-C, C++ and possibly Fortran on J2ME phones.
- [J2ME Docs](https://nikita36078.github.io/J2ME_Docs) - Documentation for J2ME and some vendor-specific APIs.
- [NN JSON](https://github.com/shinovon/NNJSON) - JSON parser for CLDC 1.1.
- [NN JSON CLDC 1.0](https://github.com/gtrxAC/discord-j2me/tree/main/src/cc/nnproject/json) - Modified version of NN JSON for CLDC 1.0.
- [J2ME Game Script Engine](https://j2megamescript.sourceforge.net/) - 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](https://archive.eclipse.org/eclipse/downloads) - Archive of all versions of Eclipse IDE.
- [NetBeans 6.1](https://archive.org/download/netbeans-olds/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](http://web.archive.org/web/20070210202710/http://www.extransit.com) - IDE and SDK for J2ME specializing in the development of internet-based applications.
- [Hecl](https://www.hecl.org) - A mobile scripting language based on Java, capable of running on J2ME-based devices.
- [J2ME Polish](https://github.com/Enough-Software/j2mepolish) - Open source, Ant-based build tool for J2ME that supports building for multiple platforms including Blackberry and Symbian.
- [MBooster](https://web.archive.org/web/20070314004015/http://innaworks.com/mBooster.html) - Optimizing suite for .jar files. Compresses images, audio, zip files, and optimizes API calls.
- [Micro Code](https://web.archive.org/web/20061225061546/http://j2me-device-db.sourceforge.net/pmwiki/index.php?n=Main.HomePage) - Cross-device development framework for J2ME. Supports more than 100 devices.
- [Sony Ericsson](https://archive.org/details/semc_java_me_cldc_sdk.2-5-0-6) - Supports various Sony Ericsson devices. Can run Mascot capsule software too.
- [Soap ME](https://dl.acm.org/doi/abs/10.1145/1462802.1462805) - SOAP-compliant Web service container that supports dynamic development.
- [Sun Java Me SDK](https://www.oracle.com/java/technologies/javame-sdk/java-me-sdk-v30.html) [mirror](https://archive.org/details/sun_java_me_sdk-3_0-win) - Successor to WTK that integrates CLDC/MIDP development.
- [Sun WTK](https://www.oracle.com/java/technologies/java-archive-downloads-javame-downloads.html#sun_java_wireless_toolkit-2.5.2_01) - Official J2ME SDK by Sun.



## Emulators

- [FreeJ2ME](https://github.com/hex007/freej2me) - J2ME emulator with LibRetro, AWT and SDL2 frontends.
- [FreeJ2ME Plus](https://github.com/TASEmulators/freej2me-plus) - Active fork of FreeJ2ME.
- [J2ME Loader](https://github.com/nikita36078/J2ME-Loader) - J2ME emulator for Android.
- [JL Mod](https://github.com/woesss/JL-Mod) - Fork of J2ME loader with Mascot capsule v3 support.
- [JS2 J2ME](https://github.com/szatkus/js2me) - J2ME emulator for Firefox OS.
- [KEmulator nnmod](https://github.com/shinovon/KEmulator) - Open source J2ME emulator in Java, based on KEmulator 1.0.3.
- [PSPKvm](https://sourceforge.net/projects/pspkvm/) - J2ME emulator for PSP.
- [SquirrelJME](https://github.com/squirreljme/squirreljme) - Java ME 8 Virtual Machine for embedded and Internet of Things devices.



## Hardware

- [Mobile Phone Museum](https://mobilephonemuseum.com/about) - Registered charity and museum for mobile phones. Currently has over 2,800 models over 250 brands.


## Native Software

### Apps

- [Discord J2ME](https://github.com/gtrxAC/discord-j2me) - Unofficial Discord client for J2ME. Utilizes a proxy server for HTTP and gateway connections.
- [Hotpants](https://github.com/baumschubser/hotpants/) - HOTP/TOTP client.
- [J2ME Emu Software](https://archive.org/details/j2me-emuSoftware) - Executables, source code of various emulators that run on J2ME.
- [Jtube](https://github.com/shinovon/JTube) - YouTube client based on Invidious API.
- [MeBoy](http://arktos.se/meboy) - Supports emulating GBC with sound, color, and save states.
- [Telegram Micro](https://github.com/faissaloo/telegram-micro) - Telegram client.
- [VK4ME](https://github.com/VK4ME/client)  - Unofficial client for Russian social network VK for devices supporting CLDC 1.1 and MIDP 2.0.

### Video Games

- [Gravity Defied CPP](https://github.com/rgimad/gravity_defied_cpp) - C++, SDL2 port of J2ME game of the same name.
- [Kahvibreak](https://bluemaxima.org/kahvibreak) - Collection of J2ME games.
- [Moby Games](https://www.mobygames.com/platform/j2me) - Database of J2ME games with links to official stores.
- [The "New" J2ME software archive](https://archive.org/details/96x65pixels_j2me) - 74GB+, sorted collection of J2ME games.
- [Nowhere Dialogues](https://gist.github.com/hstsethi/d4ef0c9f0710e5b713d1beb2ff93a1ce) - Dialogues from a Nowhere, a 2007 J2ME game, with character names reverse engineered.


## Related Projects

- [Awesome Symbian](https://github.com/hstsethi/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](https://cellphonegamespreservation.miraheze.org/wiki/Main_Page) - Wiki dedicated to phone preservation, including emulation and game dumps.
- [J2ME Fandom](https://j2me.fandom.com/wiki) - Wiki of everything related to J2ME.
- [J2ME Preservation](https://github.com/j2me-preservation/j2me-preservation) - Archive of various J2ME software.



## Reverse Engineering

- [PyLng](https://github.com/CakesTwix/pylng) - HandyGames .lng file parser written in Python.

### Decompilers

- [Fernflower](https://github.com/fesh0r/fernflower) - Analytical Java decompiler by JetBrains.
- [Jd Decompiler](https://java-decompiler.github.io) - Java decompiler with support for Java 5 and later.
- [Javadecompilers.com](https://www.javadecompilers.com) - Online Java decompiler that supports various decompilers.
- [Recaf](https://github.com/Col-E/Recaf) - Bytecode editor that supports multiple decompilers.
- [Vineflower](https://github.com/vineflower/vineflower) - Fork of Fernflower decompiler with improved output quality.



## Tutorials

- [J2ME In Nutshell](https://www.oreilly.com/library/view/j2me-in-a/059600253X) - "Solid, no-nonsense reference to the 'alphabet soup' of micro edition programming, covering the CLDC, CDC, KVM and more."
- [Revive Nokia N95](https://github.com/domib97/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](https://doi.org/10.1109/EmbeddedCom-ScalCom.2009.21) - Reviews various unit testing methods for J2ME and introduces a custom one for NetBeans.
- [Automated GUI Testing for J2ME Software Based on FSM](https://ieeexplore.ieee.org/abstract/document/5341641) - Introduces a technique for automating tests of LCDUI J2ME applications based on FSM.
- [Developing Jini applications using J2ME technology](https://dl.acm.org/doi/abs/10.5555/507165) - Book on Developing networking applications using Jini and J2ME.
- [Distributed Gaming using J2ME and XML](https://www.cs.sjsu.edu/faculty/pollett/masters/Semesters/Fall03/Rekha/CS297Report.pdf) - Writeup on creating a cross-platform using Oracle XML database for gaming.
- [Experiences of Implementing BitTorrent on Java ME Platform](https://ieeexplore.ieee.org/abstract/document/4446557) - Detailed writeup on implementing BitTorrent client on Nokia S40. Includes methodology and results.

[j2me.md Github](https://github.com/hstsethi/awesome-j2me
)
