Basé sur la plate-forme de compilateur LLVM/Clang et sur le compilateur Cheerp C++-to-JavaScript de Learning Technologies, CheerpJ prend le bytecode Java et le transforme en JavaScript sans avoir besoin de la source Java. Dans CheerpJ, les applications et les bibliothèques Java sont converties en applications Web, sans avoir besoin de plug-ins ou d'installations Java. Les composants Java côté serveur sont transformés en bibliothèques basées sur le navigateur côté client tandis que le code Java natif sert de composants indépendants pour la plate-forme Java Node.js côté serveur. CheerpJ dispose d'un compilateur hors ligne qui transforme le bytecode Java en JavaScript et en environnement d'exécution Java basé sur JavaScript. Par ailleurs, une partie de la plate-forme sert de compilateur à la volée pour l’implémentation de classe dynamique en Java pour un déploiement avec l'application.

L'interopérabilité bidirectionnelle entre Java et JavaScript permet d’appeler n’importe quelle bibliothèque JavaScript ou n’importe quelle API de navigateur à partir de Java. De plus, n’importe quelle méthode Java supporte la transformation en JavaScript. CheerpJ peut intervenir aussi bien sur les fichiers d'archive Java (.jar) que sur les fichiers .class. Les applications converties peuvent être déployées sur un serveur Web via des fichiers JavaScript jar.js et des fichiers .jar.

WebAssembly en ligne de mire

Selon Learning Technologies, les processus de CheerpJ sont différents de ceux utilisés par d’autres technologies comme GWT (Google Web Toolkit), pour intégrer du Java dans les navigateurs, car celles-ci n’offrent pas de support complet pour les constructions Java et ne peuvent implémenter que partiellement la bibliothèque d'exécution Java. Du fait de ces limitations, ces autres technologies sont plus adaptées aux nouvelles applications plutôt qu'à la conversion des applications existantes. D’autres technologies comme Scala.js, le langage Kotlin, et TypeScript de Microsoft sont également capables de compiler JavaScript dans d'autres langages. Une version publique restreinte de CheerpJ est programmée pour juillet, la disponibilité générale, dont une version commerciale, étant prévue pour l'automne.

CheepJ pourrait s’attaquer prochainement à WebAssembly, un code binaire de plus en plus populaire qui pourrait améliorer les performances du Web et permettre à d'autres langages d’être exécutés dans les navigateurs. Également attendue en version release, l’extension CheerpL pour Chrome, actuellement en version bêta, laquelle active les applets Java sans nécessiter d’installation Java ou de plug-in. Les applets sont activés grâce au système de compilation à la volée de CheerpJ.js.