Bring Java libraries to the browser
CheerpJ lets teams run Java libraries and packaged components directly in the browser using a full browser-delivered Java runtime.
That means existing Java code can be reused inside web applications without rewriting everything into JavaScript first, which is especially useful for large libraries, third-party components, and gradual modernization work.
Why teams use CheerpJ for Java libraries
Reuse existing Java code
Bring existing JARs and Java components into browser projects without converting them into another language first.
Work at the bytecode level
CheerpJ works directly with Java bytecode and packaged artifacts, which helps with third-party or partially owned codebases.
Run client-side
Execution happens in the browser through WebAssembly and JavaScript, avoiding a server-side Java bridge for many use cases.
Preserve complex dependencies
Existing classpaths, supporting JARs, and OpenJDK runtime behavior can be preserved more naturally than in a rewrite.
Modernize gradually
Teams can expose useful Java functionality inside web apps first, then replace pieces over time if and when it makes sense.
Support enterprise workflows
CheerpJ is often used where Java clients and libraries remain business-critical but desktop Java is becoming a liability.
Typical use cases
Embedded business logic
Reuse mature Java logic inside a browser app rather than reimplementing it immediately.
Third-party SDKs
Keep using packaged Java libraries even when source access is limited or unavailable.
UI-adjacent tooling
Bring supporting Java components into a web workflow alongside HTML, CSS, and JavaScript.
Migration proof-of-concepts
Validate library behavior in the browser before committing to a larger modernization program.
Want to test a JAR in the browser?
We also have a simple hands-on page where you can drop a runnable JAR into CheerpJ and see how it behaves in the browser.