The Practicality of J2ME Applications is Astounding

J2ME, or "Java 2 Platform, Micro Edition", is a revision of Java for embedded platforms. It is a subset of Java that can be used to make fairly useful applications for really cheap devices. You can do nearly everything you could normally do with regular Java. You can: draw some rectangles, circles or even bitmap graphics on those tiny LCD displays; create noise that exits out a crap quality speaker; or open up sockets to the internet.

J2ME supported devices are everywhere. According to Wikipedia there are about 2 billion, which isn't surprising since cheap devices are easy to manufacture. This opens up a huge market to those who can program in Java, but many aren't aware. In fact I'd say there is an extreme lack of J2ME applications (or at least quality ones). The only notable application, and it didn't really surprise me because this web browser is known to be everywhere, is Opera. Yes, Opera Mini to be specific. It is amazing how functional that web browser is on my LG C195N.

An LG C195N. The LCD is pretty small. Navigation is a 4 way arrow pad and a middle button. Has about 64MB of RAM.

I don't know the exact specification of hardware this is made of (and if you know more information about this device I'd absolutely love it), but damn, I wish Chromium or Firefox ran as smooth on my laptop. There is no wasted space with the UI. Pages load in about a second. Oh, and it supports JavaScript (although not sure how far along it is, I have seen some animations work). It surpasses the stock browser by far.

Sure it makes sense to maybe replace a few crappy stock applications, but does J2ME have any use outside of that? Aw yea it does. Another nice application I've installed is VNC (yes it's literally called VNC, not that original but when it's basically one of kind on the platform I guess it doesn't really matter). For those of you who don't know, VNC is a desktop sharing protocol. I can view and manipulate my desktop from this device. Again, it is amazing how functional this piece of software is, with no resource spikes, on this low end hardware. Maybe that doesn't satisfy your interests though. How about SSH access to a more powerful computer to do some "work"; starting a text editor to write some pseudo code and access it later with a FTP client (and start an FTP server on your phone); or forward all your text messages to your email? J2ME lets you do this with cheaper devices.

So what's the difference between J2ME and Android? Is there really any real reason for J2ME's existence, since Android uses Java as a part of the platform? Well the only real difference is where it appears and the support. Android has a ton of industry support behind it. J2ME doesn't even have a standard implementation; the creators of J2ME intended 3rd parties to create implementations. The great thing about this is that J2ME is easy to port, which means it's most likely to appear in more places than Android. In fact, you can run J2ME applications on Android through an emulator, thanks to there being a complete open source implementation. So not only is the J2ME platform easy to port; J2ME applications are essentially way more portable than any Android application.

J2ME offers no new functionality, but provides a much more portable, simple platform for developers. A side-effect of J2ME applications seems to be that they contain no bullshit, simply because of the platform they're being designed for. Everything is to the point. There is no screen after screen of options or convoluted user interface mechanisms. If there were, these wouldn't be easy to use at all on a tiny screen with a 4 way arrow pad.

Within the coming weeks I'm going to dive into J2ME and create an application for my phone and share the development process. I'm sure it'll be interesting.

Until then, stay awesome.


  1. > or forward all your text messages to your email? J2ME lets you do this with cheaper devices.

    Only after you pay hundreds of dollars for a code-signing certificate so that you can be in the "trusted 3rd party domain". Otherwise it will prompt you each time you use the API, which makes it kind of useless. Same thing for network connections (well, per-session prompts in that case, but still annoying).

  2. Could you provide a reference for this? I'm just curious. Maybe it's vendor-specific?...


Post a Comment

Popular Posts