JavaPoly.js : Java dans votre navigateur, sans JVM

Par:
fredericmazue

mer, 18/05/2016 - 14:47

Alors que l'utilisation du plugin Java et des applets est en voie de disparition, en partie en raison des récents problèmes de sécurité, en partie en raison parce que les applets sont passées de mode au profit d'autres technologies, le langage Java, ainsi viré par la porte des navigateurs Web pourrait y rentrer par la fenêtre.

Cette fenêtre s'appelle JavaPoly.js. Il s'agit d'un polyfill, c'est-à-dire une librairie JavaScript qui apporte dans le navigateur des fonctionnalités qui n'y sont pas nativement supportées, en l'occurrence le langage Java.

Avec JavaPoly, vous pouvez exécuter votre code Java, comme s'il s'agissait d'un langage de script :

<!-- Include the Polyfill -->
<script src="https://www.javapoly.com/javapoly.js"></script>

<!-- Write your Java code -->
<script type="text/java">
  package com.demo;
  import com.javapoly.dom.Window;
  public class Greeter
  {
    public static void sayHello(String name)
    {
      Window.alert("Hello " + name + ", from Java!");
    }
  }
</script>

<!-- Invoke your Java code from Javascript -->
<script type="text/javascript">
  com.demo.Greeter.sayHello("world");
</script>

Il est également possible d'importer du code Java résidant dans des librairies, concrètement des fichiers JAR ou même de simples fichiers .class, ou même de simple fichiers source :

<!-- Include the Polyfill -->
<script src="https://www.javapoly.com/javapoly.js"></script>
<!-- Include your favorite Java libraries (jar files) -->
<script type="text/java" src="http://www.yourdomain.com/jimboxutilities.jar"></script>
<script type="text/java" src="http://www.yourdomain.com/guava.jar"></script>
<script type="text/java" src="http://www.yourdomain.com/apache-commons.jar"></script>

<!-- Or, include individual .class files -->
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Foo.class"></script>
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Noise.class"></script>

<!-- Or just include the source directly -->
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Bar.java"></script>
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Girls.java"></script>

Après quoi le code Java peut-être invoqué simplement :

<script type="text/javascript">
  com.yourpackage.Foo.doSomething();
  com.yourpackage.Noise.doSomethingElse();
</script>

Bien sûr tout n'est pas simple. Par exemple JavaScript est monothread, tandis qu'une application Java peut-être multithread. Des précautions, données sur le site officiel de JavaPoly.js, sont alors à prendre. 

JavaPoly.js, open source, encore au stade des premiers développement, doit pour le moment être considéré expérimental. Pour le moment JavaPoly.js fonctionne seulement sur les navigateurs Chrome et Firefox.

Une démonstration interactive sur le site officiel montre que l'ensemble est assez lent, sous réserve d'améliorations futures.

Site : www.javapoly.com