A very new tool/platform is Codename One which has origins in LWUIT used to provide a contemporary UI on standard Java ME feature phones. Some of the LWUIT team have adapted it to work cross-platform allowing code to be written once in Java and work on iPhone, Android, Blackberry, Windows Phone 7 as well as J2ME devices.
Some features (from their blog)…
- Full access to the underlying OS including embedding native components in place.
- A Swing like API geared for mobile devices with support for IO, GPS, Media/Camera etc.
- Native Themes – Codename One ships with native device themes that are implicitly set to a project to ease the integration with the native OS.
- NetBeans/Eclipse plugins.
- Simulator environment – Codename One provides a fast, easy to use and flexible simulator environment.
- Codename One Designer – cloud service to seamlessly build your applications for free. You can also compile locally and avoid the cloud service entirely but need a Mac for iPhone builds and Windows for RIM/Windows Phone 7 builds.
- Cloud services – Codename One offers cloud services ranging from crash protection to on device debugging and access to web services, push notification and location.
While I haven’t used it yet because it’s still in beta, Codename One seems to have potential. I read in the FAQ that the Java API is CLDC 1.1 which is going to be limiting. I also wonder how the UI will adapt to say iOS vs Android idioms. For example, placement of tabs and rendering of lists which needs to be in native-like ways for an acceptable look and feel. Too many existing tools are encumbered by strange subscription licensing and I like Codename One’s free model. However, I question who will actually fund ongoing development as mobile platform APIs evolve and Codename One needs to keep up to date.
There’s lots more information on the Codename One blog.