I remember from the early 2000s you could get railway time tables from the German railways for your selected pair of stations as a midlet. That was truly useful.
I also used a mobile browser frontend. The data was rendered by the backend and transferred in compressed form. That was very usable at 2G speeds. Of course JavaScript was rare at the time. But I don't think the product was any commercial success.
Of cause their were (mostly toy) games. But in general the technology was probably 10+ years too early for the market.
The Java it supported was very old fashioned, with no generics. Which was a pain at times.
https://engineering.fb.com/2016/07/13/android/the-mobile-dev...
https://www.mobilephonemuseum.com/phone-detail/vodafone-gx10
I got super interested with these in high school, because I finally got a Nokia N73 and that phone had the best and most complete J2ME implementation.
But I only had a netbook (atom cpu, 1gb ram, rotational hard disk) so I ended up coding J2ME using Emacs, a poorly written ant buildfile (due to my poor understanding of Ant) and the J2ME javadoc in a browser.
Those were the times, for me.
Oh to be young again...