Having said that, it doesn't really matter if you didn't like it. It was a pretty big part of the J2ME ecosystem at the time and it's a huge omission.
I was a pretty poor CS student, in hindsight I'm surprised I got it to work.
J2ME gets a lot of stick, but modern mobile has actually recreated almost all the same problems. The big one for apps was the out of the box UI components were awful and utterly inconsistent between manufacturers. Several of the above companies tackled this (think conceptually like Flutter), but the market wasn't ready largely because data plans were expensive.
For games though, honestly, J2ME was dreadful, but in non-obvious ways: the control interfaces were hopeless, and sound was basically a non starter. People would be willing to forgive a lot more had the controls and sound been decent. Then the graphics stuff was just inconsistent enough that too much time ended up focused on portability and not enough on if the game was actually as fun as it should be. A consequence of that is most of the best J2ME games were ports from other systems or shameless reskins of other things.
That said there is something to be said about taking a tube/metro/bus and seeing people playing stuff you did and enjoying it, especially given back then it was impossible to know who the players really were since things were sold through the carriers.
mooreds•1h ago
I used j2me in the early 2000s to make a mobile app where people could find home data. My first startup experience. Learned a lot but didn't earn a lot.
Wrote a paper about MIDP here: https://www.mooreds.com/midp/midp.html . No idea if it is still relevant 20 years on.
catstor•1h ago
Thanks for the paper as well. It explains concepts very clearly with a real-life problem statement. Added it to Awesome J2ME.