Hacker News new | ask | show | jobs
by joverholt 4286 days ago
I worked on some J2ME applications around 2004. While we built usable apps, it seems if you want any kind of user interface that doesn't look like crap, you need to implement it yourself. The default text fields and labels did not look nice.

Another problem was that each carrier pretty much determined what you could do, such as using GPS or network access. So one some phones it works, others it doesn't. Of course, that's assuming you can get it onto a customers phone in the first place. There were app stores, but they sucked. We used Nextel's "store", and it was not fun.

I hope the situation is better today for J2ME, since when the iPhone and Android came out, it showed the carriers that people actually do want to use their phone's full capabilities. And have an easy way to get apps onto the phone.

2 comments

There is a built-in UI framework in J2ME/MIDP: LCDUI. It's possible to make a very compact UI implementation using LCDUI. The problem is that, on some platforms, it WILL look like crap. On some, with decent fonts and a good LCDUI implementation it will look pretty good for menu/button/list UIs. But designers used to designing Web pages find it rudimentary and a design straitjacket.

I also found that among the handful of J2ME/LCDUI implementations required to cover a broad range of handset models, they all had different bugs, and I had to make a compatibility layer to smooth over these differences and bugs. BUT, nevertheless, it is possible to make a UI in single digit KBs that is portable across multiple J2ME implementations.

There was/is a great UI library for J2ME called LWUIT. It arrived pretty late, but it was very good at abstracting the differences of various J2ME platforms (i.e. differences key codes/keyboard layouts, screen sizes and such). https://lwuit.java.net/

Back then, I wrote a Twitter client app for them J2ME phones with some processing offloaded to the server, which was done in Erlang :) Ah, the times.

Its still around and became Codename One http://www.codenameone.com/ and its way better as such.
I found LCDUI practically unusable (in order to build a compelling app). Pretty much like anything else coming out of Sun after 2002.
It is awful, you want to use an alternative.
Sun and later Oracle were kind of crap at leading J2ME into the future, so basically nothing worthwhile happened after MIDP 2 in 2002 (besides vendor-specific API:s from like Nokia and Sony Ericsson). So yeah, you had to build your own UI, pixel by pixel. To me, that was the charming aspect of the platform, like with the Amiga, or with DOS stuff. :)
Only if you are looking into mobile handsets.

J2ME is used a lot in embedded systems for factory control, automotive systems, network aware measure equipment, copiers, ...

Edit: forgot to mention that in the mobile area it is actually sad, specially with Oracle pushing ADF Mobile instead. So back to C++ for multi-platform code.

Oh yeah, it was fun building our own UI that we had complete control over, so that part wasn't so bad. It was just at times, it seemed like they (carriers) didn't want you using the phone for something other than voice. What!? you want to actually send your own data, over our network? And tag it with GPS?
Which app(s) did you work on? Surely it's okay disclose this nearly a decade later? :)
I made two apps, and sadly, not many people have heard of them, since I was working for a small company at the time and we really didn't have the clout to deal with carriers or a sales force to sell. Both apps were agricultural related.

The first app was a general purpose data collection app. It was purely data driven. I could define a template on our server which defined what fields you wanted information for, the type of field (text, number, list selection, etc) and if it was geo enabled. This would be sent out to the phone, and a user could enter the information, send it up to our server and view it on a map. Doesn't sound to exciting, but you could pretty much create a template for anything, This was before google maps, so we also had to manage the shapefiles and handle displaying and rendering them on our website.

The other app was a payroll app for harvesting crews. We could set up the crew members on the server, they would get downloaded to the phone where we used a bluetooth card reader to scan them in/out. Also added some bluetooth printing.

Overall, you could be productive using J2ME. It was just all the stuff that went with getting it out to users.