Today we release CheerpJ 5.0. It is nine years since we first released CheerpJ, and before I tell you what is in this release, I want to look back at how we got here, because CheerpJ 5.0 is the end of one story and the start of another.

A bet on the browser

CheerpJ started as a bet. The idea was simple to say and very hard to do: take any Java application, unmodified, and run it in a browser tab, with no plug-in, no Java installation and no server doing the work.

In 2017 the browser was not ready for that. WebAssembly had only just shipped. Threads, shared memory and garbage-collected WebAssembly were years away. So the first versions of CheerpJ worked around what the browser could not do. CheerpJ 1.0 and 2.x compiled Java applications ahead of time into JavaScript, supported Java 8 only, and asked a lot of the developers who deployed them.

In hindsight, it was a bet placed well ahead of what browsers could do. We persisted, because every year browsers became more capable, and every year CheerpJ could do a little more.

Successes (and failures)

Then the use cases started coming to us. The Java plug-in had gone, and organisations still had applets that their staff used every day. When Microsoft retired Internet Explorer, companies running Oracle Forms and E-Business Suite needed a way to keep those applications working in a modern browser. Schools and universities needed their Java teaching material back. Software companies wanted a web edition of their desktop products without a rewrite.

This large-scale use on real-world applications also highlighted the limitations of CheerpJ. Seemingly second-order issues, such as partial support for class loaders, incomplete networking and a poor clipboard integration, made CheerpJ unusable on some significant use cases, including in the Oracle domain.

The breakthrough: CheerpJ 3.0

So we started again. CheerpJ 3.0, released in January 2024 after a two-year rewrite, replaced the compiler with a real Java Virtual Machine written in WebAssembly, with a JIT compiler that works on unmodified bytecode, just as a desktop JVM does. Deploying CheerpJ became as easy as adding a script tag, and compatibility with real-world applications took a leap.

The new architecture has been an outstanding success, and it transformed CheerpJ commercially. CheerpJ is now used by Fortune 500 companies and banks, such as ADP, Siemens, UBS, Moody’s, EDF, Panasonic Avionics and Ticketmaster, and by government agencies around the world, including NASA and other US federal agencies. More than a million people ran a CheerpJ application in the last 12 months, and our browser extensions for applets and Java Web Start have more than 170,000 users.

The new architecture had one more promise: it could support more than one version of Java. In February 2025 we published a roadmap to reach parity with the latest Java LTS by the end of 2026. Java 11 came in CheerpJ 4.0, and Java 17 in 4.1.

CheerpJ 5.0: a new beginning

CheerpJ 5.0 completes that roadmap, on schedule. But it is more than the last step of a plan. It is the first release of a different CheerpJ.

Java LTS parity, now and in the future

CheerpJ now supports Java 8, 11, 17 and 21, and Java 25, the current LTS, is in preview. And from this release forward, CheerpJ will support each new Java long-term support (LTS) release within six months of its release by OpenJDK. Java 25 will move to full support in the coming months, and the next LTS, Java 29, is expected in September 2027. Every version we have already shipped stays supported, Java 8 included.

We can commit to this because CheerpJ is not a reimplementation of Java. Each Java version in CheerpJ is built from unmodified OpenJDK sources, with the entire native layer compiled to WebAssembly. Adding a new version is engineering we know how to do and can schedule. The compatibility page lists every supported version and the OpenJDK build behind it.

An OpenJDK distribution, for the browser

Every Java version in CheerpJ 5.0 now ships the full JDK, not only the runtime. That makes CheerpJ, in effect, an OpenJDK distribution whose platform is the browser. What Eclipse Temurin and Amazon Corretto are for servers and desktops, CheerpJ is for the browser.

It is meant for everyone who runs or builds Java:

  • For organisations that depend on Java applications, such as Oracle Forms and E-Business Suite, applets, Java Web Start, vendor software or the management console of a network appliance, CheerpJ 5.0 is the best release we have shipped. Your people keep using those applications in today’s browsers, with no Java on the desktop, no IE mode and no Citrix session kept alive to host a legacy browser. Java runs inside the browser’s own sandbox, and self-hosted deployments make no outside contact: no licence server, no telemetry and no metering. The security page describes the model in full.
  • For developers, the version question is settled. You can ship a web edition of your desktop product from the same codebase, on the Java version you already target, running client-side with no JVM per user on your servers. You can call any Java library from JavaScript with Library Mode. And because the full JDK is there, javac and jshell run in the browser too, for playgrounds, courses and tools that compile Java without a server. You can try one live in Alessandro’s technical release notes.

WasmGC, and the road to CheerpJ 6.0

When we started, garbage-collected WebAssembly was an idea in a proposal. It now ships in every major browser, and CheerpJ 5.0 includes a preview of a new engine built on it. Where the current engine compiles Java to JavaScript, the WasmGC engine compiles Java to WebAssembly and uses the browser’s own WebAssembly garbage collector. We expect it to bring significantly better performance and memory management, and simpler interoperability with JavaScript and with native libraries compiled to WebAssembly.

The WasmGC engine is opt-in and not yet ready for production. Making it production-ready is the focus of CheerpJ 6.0, planned for early 2027, and we expect it to make large, modern Java applications practical in the browser, including games built on LWJGL 3 such as recent versions of Minecraft. Alessandro explains how the new engine works in the technical release notes.

A new launch

A new beginning deserved a new launch, so CheerpJ 5.0 does not arrive alone.

A new website and brand identity. CheerpJ has a new look and a new cheerpj.com, made for the product it has become.

Simpler licensing. Most people who use CheerpJ will never need to pay for it. Commercial licensing is now built around one question: who uses the application?

  • Community is free, and it is the licence most of you will use. It covers personal, educational and hobby use, technical evaluation, and individuals, one-person companies and non-commercial open-source projects.
  • Desktop licences cover the Java applications your organisation uses, licensed per desktop. Smaller teams can buy online, and Enterprise licences cover larger rollouts.
  • Application licences cover software you build with CheerpJ for customers or the public. A Small Business plan covers smaller teams, and Enterprise licences, per application, add self-hosting and redistribution.

Every licence covers CheerpJ and both browser extensions. The licensing page has the details. Existing customers keep their current terms.

Try CheerpJ 5.0

  • Get started: run the Java applications you already have in the browser, from applets and Java Web Start to Oracle Forms and EBS. Start here.
  • Build something with Java for the browser: ship a web edition of your desktop application, use Java libraries from JavaScript, or compile and run Java client-side. Start building.
  • Go deeper: read Alessandro’s technical release notes on the WasmGC engine, the full JDK and what’s next.
  • Join the community: the CheerpJ team and experienced users are on Discord.

Thank you

Nine years ago, CheerpJ was an idea that the browser could not yet support. It is now a Java platform used by more than a million people a year. That happened because our team kept believing in the bet, and because our customers trusted us with applications their organisations depend on.

We are extremely grateful to our customers, who provided invaluable feedback over the years, and to our developer community on Discord, who tested modern Java in CheerpJ release after release. CheerpJ 5.0 is your release as much as ours, and it is only the beginning. We hope you find what comes next as exciting as we do.

Stefano De Rossi, CEO, Leaning Technologies