Skip to content

Commit

Permalink
update readme to match labs
Browse files Browse the repository at this point in the history
  • Loading branch information
bates64 committed Jan 30, 2024
1 parent 127629c commit 7040adb
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 4 deletions.
61 changes: 57 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,76 @@
<h1><img src="assets/logotype.svg" alt="CheerpJ" height="96"></h1>

[![Version](https://img.shields.io/badge/version-3.0-orange)](https://labs.leaningtech.com/cheerpj3)
[![Discord server](https://img.shields.io/discord/988743885121548329?color=%237289DA&logo=discord&logoColor=ffffff)](https://discord.leaningtech.com)
[![GitHub Issues](https://img.shields.io/github/issues/leaningtech/cheerpj-meta.svg)](https://github.com/leaningtech/cheerpj-meta/issues)

CheerpJ is a **drop-in HTML5 replacement** for the JVM, and is compatible with 100% of Java 8, including Swing, reflection and dynamic class loading.
CheerpJ is a WebAssembly-based **Java Virtual Machine for the browser**. It
has extensive compatibility with Java 8 and provides a full runtime
environment[^compat] for running Java applications, applets, libraries, and
Java Web Start / JNLP applications in the browser without plugins.

[Documentation](https://labs.leaningtech.com/cheerpj)
[Examples](examples)
[Issues](https://github.com/leaningtech/cheerpj-meta/issues)
[Discord server](https://discord.leaningtech.com)

![](assets/cheerpj_visual_2.png)
```html
<script src="https://cjrtnc.leaningtech.com/3.0/cj3loader.js"></script>
```

![](assets/explanation-diagram.webp)

## Features

With CheerpJ, you can:

- Run existing **Java applications** in the browser with no changes
- Include **Java applets** in webpages without legacy plugins
- Migrate **Java Web Start / JNLP** applications to work on modern systems
- Use Java libraries in JavaScript/TypeScript seamlessly
- Use **Java libraries** in JavaScript/TypeScript seamlessly
- Interoperate between Java and JavaScript libraries

CheerpJ is based on a full OpenJDK runtime environment. It supports reflection, custom classloaders, networking, file access, clipboard, audio, printing, Swing, and AWT.

[Get started](https://labs.leaningtech.com/cheerpj3/getting-started)

## How does CheerpJ work?

CheerpJ is a combination of two components:

1. An optimising Java-to-JavaScript JIT compiler.
2. A full Java SE 8 runtime based on OpenJDK.

Both are written in C++ and are compiled to WebAssembly & JavaScript using [Cheerp](https://labs.leaningtech.com/cheerp).

[Learn more about CheerpJ's architecture](https://labs.leaningtech.com/cheerpj3/explanation/architecture)

## What's unique about CheerpJ?

1. CheerpJ can handle 100% of Java 8, including Swing, reflection and dynamic class loading with no manual intervention on the code.
2. CheerpJ works directly on Java bytecode, and does not require access to the Java source code.
3. CheerpJ comes with a full Java SE runtime, inclusive of Swing/AWT. It supports audio, printing, and any other Java SE features. The runtime supports WebAssembly for optimal performance and size.
4. The JavaScript code generated by the CheerpJ JIT is highly optimised and garbage-collectible.
5. CheerpJ enables bidirectional Java-JavaScript interoperability. JavaScript libraries, as well as the DOM, can be called and manipulated from Java. Also, Java modules can be invoked from JavaScript.
6. CheerpJ supports Java multi-threading. In addition, you can create concurrent applications by using Web Workers.

## Licensing

CheerpJ is free for non-commerical use and technical evaluation. See [licensing](https://leaningtech.com/cheerpj-licensing/) for details.
CheerpJ is free for personal use and technical evaluation. See [licensing](/cheerpj3/licensing) for details.

## Demos

Several demos of CheerpJ can be found [here](https://leaningtech.com/demo/).

You can also see CheerpJ in action in [JavaFiddle](https://javafiddle.leaningtech.com/) and [Browsercraft](https://browsercraft.cheerpj.com/).

## Community

CheerpJ is used in production by teams at NASA, Siemens, UBS, and [many others](https://leaningtech.com/case-studies/).

We have a vibrant Discord community where you can ask questions, share your projects, and get community support.

[Join the Discord server](https://discord.leaningtech.com)
[Follow us on Twitter](https://twitter.com/leaningtech)

[^compat]: CheerpJ has been tested on Oracle Forms, EBS, Swing, AWT, and numerous frameworks and libraries. It should be able to run Java SE applications that you would otherwise need a Java Runtime Environment for.
Binary file removed assets/cheerpj_visual_2.png
Binary file not shown.
Binary file added assets/explanation-diagram.webp
Binary file not shown.

0 comments on commit 7040adb

Please sign in to comment.