What do you like best?
The main feature is its simplicity (for us - developers).
It is open source. (project in Github)
The learning curve for java developers that know "Swing Components" has a positive exponential form. The visual components of CodeNameOne were implemented using same abstraction that comes from Java Swing Components. They aren't Swing components, but we work with them using similar way of thinking visual logic.
We need only IDE + Codenameone plugin. No SDK installations - this fact saves a lot of time and headaches.
There are plugins for the main java-IDEs in the market (NetBeans, Eclipse e IntelliJ)
CodeNameOne Builds packages for several platforms:
Windows Desktop (.exe)
Mac xOS Desktop (dmg).
You can call/write native code if necessary.
There are several free extensions (we can download and add in our projects), like Sales Force SDK integration , Google Native Maps, Bouncy Castle - Encryption/Security API, etc...
CodenameOne uses Java as programming language, but the generated package is completely rewritten in native language of target platform.
In iOS for example, the build package is in Objective-C language.
All builds for all platforms are available by cloud services launched directly from IDE. (One Click)
After few seconds you can access your requested-build from codenameone's site.
(QR code and link are generated)
It also comes with useful tools: (all of them inside codenameone plugin)
1. Graphical UI Builder (But you can code all apps using direct programming - text files .java with java code)
2. Devices Simulators (Skins for main devices on the market)
3. Location Simulator.
Excellent technical staff and team.
Good documentation, videos, webinars,....
What do you dislike?
1) Still the code must be written in Java 5. (migration for java 8 is in progress)
Updated at 09/14/2016:
Obs: Java 8 migration was completed successful a few months ago.
Now, It's possible to use Java 8 in Codename One projects.
2) In my opinion, The Graphical UI Builder is for small projects.
When project's complexity grows, editing one big file with all event handles inside it is extremely uncomfortable.
In my project I didn't use Graphical UI Builder, I coded my UI programatically in Java.
Fortunately, It is very easy to do this in CodeNameOne.
I recommend to do this.
3) The default visual themes is very primitive. But CodeNameOne offers us several resources to improve that.
Recommendations to others considering the product
There are a lot of frameworks that aim build hybrid Mobile Applications.
All of them have positive and negative points.
CodeNameOne isn't different.
But, CodeNameOne offered me a collection of features that made possible to overcome all challenges that I am facing with my project. I described in other section of this report. (What business problems are you solving? What benefits have you realized?)
What business problems are you solving with the product? What benefits have you realized?
I written a mobile version of an Medical Record System (ERP for Health System)
I needed overcome several challenges that legacy system put in my path.
Some unusual features were requested from client.
I had to make an app that runs as an native-app, but in some specific points
as a web-app. Bidirectional comunication between those two worlds and each one of them with the server.
CodeNameOne offered all resources that I needed to accomplish my goals.
I wrote a custom WebComponent with a Bridge that allows communication between 2 worlds.
The infrastructure of Codenameone handed me all resources to perform that task.