Open Source & Free  

FAQ

You can check out a more technical FAQ at StackOverflow.

  • General
  • Technical
  • Company & Team

Codename One allows Java developers to write their mobile apps using Java. It generates native OS binaries that you can upload to Apple/Google etc.

 

To understand how Codename One works, check the introduction or this stackoverflow answer.

Yes. Codename One is open source and free for use commercially and non-commercially with no royalties or restrictions.


You can use the optional build service which is available in a free quota. This service makes building apps simpler and also lets developers on Windows/Linux build native iOS apps. Notice that the JavaScript port is closed source.

Check out the pricing page for more details.

Notice that these only apply to the build cloud which is 100% optional.

 

You are limited to 100 build credits per month. 1 build credit equals 1 build, except for iOS where 8 credits are spent per 1 build to offset the higher costs of Mac servers.

 

Other than that, there is a JAR size limit of 1mb. Notice that this is a very high limit as it applies only to your bytcode and not to the overhead of the Codename One class libraries!

 

You are allowed to use your generated apps commercially and have no restrictions on them. You don’t get some of the benefits that come with the various paid grades.

You don’t if you use the build cloud which has Macs in the cloud.

 

However, Apple requires Macs for iOS development so if you use the free/open source option, you will need a Mac. The only place where you still need a Mac at this time is for store upload which at this time requires the Application Loader tool that is only available on a Mac.

 

We hope to automate that aspect too in a future update, in the meantime you can use services such as Mac In Cloud to accomplish this.

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. Codename One restricts the size of the API’s supported and can thus compile very small applications that are under 5mb in size for fully functional complex iOS applications with 64bit support.

 

See this Comparison for details.

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.

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.


One thing Apple doesn’t allow is JIT code, which means all code must be compiled before hand and things such as reflection becomes problematic.


There are plenty of Codename One apps in the store (check out the app gallery in the home page for examples) with well over 100M installs!

No! We only send compiled bytecode to the cloud and process that bytecode. We don’t touch your source code.

 

Notice you can always build offline using Maven if you’re truly concerned about this.

 

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 securely over SSL.

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.

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. We have an extensive tutorial about this here and in our developer guide.


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/ART) 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.  You can install such libraries via the extension manager tool in Codename One Settings.

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.

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. Our VM supports bitcode which is the main piece required for that support.

Codename One was started by ex-Sun guys who have been working together for 15 years on mobile development tools.

Check out our team section for more details.

Follow our Linkedin page for job postings. Occasionally we might hire community members with exceptional abilities.

Since we are an open-source company, you would still be able to build your code.


We are confident that in the worst case scenario the community will simplify the process of offline builds as developers all over the globe depend on Codename One and will need it to keep working.

 

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.