Ces dernières années, les développeurs de navigateurs ont favorisé les technologies basées sur le JavaScript et ont constamment délaissé la prise en charge du Java natif. Dans un monde dominé par les applications web côté client, Java semble être relégué au rang de technologie réservée aux serveurs. Pour rester dans la course, d’excellents outils Java doivent alors être réinventés du côté client.
TeaVM est un compilateur avancé qui prend du bytecode Java et le convertit en JavaScript pour une exécution sur un navigateur. Il est conceptuellement lié au Google Web Toolkit (GWT), car les deux produits permettent de coder en Java et de produire un code JavaScript convivial pour le navigateur. Cependant, selon certains analystes, TeaVM présente des avantages par rapport à GWT dans plusieurs domaines : flexibilité, performance et efficacité sur le Web. TeaVM supporte tous les langages JVM, y compris Kotlin et Scala, alors que GWT est uniquement en Java. Il produit un code JavaScript plus petit qui fonctionne mieux dans le navigateur.
Rappelons que GWT est un ensemble d'outils logiciels développé par Google, permettant de créer et maintenir des applications web dynamiques mettant en œuvre JavaScript, en utilisant le langage et les outils Java. C'est également un logiciel libre distribué selon les termes de la licence Apache 2.0.
Les applications développées en Java sont très facilement portables sur différents systèmes d’exploitation tels que Windows, Mac OS, UNIX ou encore Linux, ce langage orienté objet qui reprend en grande partie la syntaxe du C++ reste toujours très prisé par les développeurs. Pour arriver à leurs fins, les développeurs se servent d’un certain nombre d’outils de développement.
Une des particularités de TeaVM est qu’il intègre Flavour, un framework pour créer des applications Web d'une seule page en Java. Selon ses concepteurs, l'expérience est assez proche d'Angular, mais le framework est basé sur des idiomes Java, et non pas des idiomes JavaScript.
Étant donné que TeaVM ne supporte pas entièrement le JDK, la réflexion, le chargement de classe, les ressources, les threads, la plupart des bibliothèques Java pour la sérialisation des données et la communication réseau n’étant également pas disponibles dans TeaVM, Flavour réimplémente des sous-ensembles raisonnables de Jackson et du client JAX-RS sans une seule ligne de réflexion.
La plateforme continue d’être appréciée, comme en témoigne un développeur Web Java. « J'ai eu une grande expérience de la mise en place de mes applications de bureau dans le navigateur avec TeaVM. Les performances sont excellentes, le code JavaScript généré est petit », déclare-t-il. « Je bénéficie d'une abstraction d'interface utilisateur. Mon kit d'interface utilisateur fonctionne avec Swing/JavaFX sur bureau, et avec HTML/DOM dans le navigateur », a-t-il ajouté.
Dans le même ordre d’idée, un autre développeur affirme : « l'environnement de développement est agréable. TeaVM est mon préféré. Sur la plupart des plateformes, l'utilisation d'une API native est au moins un peu douloureuse. Par contre, sur TeaVM, il y a des annotations pour pouvoir migrer vers le JavaScript sans trop de soucis ».
Cependant, TeaVM ne fait pas toujours l’unanimité dans le monde des développeurs. Pour un autre développeur Web, la comparaison avec par exemple Scala ou Kotlin où le code JavaScript est généré, mais pas à partir de fichiers de classe n’est pas assez claire. « J'ai fait quelques tests, l'une des sources de difficultés est de travailler avec les bibliothèques JavaScript, qui ont besoin de certains ‘’wrappers’’ pour les signatures de méthodes, ce qui est parfois un défi », a-t-il déclaré. « TeaVM a un grand nombre d'annotations pour JavaScript, ainsi que la possibilité de traiter le code JavaScript comme de simples chaînes de caractères. Mais je ne vois pas comment cela résout clairement les problèmes que je trouve les plus ennuyeux avec Scala ou Kotlin ».
Source : TeaVM
Et vous ?
Que pensez-vous de TeaVM ?
Connaissez-vous d'autres alternatives à TeaVM ? Lesquelles ?
Voir aussi :
TypeScript 4.1 apporte le remappage de clé dans les types mappés, les types template de littéraux, les types conditionnels récursifs et bien d'autres
La version bêta de TypeScript 4.2 est disponible avec le type tuple plus amélioré et une préservation plus intelligente des alias de type
Quels sont les coûts liés à l'utilisation de frameworks JavaScript pour le développement Web ? Une analyse des sites utilisant React, Vue.js ou Angular
Le WebAssembly serait moins performant en termes de rapidité que le code natif, selon les résultats d'une étude
TeaVM : un outil pour développer des applications Web rapides et modernes en Java
Sans les difficultés d'une pile de développement JavaScript
TeaVM : un outil pour développer des applications Web rapides et modernes en Java
Sans les difficultés d'une pile de développement JavaScript
Le , par Bruno
Une erreur dans cette actualité ? Signalez-nous-la !