Strongly-typed Javascript : un nouveau générateur de Javascript à partir de Java
Ses créateurs demandent votre avis sur le projet

Vous avez peut-être déjà entendu parler de GWT. Notre démarche n’est pas nouvelle, mais ce que notre projet apporte en plus c’est surtout sa simplicité d’utilisation, le fait qu’on se focalise exclusivement sur la génération du code. Il ajoute seulement ce coté « typé » avec lequel Java vient. Même si beaucoup de développeurs voient en ça une contrainte, nous y voyons plutôt un avantage : plus il y a des vérifications lors de la compilation, moins de surprises il y aura lors de l’exécution.


C’est clair que pour des projets relativement petits, la contrainte sur les types se ressent. Mais quand la taille du projet grandi, quand il y a plusieurs développeurs, plusieurs librairies, on est bien contents d’avoir du support de la part de notre IDE (comme Eclipse) par des tâches comme le refactoring, de trouver d’où une méthode est appelée, etc.

STJS est un projet open source construit comme un plugin Maven qui s’exécute après la compilation du code Java de votre projet. Nous n’avons pas choisi Java par hasard – nos applications coté server sont écrites également en Java, donc le partage des classes de transport de données peut se faire facilement ce qui élimine une partie des erreurs dues à l’incompatibilité entre ces deux couches (à noter qu’aucune libraire Java n’est nécessaire coté server pour faire tourner les applications compilées avec STJS).


Le projet bénéficie de l’intégration Maven-Eclipse en s’exécutant à chaque sauvegarde d’un fichier pour générer le code Javascript correspondant. Donc pas besoin de recompiler pour voir les résultats des modifications, il suffit de recharger la page !


Comme le nom du projet l’indique, le projet n’essaye pas de changer complètement la façon d’écrire un programme Javascript. Le code généré est très similaire au code Java de départ. Le code diffère seulement là où la syntaxe du langage Java ne permet pas d’avoir une construction similaire au Javascript (par exemple la construction d’un objet/map avec les accolades : var obj = {‘field’ :1} )



Voici un petit exemple :

En Java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
form.find(".ok").click(new EventHandler() {
  public boolean onEvent(Event evt, Element THIS) {
  $(that.row(stockData)).appendTo("table tbody");
   return true;
  }
});
Le code Javascript généré :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
form.find(".ok").click(function(evt) {
  $(that.row(stockData)).appendTo("table tbody");
  return true;
});

Notre librairie ne propose (impose) aucun composant graphique. Comme on voit dans l’exemple, nous utilisons JQuery, pour lequel nous avons construit une librairie bridge (qui permet d’accéder en Java, d’une manière type-safe aux fonctionnalités de JQuery et de JQuery UI). Mais l’utilisation d’autres librairies Javascript basées ou pas sur JQuery n’est pas limitée, pourvu que le bridge Java soit disponible.

Si STJS vous intéresse, visitez le site web du projet et essayez-le.

N’hésitez pas nous envoyer vos questions et commentaires.