Shameless plug: CheerpJ is our solution to run any JVM language in the browser, including Clojure. Reflections, Multithreading and Swing / AWT apps are all supported.
With CheerpJ you are downloading the subset of the JVM that you need, and actually only once thanks to the standard browser cache.
There are many reasons why shipping via the browser is a better choice compared to shipping desktop apps. The main 3 in my opinion are:
1. Distribution: Give your user a link and the app will start
2. Isolation: The user can have confidence the app won't read his personal files.
3. Cross-platform: Every OS and every device, for real this time
> Byte ranges request do most of the heavy lifting, data is loading exclusively on-demand.
I don't understand what that means. The JVM is supposed to interpret and sometimes compile bytecode, right? How can it be done with only a fraction of the JVM?
Or are you saying that it is constantly communicating with a server that does the work?
The VM itself is very small, it's the OpenJDK runtime that is quite sizeable. Byte ranges are used to only download the parts of the runtime (in terms of bytecode) that are required.
There is no server-side computation. CheerpJ runs code exclusively client-side.
But you said before that you only download a subset of the JVM, right? Or did you mean a subset of the JDK, including the JVM and... I guess other stuff?
I meant the JVM in an extended sense: the combination of the bytecode parsing, JIT compiler and OpenJDK runtime. You are right, I should have been more precise and refer to only the runtime part, which is by far the most significant.
JavaFX is not yet supported, but we plan to get it to work soon.
The issue here is that there is very little Java in JavaFX, it's mostly native C++ code. This makes it actually quite similar to the LWJGL library used by Minecraft.
Our plan is to use for JavaFX the same technology we have developed for LWJGL.
Small Business licenses will be available with the release of CheerpJ 4.0, expected in mid April 2025.
They will allow self-hosting and will be priced on a per application / per website basis. They will be priced to be affordable and ensure that CheerpJ enjoys a wide reach.
If you are interested before the release, please do get in touch (info@leaningtech.com).
Mobile is indeed supported, although the performance is not yet as nice as we would like.
The trickiest issue is input, since the "look around with your mouse" interaction maps very poorly on a mobile platform where "mousemove" implies touching / clicking.
We plan to eventually figure out a mobile-optimize UX, but we will most likely prioritize improving the performance first.
The CLA just gives Google a license to use the code your contribute (and a license to any associated patents). You still own the copyright, and Google cannot sell the rights to your code.
Benjamín Labatut - The Maniac, a novelized biography about the mathematician and computer science pioneer John von Neumann.
The story of his life was absolute fascinating for me, unfortunately the last part of the book attempts a connection with the development of Alpha Go / reinforcement learning that should have been avoided.
https://labs.leaningtech.com/blog/cheerpj-4.0
And yes, it can run Minecraft :-)
https://browsercraft.cheerpj.com/
reply