100% native. Fast.

Full-stack Java.
Compiled to native.

Java from UI to server to serverless. Full-stack programming with shared code as WORA always intended on iOS, Android, Windows, Linux, Mac and JavaScript (web). ±5mb binary GUI with no JVM install. Open source and free.

GPLv2 with the Classpath Exception. Free for commercial use. No royalties.

Main.java
Form app = new Form(
    "Explore", new BorderLayout()
);

app.add(CENTER, buildContent());
app.add(SOUTH, buildTabs());
app.show();

Native iOS 26Codename One Metal

Native iOS 26 and Codename One Liquid Glass tab selection states in light and dark appearance
Codename One Android Material 3 light and dark theme test capture
Real runtime captures Native reference beside Codename One Liquid Glass, plus Android Material 3.

Choose your starting point

A new service. An existing Android app. A shared stack.

Start with the part you need. The app framework works with any backend, and the native backend can run on its own.

Java services without a deployed JVM

Use Spring-style controllers, dependency injection and transactions. The build generates the wiring and compiles a native executable. Add SQL persistence, OAuth2/OIDC, migrations and OpenTelemetry as your service grows.

The backend is evolving, with its own supported APIs and libraries. It is not a drop-in Spring Boot replacement.

Build a native Java backend

Your Android app on more platforms

Import classic Android Java or Kotlin code, activities, XML layouts and resources. Supported Android and AndroidX APIs run over Codename One on iOS, desktop and the web, as well as Android.

Check your dependencies and data flows against the compatibility guide. Coverage is specific to the documented APIs.

Explore Android app compatibility

Keep app and server contracts together

Share Java models and generate typed REST clients instead of maintaining a second definition of every object crossing the network. Initializr creates app-only, app-with-backend and backend-only projects.

See the shared-model example

Measured, with code you can run

Compare the runtime costs.

Published reference results against HotSpot, Spring and Go. These are separate workloads, with their hardware, methodology and limits linked below.

37.5% less time than JDK 25

ParparVM translating its own compiler also used 45.8% less peak memory in the Linux ARM64 Neoverse N2 baseline, across seven calibration runs. Generated files were identical. Allocation-heavy workloads can favor HotSpot.

Inspect every workload and machine

3.9× Spring's plaintext throughput

The CN1 HTTP handler reached 3.9× plaintext and 3.4× JSON throughput versus Spring Boot 4.1.1 on JDK 25: two pinned CPUs in a Linux ARM64 VM on M4 Max, 32 connections and matched 60-second warmup.

This compares HTTP stacks, without database, TLS or authentication. It does not measure CN1's generated controller API.

Reproduce the Spring comparison

595,610 requests per second

CN1 native musl versus 496,293 for Go fasthttp in a separate plaintext test: two pinned cores, 64 connections, medians of three interleaved runs. Go used less memory and a smaller binary.

Compare throughput, startup and memory

Own the result

The screen you test is the screen you ship.

Codename One draws its own components. The runtime and theme are packaged with the application, so an OS update does not silently swap in a different widget implementation.

Control the pixels

Theme the shared UI with CSS, draw directly when you need to, and keep brand behavior consistent across targets.

Ship one behavior

Fix shared application logic and UI once instead of maintaining separate screen implementations for each platform.

Drop to native when it matters

Call platform SDKs through native interfaces. Embed a map, web view, camera surface, or other heavyweight view with PeerComponent.

The build path

Java in. Native applications out.

Use Maven or Gradle and your existing IDE. Codename One supplies the portable runtime, platform ports, and build tooling.

  1. 1

    Write the application once

    Keep your application logic, UI and optional backend in one project, with shared models where they help.

    Start the project
  2. 2

    Run and inspect locally

    The simulator provides device skins, component and network inspectors, test recording, and live CSS.

    See the development tools
  3. 3

    Build with native toolchains

    Generate platform projects or use the cloud service to build app-store binaries, including iOS builds without a Mac.

    Submit your first native build

Agentic development

Give the agent a strict codebase and a short feedback loop.

A generated Java 17 project includes Codename One instructions for coding agents. The simulator can expose the running UI to Codex, Claude Code, and other MCP hosts, so the agent can inspect meaning and invoke actions instead of guessing screen coordinates.

Java

Java keeps edits in bounds

Agents know Java deeply. Static types, bytecode compliance, and the compiler reject unsupported APIs and invalid calls before they reach a device.

Local

Inspect the running application

Compile, run tests, and inspect the simulator locally. Give the agent a concrete test result and the current UI state before the next edit.

Tools

Skills and MCP ship with the tools

Initializr places the Codename One authoring skill in the project. The JavaSE tooling can register its built-in semantic UI tools with supported MCP hosts.

MCP control currently covers the simulator and JavaSE-hosted desktop tools. Packaged native and mobile targets do not yet include the launcher and transport.

Deployment targets

One Java project across the ports we test.

The same application model reaches phones, native desktops, browsers, watches, and TV. Add a native backend for the server. The Port Status page publishes the architecture, operating-system floor, and CI evidence for the app targets.

Inspect every port and test
  • Android ARM64, ARMv7, x86_64 API 19 and newer
  • iOS and iPadOS ARM64 devices; ARM64 simulator iOS 14 and newer
  • macOS Apple silicon and Intel, on the native AppKit build and on the legacy Mac Catalyst target macOS 11 and newer on the native AppKit build; macOS 10.15 and newer on the legacy Mac Catalyst target
  • Web Browser JavaScript runtime Current Chromium, Firefox, and WebKit engines
  • Linux x64 and ARM64 glibc 2.28 or newer with GTK3; Alpine Linux through the opt-in musl target
  • Windows x64 and ARM64 Windows 10 and newer; Windows 11 for Widgets Board packages
  • watchOS ARM64_32 devices; simulator watchOS 10 and newer
  • tvOS ARM64 devices; simulator tvOS 13 and newer
  • Vehicle integrations CarPlay and Android Auto Portable Java templates map to native CarPlay and Android Auto UI.
  • System surfaces Widgets, Live Activities, Dynamic Island Portable Java surface APIs publish to iOS, Android, and desktop renderers.

Engineering notes

Read the mechanisms, not a brochure.

All engineering posts

Start with the real thing

Create the project. Build it your way.

Initializr generates a standard Maven project. Build it with your own toolchains: the framework is open source and free for commercial use, so nothing ties you to us. Or skip the setup and use cloud builds: iOS apps without a Mac, desktop and device builds from whatever machine you have, no SDKs to install. Your first cloud build asks you to create a free account, which includes 100 cloud build credits each month.