I’ve started to play around with the Java Mobile edition and my mobile phone.
My favourite Java IDE, Netbeans, now has this great Mobility Pack, which gets you started on mobile applications quite easily. You even get a nice graphical editor for the UI. Even better, I found directions on how to set the whole thing up for OS X, so I can now hack away on my new PowerBook whenever I feel like it. Nice.
So the nice thing about Java mobile is that it’s really easy to get started, and you can make the result run on almost any device.
It’s also an amazing engineering feat to get the whole language into the limited resource, with garbage collection, dynamic memory allocation and all. I’m still not quite sure if that’s a good idea all in all, though, and I’m a bit scared of doing object-oriented stuff like creating objects on the fly.
Despite this, the platform seems quite capable: My phone sports a little Java game with real textured 3D, and the guys at Opera even wrote a whole web browser for it.
The main problem is that the API exposes almost none of the capabilities of the actual devices (this depends a bit on whether or not some particular sub-API is implemented on the device). You get some persisten storage, networking, SMS sending capabilities and, if you’re really lucky, bluetooth. It doesn’t look like you can access the phone’s address book, calendar or other applications.
On another note, Netbeans also got nice refactoring capabilities and a desktop GUI editor which is almost as good as the one in Visual Studio 2005. And I didn’t try the profiler yet.