IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

270PARTAGES

4  0 
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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de forthx
Membre éprouvé https://www.developpez.com
Le 09/02/2021 à 15:34
Honnêtement, autant je suis un habitué de java ce qui fait que je l'utilise assez facilement, et probablement un peut trop souvent (il est pour moi un bon compromis perf/ simplicité d'utilisation), autant dans le domaine du navigateur, je ne l'ai jamais vraiment retenu comme solution. J'ai essayer il y a quelques mois, la performance n'est pas au rendez-vous (pas vraiment de surprise de ce coté la, même si cela finissant en wasm, c'est pas dit qu'on ai pas un peut de perte).
Notez que ce test était avec Jsweet et non TeaVM.
Au delà de cet aspect, Oubliez vos threads, vos socket, vos IO, awt & co, bref une bonne partie de l'api standard en fait ! (le JNI aussi ok j'enfonce des portes ouvertes).

On oublie vite, mais un truc qui m'a séduit avec java a l'époque c'est qu'on avais (ca a pas mal changer) pas besoin de chercher tout un tas de lib pour fair un programme. Et en utilisant l'api, on était plutôt bien compatible x86, a64, arm, windows, linux, solaris ... Des petits programmes que j'ai écrit il y a 16 ans sont toujours opérationnels.

Ce que semble proposer TeaVM c'est plutot une api bien a elle, en supportant l'écriture type java pour faire des "pages" ou "apli" web comme on dit à présent.

A l'époque on avais les Applets
Mais ce temps est révolu semble-t-il ...
3  0 
Avatar de Lor6s
Membre à l'essai https://www.developpez.com
Le 08/02/2021 à 23:29
@dev00_

Le java n'est pas un langage si mal foutu puisqu'il a séduit tant de société et qu'il reste largement enseigné. Etant donné qu'il est là dans les parages depuis pas mal de temps, c'est vrai que certaines nouveautés comme la programmation orienté événement n'est pas aussi simple que dans d'autres langages plus récents et modernes créés après lui.

Concernant TeaVM, ça ressemble à GWT et pour avoir travaillé avec quelquechose de similaire, ce genre de framework fout le seum. Peu de choses sont au final disponible même dans les paquets standards... Du coup vous vous retrouvez à vouloir faire une choses simple, comme construire un chaîne de caractères et les outils ne sont pas disponibles. Alors quand il faut travailler sur des collections là c'est le ponpon...
1  0 
Avatar de dev00_
Futur Membre du Club https://www.developpez.com
Le 08/02/2021 à 23:48
Citation Envoyé par Lor6s Voir le message
@dev00_

Le java n'est pas un langage si mal foutu puisqu'il a séduit tant de société et qu'il reste largement enseigné. Etant donné qu'il est là dans les parages depuis pas mal de temps, c'est vrai que certaines nouveautés comme la programmation orienté événement n'est pas aussi simple que dans d'autres langages plus récents et modernes créés après lui.
Ouhh aucune haine, ce langage ne m'a rien fait Juste une petite pique 😊
Et comme tu dis, il est ultra employé (trop même).
Je pense surtout que j'ai été rebuté quand j'ai voulu faire de l'android, suivi un cours sur Java/Kotlin et que l'enseignant était bordélique dans ses explications. Après de souvenir c'est plutôt bien structuré (objet oblige). Me suis lancé sur une voie différente depuis et considère Java comme un langage old school, malheureusement pas has-been vu qu'encore beaucoup employé (surtout dans les banques j'ai l'impression).
2  1 
Avatar de marc.collin
Membre expérimenté https://www.developpez.com
Le 11/02/2021 à 19:42
Citation Envoyé par Lor6s Voir le message
@dev00_
Concernant TeaVM, ça ressemble à GWT et pour avoir travaillé avec quelquechose de similaire, ce genre de framework fout le seum. Peu de choses sont au final disponible même dans les paquets standards... Du coup vous vous retrouvez à vouloir faire une choses simple, comme construire un chaîne de caractères et les outils ne sont pas disponibles. Alors quand il faut travailler sur des collections là c'est le ponpon...
gwt de base était moyen... c'est pour ça qu'il y a eu des compagnies qui ont construit autour tel que Sencha GXT, smart gwt...
des produits qui existait il y a 13 ans....

https://www.smartclient.com/smartgwt...showcase/#main
1  0 
Avatar de Ahmed Alem
Nouveau Candidat au Club https://www.developpez.com
Le 28/05/2021 à 20:58
Je ne comprends pas pourquoi, contrairement à Microsoft qui fait des avancées progressives avec Blazor Wasm, les grands acteurs de Java (Oracle, Google...) ne font rien pour développer Java côté client (in the browser) après la mort des Applets. Pourtant il y a des développeurs talentueux qui, si encouragés, peuvent faire des choses très intéressantes.
0  0 
Avatar de dev00_
Futur Membre du Club https://www.developpez.com
Le 08/02/2021 à 21:59
Dès que je lis "Java" j'ai de l'urticaire Sauf quand j'entends "la java de broadway"
0  1 
Avatar de redcurve
Membre extrêmement actif https://www.developpez.com
Le 10/02/2021 à 13:28
Si l'objectif est de faire du WASM, dotnet core est ultra avancé sur le sujet alors que leur truc Java chelou ne me semble pas vraiment prêt
0  1