Open Source & Free  

Codename One’s Build Tools

Codename One apps perform like native apps, because they are real native apps.

They are statically compiled into native binaries using the target platform’s official build tools.

On platforms that do not support Java natively, such as iOS, the app’s JVM bytecode is first transpiled into a form that the native build tools will accept. On iOS, the app’s JVM bytecode is transformed into C source code, in a real Xcode project.

On Android, since Java is supported natively, no such transformation is necessary. The app’s source code is bundled directly into an Android studio gradle project, which can be built directly using the Android SDK build tools.

The figure below shows the build process for each supported platform.

Transplantation Step

IKVM

Translate JVM bytecode to .dll

a

ded

ded

TeaVM

(Translate JVM bytecode to JavaScript source)

ded

ParparVM

(Translate JVM bytecode to C-Source)

a

Build Step

Visual Studio Project

a

Java Packager

a

Java Packager

a
a

Android Studio Gradle Project

a

Xcode Project

a

output

UWP App

(.appx)

Windows App

(.exe)

Mac app

(.app)

Progressive Web App

(.war or .html)

Android App

(.apk)

iOS App

(.ipa)

a
a
a
a

distribution

Windows App Store

Mac App Store

Google Play Store

iOS App Store

Transplantation Step

Build Step

Output

Distribution

IKVM

Translate JVM bytecode to .dll

Visual Studio Project
UWP App

(.appx)

Windows App Store

Java Packager
Windows App

(.exe)

Java Packager
Mac app

(.app)

Mac App Store

TeaVM

(Translate JVM bytecode to JavaScript source)

Progressive Web App

(.war or .html)

Android Studio Gradle Project
Android App

(.app)

Google Play Store

ParparVM

(Translate JVM bytecode to C-Source)

Xcode Project
iOS App

(.ipa)

iOS App Store

Setting up the Build Tools

You don’t need to set up any of these build tools. The Codename One Build cloud takes care of all that. If you have the IntelliJ/NetBeans/Eclipse plugin installed, you can build your Java or Kotlin project as a native mobile app with the press of a button.