J2ME-Loader: J2ME emulator for Android devices
J2ME-Loader is an Android emulator for J2ME applications, supporting 2D and 3D games, featuring a virtual keyboard, individual settings, and compatibility with Android 4.0+. It offers community support.
Read original articleJ2ME-Loader is an emulator designed for running J2ME applications and games on Android devices, supporting both 2D and 3D games, including those utilizing Mascot Capsule 3D. Key features of the emulator include a virtual keyboard, individual settings for each application, scaling support, and compatibility with Android versions 4.0 and above. The project provides a list of tested Java games for both touchscreen and non-touchscreen devices, along with information on games that may have bugs. Users are advised to disable filtering for improved performance and to enable "Immediate processing mode" to address image flickering issues. J2ME-Loader is available for download on the Play Store and F-Droid, and it has an active community on platforms like Discord and XDA-Developers. The project is licensed under the Apache License, Version 2.0, and further details can be found on its GitHub page.
- J2ME-Loader allows running J2ME games on Android devices.
- It supports both 2D and 3D games, including Mascot Capsule 3D.
- The emulator features a virtual keyboard and individual app settings.
- Compatibility is ensured for Android 4.0 and above.
- Users can find tested Java games and community support online.
By far the most annoying aspect of J2ME were the jar size limits at the lower end, meaning to squeeze every byte (and this was real) you had to reduce the number of classes in the jar. Around 4-5 was typical. For many of the games on that page you'd be looking at 1 class of about 30000 lines, and a few others for device type specific abstractions, for example, maybe Sprite routines using Nokia DirectGraphics. This made teamwork on these games an absolute nightmare, especially in a pre-Git source code management era. (CVS/SVN/P4 were not exactly designed for working like that).
Later on there were some incredibly good studio specific optimization tools that handled transformations automatically, and outperformed humans, but these came into play exactly as iOS absolutely exploded.
They mention Mascot Capsule, which was a reasonably successful proprietary 3D engine pre-bundled on some devices. The other was the "standard" JSR 184, and I worked with at least two separate dev studios that had each implemented that in OpenGLES/C++ so that porting their 3D titles from J2ME to iOS/Brew could be reduced to an almost copy/paste business. This lasted maybe about two years before bothering with J2ME output was abandoned, but a side effect is the scene graphs for a lot of old iOS "premium" games look a lot like the one in JSR 184.
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.
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...
The Java it supported was very old fashioned, with no generics. Which was a pain at times.
https://www.mobilephonemuseum.com/phone-detail/vodafone-gx10
Does anybody here know how it works at a high level? Does it implement a JVM, or is the bytecode recompiled to target Android’s Dalvik?
Fishlabs games, Attack Chopper, various Gameloft games...