CodenameOne

Write once run anywhere native mobile apps using with Java 8 or Kotlin. Supports iOS (iPhone/iPad), Android, Windows (UWP) & others

Github星跟蹤圖

Build Status

Write Once Run Anywhere Native Mobile Apps for Java and Kotlin Developers

Codename One is a mobile cross platform environment for Java and Kotlin developers. It can compile Java bytecode to native OS executables (iOS, Android, UWP etc.).
It is a complete mobile platform featuring virtual machines, simulator, design tools (visual theme/builder), IDE integrations, ports to multiple OS's and much more. It provides full access to the underlying native OS code (e.g. Objective-C, C#, Dalvik/ART) through a portable abstraction which enables 100% code reuse.

Codename One is the only platform that...

  • Has Write Once Run Anywhere support with no special hardware requirements and 100% code reuse
  • Compiles Java (or Kotlin) into native code for iOS, UWP (Universal Windows Platform), Android & even JavaScript (with seamless PWA support)
  • Is Open Source & Free with an enterprise grade commercial offering
  • Is Easy to use with 100% portable Drag & Drop GUI builder
  • Has Full access to underlying native OS capabilities using the native OS programming language (e.g. Objective-C) without compromising portability
  • Has full control over every pixel on the screen! Just override paint and draw or use a glass pane to draw anywhere...
  • Lets you use native widgets (views) and mix them with Codename One components within the same hierarchy (heavyweight/lightweight mixing)
  • Supports seamless Continuous Integration out of the box

Codename One is a mature open source project with roots dating back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced. You can learn about its history and how it works in this video.

Quick Start

There is a lot to know about Codename One, this 3 minute video gives a very concise high level view. Notice there are similar videos for Eclipse, IntelliJ/IDEA here:

Hello Codename One

Extensible

Codename One can be extended easily using 3rd party libraries that can include native OS code. There is an extensive list of these libraries (cn1libs) here. The libraries list is generated automatically based on this github project.

You can learn more about Codename One and its capabilities at the main site and you can see an extensive list of documentation and tutorials here.

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

Please notice that while we fully support IntelliJ/IDEA (both CE and Ultimate), we don't support Android Studio which diverted too much from the mainline IDE.

Quick Start

Getting and Building Sources

$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant

Running Unit Tests

$ ant test-javase

Running Samples

The Samples directory contains a growing set of sample applications. These samples aren't meant to be demos, but rather samples of how to use APIs.

You can launch the sample runner app from the command-line using:

$ ant samples

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

You can even open the resulting project in xcode and debug it or profile it directly on the iOS device. This provides a lot of useful information such as readable callstacks and valuable/actionable performance tracking...

Traditional compilers fall flat in these cases.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at StackOverflow when you tag using codenameone, you can ask anything there and we try to be pretty responsive. The StackOverflow link also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

主要指標

概覽
名稱與所有者codenameone/CodenameOne
主編程語言Java
編程語言Shell (語言數: 11)
平台
許可證Other
所有者活动
創建於2015-03-27 07:37:42
推送於2025-06-06 14:57:23
最后一次提交2025-06-06 07:57:15
發布數202
最新版本名稱7.0.193 (發布於 )
第一版名稱3.0 (發布於 )
用户参与
星數1.8k
關注者數103
派生數416
提交數7.9k
已啟用問題?
問題數3518
打開的問題數609
拉請求數296
打開的拉請求數24
關閉的拉請求數63
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?