Latest posts from Codename One.
Blog
Search the blog
WebRTC Calls, Key Agreement and ORM Checks at Build Time
The last post this week covers what Parley, Savor and Wayline needed underneath: calls, encryption and a backend you can trust with real data. These are features you’d usually assemble from three vendors and a few weekends of glue code. Voice and video calls with WebRTC com.codename1.webrtc carries live audio and video directly between two devices, encrypted on the way, with a TURN relay when there’s no direct path. On Android it’s Google’s WebRTC library, on iOS the Apple build of the same library, and in the browser it’s the browser’s own WebRTC. Referencing the package is what adds the native library to a build, so apps that don’t make calls don’t pay for it. ...

Native Menus, File Dialogs and 3D Models
A desktop app gets judged in the first ten seconds. If the menu bar is wrong, Cmd+Q does nothing or the Save dialog looks like it came from a different decade, people notice, even if they can’t say what bothers them. The word processor from last Friday’s post needed all of that to hold up next to a native app, so those pieces are now part of Codename One. They work with the code you already write for a phone. ...

More of the Java API, and an Experiment With Unity Games
This post is about code you already have: Java code you want to reuse, and, as an experiment, Unity games. Much more of the Java class library Codename One always shipped a subset of the Java API. That kept apps small, but it also meant that a library from Maven Central or a utility class from your server often needed edits before it compiled. That gap is now much smaller. 116 classes and interfaces joined the class library: ...

Savor: A Food Delivery Template for Restaurants and Local Fleets
Delivery platforms take a big cut of every order, often between 15% and 30%. For a restaurant running on thin margins, that cut can be the whole profit. That’s why so many restaurants, small chains and local delivery startups want their own ordering app, and why most of them give up when they see what it takes: a customer app, a kitchen screen, a courier app, an operations console, payments, maps and a server that ties it together. ...

Parley: A Private Messenger Template You Can Brand
Plenty of organizations want their own messenger and can’t use WhatsApp for it. A hospital that needs staff chat it controls. A company that wants messaging inside its product, under its brand, with no third party reading along. A community that doesn’t want to live on someone else’s platform. Building a secure messenger from scratch is a long project: the encryption protocol, multi-device sync, push, calls, media, groups and moderation are each a project of their own. ...

Skirmish: A Multiplayer Strategy Game Template in Java
For years I avoided pitching Codename One as a game engine. Unity, Unreal and Godot own that market, and I didn’t see a reason for a game developer to pick us. That changed while we were building our app templates. A modern mobile game is mostly app: sign-in, menus, a shop, friends lists, quests, push notifications, analytics and a server. The battle itself is a small part of the code. Those other parts are exactly what Codename One is good at. ...

Rewrite Everything in Java: Not Rust
Rust is a great language for a kernel, a driver or a database engine. Code like that can’t pause for a garbage collector and has to account for every byte, and Rust’s ownership model pays for itself there. Somewhere along the way “rewrite it in Rust” turned into the default answer for everything, including desktop and mobile applications. For applications, I think that’s the wrong trade. You pay more to write the code, more to review it and more to build it, and you don’t get a better application in return. ...

A Java IDE in Your Browser, With Your Files in Your Browser
If you’re used to opening a page and immediately changing an app, installing a Java development environment is a substantial detour. I want your first encounter with Codename One to be the app running. Our new browser IDE is a highly experimental, very early preview. Open it, press Run and start changing the Java. It has a project tree, multiple files and an application preview. Think of the Playground growing into a proper IDE workspace. ...

Let Users Install Your Java Web App Again
We lost progressive web app support when we moved the JavaScript port from TeaVM to ParparVM. It’s back. Users can install your browser app on supporting browsers, and its cached application files can load when the network is unavailable. For a small business, a link can be the quickest way to put an app in someone’s hands. Installation lets that same app remain within reach after the tab closes. This is Wednesday’s follow-up to the Wayline release story. ...

Give Your Desktop App a Useful Title Bar and Real Tools
A document editor needs room for the document. Giving an entire row to a title, then adding another row for Save and Search, spends that room quickly. You can now put Codename One components into the title area of native macOS, Windows and Linux apps. It’s a niche capability until you’re building an editor. Then the details of window dragging and button hit testing become part of your product. ...

Build Your App Theme Without a Display Server
A build container shouldn’t need a pretend monitor to compile a stylesheet. Until now, parts of our CSS build path pulled in desktop machinery that made that a practical concern. The CSS compiler now runs 100% headless. You can compile the same theme over SSH, in a container or on a CI worker without starting a display server or virtual framebuffer. This is Monday’s build-tools installment of the weekly series. ...

Thymeleaf, Spring MVC and htmx for Native Java Backends
Thymeleaf, Spring MVC and htmx are a combination Java developers can put to work quickly: templates for the view, controllers for the request and partial updates where they help. We now support that programming model with a different execution path: statically compiled rendering code inside a native Java backend. The template compiler processes a supported subset of Thymeleaf syntax and emits Java renderers with direct model access. Spring MVC-style controllers choose the page or fragment. ParparVM compiles the renderers with the rest of the backend into native code. The response is still ordinary HTML that any browser can display. ...