diff --git a/README.md b/README.md index 9a13835..8fb9b5a 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,76 @@

CheerpJ

+[![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 + +``` + +![](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. diff --git a/assets/cheerpj_visual_2.png b/assets/cheerpj_visual_2.png deleted file mode 100644 index b95a8b9..0000000 Binary files a/assets/cheerpj_visual_2.png and /dev/null differ diff --git a/assets/explanation-diagram.webp b/assets/explanation-diagram.webp new file mode 100644 index 0000000..1a28b2f Binary files /dev/null and b/assets/explanation-diagram.webp differ