Improved font rendering, input methods, multi-applet support

Stefano De Rossi
Dec 5, 2018 · 3 min read

Today we announce the release of CheerpJ 1.3, the latest major update to our Java to JavaScript compiler.

You can download the latest release of CheerpJ here, with up-to date documentation available on our wiki.

CheerpJ 1.3 introduces significant improvements to font rendering speed, input methods, extended support to applets, and several low-level performance updates and improvements.

Trying CheerpJ 1.3 (or updating version) is very easy. Download the latest version of the compiler here, and follow our tutorials to get started. If you are updating version, make sure to rebuild your project with the 1.3 compiler, and change your CheerpJ runtime header to

<script src=”"></script>

Improved font rendering

Font rendering in CheerpJ is implemented using the industry-standard FreeType library. FreeType — a C library — is converted to JavaScript using our C/C++ compiler Cheerp, and shipped together with the CheerpJ runtime components.

Starting from CheerpJ 1.3, FreeType is now compiled in asm.js mode, which significantly improves the library performance, speeding up font rendering in CheerpJ considerably. Since a large number of CheerpJ users tend to convert application UIs which are rich in text, the overall performance gain can be very significant.

We have chosen to ship an asm.js build (as opposed to WebAssembly, which Cheerp supports as a target), to retain compatibility with legacy browsers such as Internet Explorer 11, which are still relevant to many enterprise software solutions that use CheerpJ. After a transitional phase, we plan to ship FreeType and other components of CheerpJ in WebAssembly by default.

This will be part of a gradual transition of the full output of CheerpJ to WebAssembly, which will go hand-in-hand with the improvement to WebAssembly and its support in browsers.

Improved input support

CheerpJ 1.3 features a full rewrite of the keyboard input architecture. In particular, the browser is now made aware that the user is “typing text” and not only “sending keystrokes”. This is an important stepping stone towards a full support for international input, input methods (such as writing or speech recognition) and mobile input. We will be providing more details on these new features as they mature in future versions of CheerpJ.

Extended support to convert Java Applets

CheerpJ is the core technology behind our free CheerpJ Applet Runner Chrome extension.

Since having released it in early 2018 mostly as a demonstrator for CheerpJ, we have been overwhelmed by the number of active users — now getting close to 10,000 — of the extension, particularly in Education, where Java applets have been for many years a favoured way for providing simulations and other interactive educational resources. It makes us very happy and proud to be providing a free tool that so many students and educators find useful.

As a result of this interest, we have been putting a lot of effort to extend the number of Java Applets supported correctly by the CheerpJ Applet Runner. Starting from CheerpJ 1.3, we have greatly expanded the set of applets working out-of-the-box, particularly on sites using frames and iframes and on pages featuring multiple applets side-by-side. Both techniques seems to be popular on educational sites.

Other features

In addition to improved font rendering and input sources, and extended support to Java Applets, CheerpJ 1.3 introduces a wealth of further optimisations and bug fixes:

  • Improved class loader
  • Improved XHR-based HTTP(s) handler for more extended support of HTTP methods
  • Improved support to reflection
  • Improved support to serialization
  • Improved correctness of threading
  • Improved rendering of AWT
  • Improved support to mouse wheel


Cheerp 1.3 is available to download for Linux, Windows and macOS. To get started with CheerpJ, please visit the main documentation page.

Get in touch

For more information on CheerpJ, check out our website at Follow us on twitter (@leaningtech), visit our website, or drop us a line on Gitter!


Leaning Technologies' Blog - everything Cheerp, CheerpJ, compile-to-JavaScript and compile-to-WebAssembly

Stefano De Rossi

Written by


Leaning Technologies' Blog - everything Cheerp, CheerpJ, compile-to-JavaScript and compile-to-WebAssembly

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade