I've been a zone leader with DZone since 2008, and I'm crazy about community. Every day I get to work with the best that JavaScript, HTML5, Android and iOS has to offer, creating apps that truly make at difference, as principal front-end architect at Avego. James is a DZone Zone Leader and has posted 639 posts at DZone. You can read more from them at their website. View Full User Profile

DZone Startup Series: Native Mobile Apps in Java With Codename One

08.26.2012
| 4159 views |
  • submit to reddit

The DZone Startup Series focuses on companies that are using Java at the core of their to power their startup. Want to find out what drives these startups, and what happens behind the scenes? You’ve come to the right place.

We continue the series today with Tel Aviv startup, Codename One who have created a platform that allows you to create native applications for iOS, Android, Windows Phone and Blackberry devices using Java.

I spoke with Shai Almong, CEO and co-founders of the company, who has been developing in Java since 1996. In 1999, Shai’s consultancy worked with a lot of companies, including Sun Microsytems. His company created solutions based on mobile Java at the time, with DoCoMo and multiple operators and device manufacturers, such as Nokia.

Shai setup the company with his childhood friend, Chen, who built LWUIT at Sun which saw tremendous traction in the shrinking J2ME market.  The last five years have seen the pair working on LWUIT to bring the smartphone experience to all users.

Based in Tel Aviv, Shai remarks that "every other guy around here is founding a startup program of some sort".

Their advice to any wannabe startups: "Make sure you really believe in it and have very thick skin."

The Seeds Of  A Great Idea

While working at Sun, Shai and Chen were forced to work on feature phones, while major companies were already adopting LWUIT for use on smartphones. The pair decided that they could be create a more powerful, simpler solution compared to anything else on the market if they worked outside of Sun.  With no one UI technology available for use across the smartphone market, which was really taking off at the time, they decided to solve the problem that would haunt all mobile developers.

Turning the idea into a company was a matter of a few months since a lot of the infrastructure is already there in the open source (we are an open source company)  so we worked like mad but we had a good starting point. It was important for us to launch fast since you get the good feedback/direction only when you are actually out, this is doubly true for an open source product.

 

A Market With Great Potential

The app development market is huge at the moment, but as with all big opportunities, there are lots of other players out there.  Most options for native, cross platform applications use JavaScript or Ruby. Codename One have put their money on Java as the language that most developers would prefer to use.

The idea of writing in Java for the iPhone etc. and getting WORA on devices really excited both of us. We were sure it will sell itself on merit alone.

We see alot of excitement from our community but getting people to actually try the tools and provide feedback is hard. Even with free/open source tools people seem to have been burned too much by such tools.


Java’s maturity is of huge help here, as the team have plugins for both Eclipse and NetBeans.  While the company is seeing use from a global market, there is a bias toward BRIC countries due to Shai and Chen’s roots in J2ME.

Behind The Scenes

The multi-tier architecture at Codename One uses Google App Engine. They found an interesting way to get around some deployment scenarios in their build farm

Our build farm includes redundant dedicated machines that connect to the cloud to perform tasks offline. This provides us with the redundancy and the Google level of scalability.

We had a couple of issues with power outages and networking in our build farm since it is currently not co-located. We intend to geographically distribute the build farm as our following grows.

We deploy to the build farm using dropbox which seamlessly updates all the servers using a script. We started thinking up a complex server based deployment scenario and suddenly we thought about dropbox... problem solved!


Utilizing Eclipse and NetBeans update mechanisms makes it simple for the team to distribute updates:

We also have IDE update centers for Eclipse/NetBeans as well as downloads hosted through dropbox which makes uploading updates trivial. The only downside is that we don't have any way of knowing the numbers for the downloads.


It seems like the solution will be evolving over the next few releases:

We are constantly building more into our solution including push notifications, crash protection, on device debugging etc. We plan to add more Java API's and features as well as additional languages. We are updating the product on a weekly basis with multiple features and changes.

With customers like Intel, Nokia, Samsung and Vodafone, Codename One is becoming an important name in the industy. See what you can do with their tools in this short promo video: