September 18th, 2024

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 articleLink Icon
J2ME-Loader: J2ME emulator for Android devices

J2ME-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.

Link Icon 14 comments
By @fidotron - 7 months
J2ME/MIDP was a fun platform to really cut your teeth on, and performed far better than many like to claim. For example, an old colleague of mine had written a Java emulator of a Game Gear, and it ran very well on J2ME, yet Android was horrific. Curiously the MIDP implementations out of Sun were also awful, and it was Nokia and some other European VM providers that did way better.

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.

By @usr1106 - 7 months
J2ME is an unprecise term. I'd guess they mean J2ME/MIDP. The other profiles did even fly less probably.

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.

By @znpy - 7 months
Oh the memories, J2ME.

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...

By @zb3 - 7 months
Here's my fork of FreeJ2ME, the desktop equivalent with m3g/mascot capsule support: https://github.com/zb3/freej2me
By @black_knight - 7 months
J2ME was my first experience with mobile app development. It was very direct and easy to program for! But it definitely needed testing on the different devices. We had an array of different phones to test on. And some definitely had a nicer implementation than others.

The Java it supported was very old fashioned, with no generics. Which was a pain at times.

By @butz - 7 months
Very sad, that current dumbphones does not support J2ME. It is almost impossible to write own application for most recent Nokia keypad phones.
By @nevster - 7 months
I actually made money from selling a midlet via the Singtel marketplace. Not a lot but it was a good experience actually getting something to production outside of normal work.
By @thrance - 7 months
It's been installed on my phone for years, for a single purpose: show the obscure mobile version of Sid Meier's Civilization V to my friends. Seriously, this existing still blows my mind to this day.

https://www.youtube.com/watch?v=IsD6irFkY_0

By @compsciphd - 7 months
so we've had some success getting libbluray with java working on android (i.e. needed for bluray's java support), but that requires an entire jvm built for android (heavy). I've always wondered if a j2me emulator (as bluray's java spec is built on top of j2me as I understand it), would be an easier way.
By @pjmlp - 7 months
This brings back memories, as someone that start developing for mobile phones targeting Sharp GX 10 for a Vodafone competition.

https://www.mobilephonemuseum.com/phone-detail/vodafone-gx10

By @lxgr - 7 months
What a great tool!

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?

By @lormayna - 7 months
I remember one of my senior colleagues (I was just an internship) making a J2ME app to calculate who should pay the coffee for others.
By @alwyn - 7 months
Oh man I played a lot of J2ME games in the past.

Fishlabs games, Attack Chopper, various Gameloft games...

By @kamalamomala - 7 months
Oh the special hell that were JSRs. As others mentioned, buying a crapload of multi-vendor devices to deploy specific JARs in hope to cover a sizeable customer base (not games, but public transport related).