I have been threatening to do JavaME development for quite some time now, and finally took the plunge. The main thing holding me back was a good idea.
All I can say is, "Thank God all the tools are free!"
Now that the rant is over, let me just say that the unskilled masses should just stay home, and leave mobile application development to actual professionals.
Not sure if I'm offending you? Take this quick quiz, and be brutally honest with yourself:
- Not expert at starting and keeping synchronized many threads? Don't know about race conditions and deadlock? You're building a piece-of-crap then.
- Not good at minimizing asynchronous contexts (e.g. various
Listener interface implementations)? I'd hate to be using your location-based MIDlet.
- Don't decouple presentation and "business" logic? Good luck keeping things maintained.
- Like to implement all your application logic right in the
CommandListener.command()? You're building a big, user-annoying piece-of-crap!
- Don't like to handle exceptions? Good luck making users confirm every security prompt you ever trigger.
This can be generalized of course. However, the effects of piece-of-crap syndrome are acutely presented in the constrained mobile environment.
Hey, it still sounds like ranting to me....
Yes, don't get me started on all the newbies clogging the JavaME forums with their "I need to do X; please post full source code". First off, how do these skilless people (no excuse for not using Google to find tutorials; I did, and there are tons of them!) get into the position of being responsible for such things? Second off, Get a life (preferably in another field) and leave the real work to the skilled.
Perhaps the scariest aspect of JavaME is that I started building without a unit test framework firmly in place. Not that there aren't any; I just fell into the trap of wanting something working, putting years of experience to the test (pun intented) on this one.
Here are some pointers for you, if you insist on moving forward:
- Use the Sun WTK as your first-line debugging environment. It installs and works out-of-the-box.
- If you use Eclipse, definately install the EclipseME plugin. This plugin uses Antenna for WTK build tasks, so make sure to download that too.
- Run your stuff on as many emulators as you can possibly find! I hate to break your bubble, but this is just another case of "Run Once, Test Everywhere". The Nokia S60 3rd-Edition emulator is sweet; other OEMs have emulators too. Especially download the one that goes with your personal mobile device.
With all that said, my MIDlet uses a plug-in architecture, is fully asynchronous, and multi-threaded like a mofo!
What an elitist bunch of crap!
Damned fucking-ay right!