En combinant les univers Java et JavaScript, la JavaPoly.js étend le support de la machine virtuelle Java aux navigateurs web à travers une bibliothèque se présentant comme un polyfill (code additionnel qui fournit des capacités que le navigateur n’apporte pas lui-même). JavaPoly.js permet aux développeurs d’importer du code Java existant et de l’invoquer depuis JavaScript. Selon la page web du projet, cela permet à Java de fonctionner dans les balises de script et d’interagir directement avec le Document object model, plutôt que d’être confiné dans une applet sandbox. Il n’est pas nécessaire que Java soit installé sur l’ordinateur.

En théorie, JavaPoly.js doit permettre à un langage hôte de la machine virtuelle Java – dont Groovy et Scala, d’être supporté dans le navigateur, explique le développeur du projet Jim Sproch. « Tout langage s’exécutant dans la JVM devrait être exploité avec JavaPoly », indique-t-il. « En fait, vous pourriez même faire tourner Python en utilisant Jython. En fait, ce projet pourrait en engendrer d’autres pour supporter différents langages ». Le développeur admet un peu plus loin que le projet est largement destiné à permettre le développement web dans Java.

Des plugins JVM natifs pour Chrome et Firefox

Les développeurs JavaPoly.js conçoivent actuellement des plugins JVM natifs pour Chrome et Firefox. Ils espèrent faire adouber l’API par une organisation de standardisation officielle mais les discussions n’en sont qu’au tout début, reconnaît Jim Sproch. « Pour dire les choses clairement, JavaPoly fonctionnera dans n’importe quel navigateur moderne, même sans le support de son fournisseur. Tout navigateur acceptant nativement Java sera à l’évidence beaucoup plus rapide que celui qui ne le fait pas, il est donc dans l’intérêt de son fournisseur de le supporter », souligne le responsable du projet.

Il est important pour JavaPoly.js de s’intégrer au mieux avec les navigateurs. « Permettre au code de tourner dans une JVM native plutôt que dans la machine virtuelle JavaScript nous permettra d’obtenir un niveau de performance qui n’est pas possible avec la JSVM des navigateurs », explique Jim Sproch. « Nous espérons qu’un jour, tous les browsers supporteront tous les codes opérations JVM dans la JSVM ».

Pas de date pour la disponibilité générale pour l'instant

En recherchant le support natif de JVM dans les navigateurs, l’équipe du projet cherche à dépasser ce qu’elle considère comme des limitations à JavaScript qui proviennent de son développement rapide. « Le langage est maintenant standardisé, mais toujours restreint par certaines lacunes de conception d’origine sur lesquelles il est difficile de revenir en raison de son usage généralisé », selon Jim Sproch. En revanche, poursuit-il, Java a été conçu de façon plus holistique avec un support natif des threads, de la mémoire partagée, des locking primitives… Il présente une infrastructure de développement beaucoup plus mature. « Il a été mieux conçu par une équipe complète d’ingénieurs et il est plus adapté aux applications qui doivent être largement déployées ». JavaPoly.js n’en est actuellement qu’aux premiers stades de développement. Il n’est pas indiqué de date de disponibilité. Il sortira quand ses développeurs estimeront que l’API est stabilisée.