What Is Codename One?
Codename One is a free open source solution that allows you to rapidly build native applications to all mobile devices using Java(tm) & optionally a GUI builder. The framework provides full access to the underlying native platform while still providing remarkable portability.
Codename One consists of a Client Library, IDE plugin, Designer tool (GUI builder, theme designer, localization editor etc.), Simulator environment, Build servers & cloud provisioning services.
Do I Need A Mac To Build Or Test An iOS (iPhone) Application?
No. However, you might need a Mac to get a p12 certificate from Apple and you will need a Mac to upload the resulting application to the app store.
You can try using a service such as Mac In Cloud to perform the small tasks for which you might require a Mac. We have paid services in which our engineers help with such tasks to ease that pain as well.
How performant is Codename One? How does its performance compare to Native/HTML5?
Codename One is fast. Simple benchmarks show it beating Objective-C and approaching C performance on iOS on other platforms Codename One uses the native VM where possible to achieve similar results. Graphics rendering is implemented with the gaming API's (e.g. OpenGL) hence providing game like performance. In the new Codename One VM we also implemented a non-blocking concurrent GC which completely eliminates any GC stalls.
How much memory does Codename One take?
Codename One can be very efficient and is able to run on devices with as little as 2mb of RAM. Notice that since Java is a GC'd language tools such as memory monitors might misrepresent the actual memory being used.
Will Apple Allow This? Doesn't their EULA (End User License Agreement) Prohibit Things Like This?
That's old news. Apple revisited their EULA and now allows tools such as Flash, Lua and other languages/meta-platforms on the device as long as the applications comply with the iOS store guidelines. This means you as developers would need to work hard to create high quality applications and test them on the devices to see they behave properly but you do not need to code them manually in Objective-C.
There are plenty of Codename One apps in the store (check out the gallery linked in the home page for a small sample).
Do I have To Use the Cloud Services? Can I build Offline?
You don't have to use the cloud service but this introduces a lot of pain into the process which is why we don't provide official support for offline builds.
We provide a corporate server solution designed for corporations with strict data/code constraints, this allows you to install the Codename One cloud servers within your corporate firewall and never interact with our cloud. You can learn more about it here.
If the corporate server is outside of your reach you can build offline but its a painful process, please note that we do not provide community support for offline building due to the complexity of the process and the support overhead. We only provide such support for Enterprise grade customers, however plenty of resources exist on the internet for offline building of Codename One. For more details on community members who were able to build offline check out the work from Eric & Steve. We would suggest you re-examine the reasons for your desire to build offline since Codename One provides full access to native code an %99.999 uptime. You can develop offline with the simulator when you are traveling and only need the cloud for device builds.
Is Codename One Free For Commercial Use?
Yes! No royalties, ads or any such limitation exists!
To avoid abuse free users are limited to 100 build credits every month, notice that while a normal build takes 1 credit and iOS build takes 8 (due to the cost of hosting Macs in the cloud).
The project is entirely open source so placing unfair stipulations is something we will never do.
Notice that there are pro only features that are entirely optional that do cost money, but the basic core is free to use.
Is My Source Code Sent To The Cloud?
We only send compiled bytecode to the cloud and process that bytecode. We don't touch your source code.

There is a special case with native code which must be sent in source code form since it can't be compiled on the client e.g. Objective-C code can only be compiled on a Mac with XCode.

