VOOZH about

URL: https://thenewstack.io/cheerpj-3-0-run-apps-in-the-browser-with-webassembly/

⇱ CheerpJ 3.0: Run Apps in the Browser with WebAssembly - The New Stack


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
It seems that you've previously unsubscribed from our newsletter in the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become a TNS follower on LinkedIn.

Check out the latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of 2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
NEW! Try Stackie AI
From clobbered drafts to real-time sync
Apr 14th 2026 10:00am, by David Moore
TypeScript 6.0 RC arrives as a bridge to a faster future
Mar 14th 2026 9:00am, by Darryl K. Taft
Mastra empowers web devs to build AI agents in TypeScript
Jan 28th 2026 11:00am, by Loraine Lawson
2024-02-26 05:00:29
CheerpJ 3.0: Run Apps in the Browser with WebAssembly
tutorial,
Cloud Native Ecosystem / Software Development / WebAssembly

CheerpJ 3.0: Run Apps in the Browser with WebAssembly

CheerpJ 3.0 represents a significant advancement in deploying applications in the browser with WebAssembly, particularly with Java.
Feb 26th, 2024 5:00am by B. Cameron Gain
👁 Featued image for: CheerpJ 3.0: Run Apps in the Browser with WebAssembly
Feature image via Leaning Technologies.

CheerpJ 3.0 showcases an interesting manifestation of WebAssembly for the browser, demonstrating its potential to deploy and operate complex applications and runtimes written in Java. Developers can create applications in any language and deploy them with just a click — packaged and distributed for availability in testing and usage by end-users.

While CheerpJ 3.0’s development remains ongoing, it represents a significant advancement in deploying applications in the browser with WebAssembly, particularly with Java. This complements other projects focused on encryption and the ability to deploy applications written in C++ for browser usage.

👁 Image

With CheerpJ 3.0 — marking its generally available release — Java client applications, such as Java Applets, Java Web Start applications, and stand-alone Java Applications, can run unmodified on modern browsers, without a local Java installation, the company says. The idea is to make runtimes — in this case Java — better able to run as if the user had the resources of the endpoint server at their disposition — in the browser.

“In the same way that Docker allows you to run containers of binaries on your machine, you need to be able to have the technology and it has technology that allows you to do the same to run binary workloads in the browser in the same way that you can do normally on a normal platform operating system,” Stefano Marco Maria De Rossi, CEO and founder of Leaning Technologies, which created CheerpJ, told The New Stack.

Setting up CheerpJ 3.0 is reasonably straightforward, with clearly outlined steps in the documentation, and it is compatible with essentially any browser, the company says. In the playground aspect, merging PDF files is remarkably simple with the CheerpJ iText. With it, users input their PDF files into the API, and with a few clicks, the files are merged “all done in the browser.” You begin by accessing the iText demo page:

👁 Image

Upload the PDF files you want to merge and merge the documents are indicated:

👁 Image

Merge the PDF files as indicated and you are good to go:

👁 Image

Like the example above, Java can be written and implemented into the WebAssembly module of CheerpJ 3.0 for distribution and execution across browsers of — in theory at least — any application written in Java. There should be many other interesting applications running with CheerpJ for the browser soon in the near future.

One of the funner examples that Leaning Technologies offers to show how it enables Java to run in the browser with CheerpJ is Browsercraft, which allows the game Minecraft to run in the browser so a user can play the game directly (and for free):

👁 Image
👁 Image

Underneath the Hood

👁 Image

Described as a is a WebAssembly Java Virtual Machine for the browser that compiles JIT-compiles Java bytecode into JavaScript (as mentioned above), CheerpJ 3.0 components, according to the documentation, include:

  • A WebAssembly JVM and Just-In-Time compiler for Java bytecode. The code contained in class files is compiled and optimized. The JIT compiler supports advanced optimizations such as inlining and dynamic devirtualization.
  • A complete and unmodified build of OpenJDK.
  • A virtualized system layer, including:
  • Virtualized file systems, providing access to assets over HTTP, local persistent R/W storage via IndexedDB and interaction with JavaScript data via /str/.
  • Virtualized networking support via Tailscale. Both server and client applications are supported.

As De Rossi noted when not using WebAssembly, developers must use x86, Linux, or other target architectures separately, whether creating runtime code in Rust, C++, Python, Java or any other language. The code is compiled to run on different platforms. But Wasm represents a unified target. “The key difference is that Wasm is unique and it doesn’t matter if your browser is Chrome on Linux or Safari on macOS or Firefox on Windows,”  De Rossi said. “Eventually, Wasm has created this abstraction that allows tool makers to create tools for pretty much any language. Yeah, more and more languages will pop up in the future simply because Wasm is becoming more and more powerful, more and more similar to a native platform.”

TRENDING STORIES
BC Gain is founder and principal analyst for ReveCom Media. His obsession with computers began when he hacked a Space Invaders console to play all day for 25 cents at the local video arcade in the early 1980s. He then...
Read more from B. Cameron Gain
SHARE THIS STORY
TRENDING STORIES
Docker is a sponsor of The New Stack.
TNS owner Insight Partners is an investor in: Docker, Tailscale.
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.