Introduction and History of Awesome J2ME

Introduction to J2ME

Java ME, also known as J2ME, is a Java specification 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 or PDAs.

About Awesome J2ME

Introducing Awesome J2MEAwesome J2ME, an Awesome list that I have been working on for more than a year. The goal of this project is to create a comprehensive resource that will be helpful to the whole community. Not only developers, video gamers, hobbyists but anyone who is interested in J2ME.

I managed to collect a diverse set of resources, and submit a pull request that passed all the checks in first try. But sadly, due to small community size, most communities being hosted on proprietary platforms, lack of resources, exams and abandonment of J2ME by Oracle, I was not able to completely fulfill my goal.

So I would like to request you to help me in achieving this goal. Pull requests are always welcome. If you can’t think of any good resource, simply sharing and giving it a star on Github is more than enough.

Thank you.

History Of Awesome J2ME

I have been observing that this page is one of the most visited page of my website. Yet it did not have any valuable content. So I have on 2025-04-03, decided to share the history behind it.

As I mention in my Short Autobiography, which I will be referencing a lot, I have been exposed to J2ME devices from the childhood. Starting from Symbian device at the age of 5, then a downgrade to non-internet phone at age 7, and starting programming at age of 12 by learning Java and so on.

But one thing which bothered me was there were not enough resources, guides on it. At the age of 6, I had compiled a list of 15 resources including related to J2ME in a notebook using Roman Numerals. I had used them just for fun, and I had recently learned about them. While it was lost, it would in future motivate to work me on Awesome J2ME. At the age of 16, I started learning more about J2ME. After I had gained basic knowledge of the ecosystem, I setup a 32 bit, airgapped Windows XP machine in Qemu. Then I tried a lot of combinations of IDE, JDK and SDKs in both XP and Linux, until I finally managed to at least run J2ME programs using official CLDC SDK on XP.

After I finally managed to run it, I started writing a list to compile the resources I have found. It was written in markdown with only purpose of being shared around in forums, chatrooms. I did not expect that one day I will be going to create Awesome J2ME that will reach this point.

After everything was done, I started reverse engineering some old J2ME software, firmware to learn more about it. While none of my reverse engineering projects were successfull, I gained lot of knowledge and added it to the list. The most I got was reverse engineering a video game, that I used to play at age 5, to remove the dependence on internet as the host server was down, but I could not get it to run afterwards, as some of resources indeed required downloading. Though I was able to extract the local ones.

Though I later stopped giving it much attention. Instead I started reverse engineering DOS(FreeDOS, DOSBox, Win 98), Win 32, and some Mac OS 9(using Sheepshaver) programs, and learning C++. I again started by trying out various reverse engineering tools and making list of debuggers which work for my use case. As I reviewed that list at time of writing this article, which was deep hidden in debuggers tar ball, I discovered that I had found some tools particularly useful, but they were not very well known. So I sent contributed by getting two od pull requests 1, 2, regarding the open source ones to Awesome DOS merged.

As seen in the screenshot below, I managed to bypass the key verification of MS Office 97 only by using Borland Turbo and Notepad in Windows XP. The reason I was using Notepad because it did not support adding comments in disassembly.

Screenshot of Windows XP in Qemu. The borland turbo is debugging MS OFFICE 97 and notepad has identified the address of key verification call

At the age of 17, I redeveloped interest in J2ME. I used my old scripts and notes to setup a development enviorment again. This time, I managed to setup with Netbeans. I was again surprised that there are still not much resources there. So after lot of editing, removing ancedotes, I on 2023-07-13, I uploaded the list of on Github as "Awesome J2ME". Using a different account than what I used inmy Fanclub, I shared this list in a small J2ME community, of which invitation link I had already added in the list beforehand. The admin apperciated it and gave it a star as well.

The star count crossed 15, then I thought of improving the list so it could be featured in the main Awesome repository. After understanding all guidelines by heart, I at the age of 17.5, started working towards it. I also shared it's link in "incubator", a dedicated ticket work in progress lists could be shared. I was exauhsted at once, so on 2024-03-27 I opened an issue titled Awesomizing the list to comply with Awesome guidelines seeking help of others, but nobody offered help. I then finally completed all by myself on 2024-04-03. Then came another requirement of reviewing atleast 2 other pull requests, I did three. On 2024-07-24, I created a pull request which passed all 33 checks in first try, and recived 2 approvals within 48 hours something extremly rare.

While the list was not accepted into main repository and ghosted, I did not give up. As I knew it was common thing. I kept working on it, promoting it on other communities.

At the time of analysis there were total 669(38 open, 631 closed) pull requests for submission of a new list. The criteria whether a pull request for submission of list is determined by presence of codeword "unicorn", which is required to be included in a sperate comment. The guidelines read To verify that you've read all the guidelines, please comment on your pull request with just the word unicorn. Query Archive.

At least 364(23 + 341) of them did not pass all the checks in the first run. This data was obtained by searching the pull requests which contain the maintainer as one of the commentor and his standard maintainer's comment "guidelines closely enough" query archive

So even with the most conservative estimates, the "rate is 54%.* This excludes the pull requests where maintainer didn't post a comment.

At the age of 18, I kept improving the list. Added lot of scientific papers. Wrote this article, shared it in other communities and accepted some contributions from others. It also got featured in multiple sources including Hackclub, Awesome Java(45K+ stars). Hackclub had organically found my project and featured it.

At the age of almost 19, I wrote this update. The star count has reached to 90 as well. Thank to whoever who gave it a star.

On 2025-04-10, I released Awesome Symbian. While J2ME can be used to create software for Symbian as well source, but I feel like it deserves it own Awesome list focused on it's own native C++/QT environment. My motivations for creating it are same as of Awesome J2ME. More information can be found on the project page.