All communications with our servers are done securly over SSL.
What features of Java are supported? What features of Java aren't supported?
The most obvious thing missing is reflections. The main problem is that when we package the VM into devices that don't have Java we would have to include EVERYTHING. If reflections were included, they wouldn't work anyway since we obfuscate the code for the platforms where reflections do work (e.g. Android). On top of that reflection code is generally slow and a bad idea on a mobile device to begin with. As an alternative some developers were successful with bytecode manipulation which is something that is completely seamless to the server and as performant/efficient as handcoding.
Many of the desktop API's such as java.net, java.io.File etc. aren't very appropriate for mobile devices and just didn't make it. We provide our own alternatives which are more portable and better suited for mobile settings.
Of the other missing things if you run into a missing method or ability there are cases where that functionality can be added.
Can I use 3rd Party Libraries With Codename One? Can I Add External Library JAR's To The Classpath?
Yes and no. You need to use a special Codename One library format since we need the compilation to happen in a very specific way. Read more about this here
The big advantage of cn1libs is that you can write native code in them as well if you wish, that means you can write Objective-C code for iOS and Java (Dalvik) code for Android and have it all work seamlessly. There are already quite a few cn1libs written by both Codename One and the community, check out a partial list here.
Can I Use Other JVM Languages Such as Scala, JRuby, Jython etc.?
Steve Hannah has built a plugin to support Mirah on Codename One. Mirah is very similar to Ruby without some of the elements that make it hard to optimize. Mirah is a compiled language so this work was easier (and Scala might be too) however this would require some work since Codename One doesn't support the full Java language specification and probably won't support things such as reflection etc. to keep the size small and efficient. We intend to support all of the above in the future as the product matures by porting their environments and adapting it to mobile.
Are all iOS devices supported?
All iPads are supported, iPhones starting with 3GS and OS 4.3 or newer are required due to limitations from Apple (Apple dropped support for Arm6 on newer versions of xcode & requires new versions to support the iPhone 5).
At this time we don't yet support Apple TV or Watch due to lack of demand although both should be possible.
Is the BlackBerry Playbook Supported?
Not officially but Android applications produced by Codename One seem to work well on the Playbook. You need to convert them to Playbook applications using this tool from RIM.
Who is behind Codename One?
Check out our team section. Codename One was started by ex-Sun guys who have been working together for 15 years on mobile development tools.
Are you hiring?
We are mostly looking for sales and marketing guys. Occasionally we might hire community members with exceptional abilities.
What happens if you go bankrupt or get purchased?
Since we are an open source company you would still be able to build your code see our answer to "Do I have To Use the Cloud Services?". Enterprise developers get additional help both in building offline and in the SLA which provides an option for a source code escrow contract. The escrow contract provides access to the full Codename One server source code in case of insolvency or inability to provide its service. The SLA defines the service guarantees made by Codename One to enterprise licensees.
Can I build more than one app?
There are no limits on the number of apps or number of users! Our pricing is per developer seat.
How many licenses do I need?
One per every developer on your team that is working with Codename One?
Notice that all licenses within the organization must be of the same subscription level and every developer needs a license.
Can I purchase a basic license for one developer in my team and an enterprise license for another?
No. All licenses within the organization must be of the same subscription level and every developer needs a license.
We find that additional developers start routing support requests through the paid account making the complexity of supporting the enterprise/pro account within the org much higher.
If we end development with Codename One but still have an app in the store do we still need to pay?
Only if you use push/cloud services/crash protection or other cloud features. If you don't use the runtime cloud services the application will work without the cloud regardless of your subscription status. Notice that the developer documentation highlights such services as cloud services and they are always limited to pro subscriptions or higher.
Do you offer academic licenses?
The base version of Codename One was designed to be sufficient for the needs of academic/research work so there is no need for academic specific licenses.
What are the quotas for cloud/push services?
Cloud storage is divided into two distinct services: File storage and Object storage where quotas to pro and enterprise vary. The quotas contain a hard limit that can be exceeded only with a personal contract with Codename One. The limit for pro accounts is 100mb of cloud file storage and 2 million objects. For an enterprise account the limit is set at 20 million cloud objects and 10gb of storage.
Can I download the sources generated by the server?
Paid subscribers can download the sources generated by the server. However, sources are only generated for Android/iOS & Windows Phone. On J2ME/Blackberry there are no sources generated and the work is performed entirely on the bytecode level.
What is the license of the Codename One Source Code? Can I use the source code commercially?
The Codename One source code is licensed under the GPL with Classpath Exception, the classpath exception clause allows you to package binaries generated by the code into your application. You don't need to open source your own code as a result, the only major requirement is that you contribute your changes to Codename One back or "make them available".
This allows you to build propriatery applications with Codename One, if you change the Codename One source code you need to contribute your changes back.
Can I contribute code to Codename One?
We are always happy to receive code contributions. The best way is to just open an issue in the issue tracker with your suggested changes. If you have a great deal of code you can make a contribution via the incubator project. You need to ask us on the forum to get access to the incubator project, notice that it is not open to everyone and only active community members will receive access.
I have a problem with Codename One what should I do?
Check the issue tracker & ask us in the discussion forum. You can also post questions on StackOverflow and tag them as codenameone.
My background color isn't set correctly in the style?
Make sure you applied it to the correct style (notice there are selected/unselectd, pressed and disabled). Make sure you set transparency to 255 (it applies only to colors). Check that you don't have a border overriding the component display, defined the border as Empty.
You can also define the background type as null or NONE in the designer in order to guarantee the color will be displayed.
What is the EDT? (Event Dispatch Thread)
The Codename One UI is single threaded and dispatches all events via a single thread. Blocking this thread in a long running operation or accessing Codename One's UI in another thread are both highly problematic! We have a tool help detect EDT violations in the Codename One simulator. To learn more about the EDT please read the Codename One developer guide as well as these two articles: Part 1 & Part 2.
I'm sending a build to the server and getting an exception when doing this, is the build server down?
If you get an error when sending a build then you failed to connect to our App Engine server which is hosted on Google's hardware, Google has very good uptime so this is probably not the problem. Make sure you can connect to the server itself which you can see at https://codename-one.appspot.com/, make sure you still have build credits left if you have a free account (they are ignored in paid accounts).
If you are behind a firewall/proxy make sure that the Java VM (through the Java preferences panel) has the same configuration as your browser. Make sure this is set for all the VM's installed on your machine. Also verify that you are using a VPN correctly if you are in a country that blocks access to Google.