Coming back to CheerpJ, it compiles Java bytecode into JS with 100% Java compatibility. The support also includes dynamic class loading and reflection.
CheerpJ can be evoked on a whole Java archive or on individual class files to generates a .jar.js or .js output. It uses the original .jar metadata for reflection.
Once CheerpJ has completed the conversion, you can remove all the bytecode before the web deployment. CheerpJ also provides a simple tool for the same and helps in decreasing the download time. Very often the output JS is comparable to original Java code.
Notably, CheerpJ also provides different filesystem access methods, including a read-only and HTTP-based filesystem and more.
The creators of CheerpJ have also provided demos to showcase its capabilities. You can take a look at them here.
The restricted release of CheerpJ will happen in July. The full commercial version will be made available later this year. As a bonus, a Chrome extension called CheerpJ Applet Runner has also been released.
Meanwhile, you can read more about CheerpJ here in the announcement post.