Java and Swing has always been a strong choice where cross platform apps are required on the desktop. Advances in the JRE brought the speed up to be near on a par with native applications some time ago (despite finger pointing at poorly implemented apps) and a number of great look and feels available for swing make good looking cross platform applications a reality.
Until now though development in the mobile space has been quite fragmented. iOS has Objective C as its language of choice, Android has been Java but of course comes with a bunch of custom Android specific APIs and Windows Phone has been C#.
Now though CodenameOne allow you to create mobile apps using not just Java but even Swing. Best of all there's even a free version.
For seasoned Java devs the list of benefits is quite exciting:
- Speed approaching native C and apparently faster than Objective C
- Swing based container / component GUI model
- Not limited to CLDC (J2ME) APIs, instead a subset of the Java 5 API is available including threads (threading is notably missing from many cross platform mobile development environments)
- Lightweight components including renderers for custom UI
- A bunch of extra mobile-specific niceties like themes, transitions and animations
- If this forum chat is accurate Sockets (TCP and UDP, HTTP and HTTPS access are already supported) may be coming soon
We'll certainly be giving it a whirl and may even embark on some full scale mobile Java development.