Google signe le retour en force de Java sur le client Web

Décidément, rien n’est figé sur le Web et les certitudes d’antan ne sont plus celles d’aujourd’hui. Nous venons de publier un article de Google qui décrit l’architecture du tout nouveau produit Inbox, une nouvelle façon de gérer ces mails. Cet article est non seulement une nouvelle manière de concevoir une application Multi-périphériques mais aussi et surtout un hymne au langage Java, décrié de plus en plus au profit de JavaScript sur le poste client et serveur.

Ces dernières années ont vu l’explosion ou l’implosion (c’est selon) dans la manière d’entrevoir le développement Web.  Alors que les années 2000 avaient promu les architectures clients riches à base de plugin (Flash, .NET, Java JVM, etc …), nous sommes passés à l’Age de pierre le jour où Apple a décidé que HTML 5 serait la seule norme viable sur le Web. A cette époque, HTML 5 et JavaScript (et CSS) était loin d’être outillés.

Quelques années plus tard, JavaScript est devenu le standard incontournable du développement Web. On ne compte plus le nombre d’articles, de conférences ou de références citant JavaScript comme une technologie fiable et éprouvée. Son écosystème, encore balbutiant il y a deux ans, est aujourd’hui, dit-on, en phase de rivaliser avec Java. Son typage dynamique serait sa force principale associé à son caractère peu verbeux. Mais le plus étonnant c’est la rapidité avec laquelle la communauté JavaScript a réécrit l’équivalent d’un grand nombre d’outils existants dans le monde Java. AngularJS pour le framework MVC, Grunt pour la construction de projets et l’exécution de tâche, NodeJS pour le côté serveur, les Polyfills pour le multi-browsers, bower pour la gestion de dépendances et des packages. Et des centaines d’autres outils ….

J’avoue que je ne m’inscris pas dans cette tendance. D’une parce que je reste attaché aux langages objet et à leur qualité lorsqu’il s’agit de développer des IHM et des services. JavaScript est un langage incontournable à connaître, mais au même titre que le langage C ou l’assembleur pour les plus vieux. Partir du principe que JavaScript doit être présent partout et constitue notre seul futur en terme de développement logiciel me fait bondir.  Daniel Kurka résume bien ce que je reproche à JavaScript dans cette présentation. Java aurait du devenir le standard du Web mais sa verbosité et le non consensus auprès des éditeurs de navigateur a scellé son sort en tant que runtime sur le poste client.

Malgré cela, je reste convaincu qu’une application multi-fenêtrées complexe (et non un site Web classique) est beaucoup plus maintenable en Java qu’en JavaScript. Et Java 8 comblera le gap existant avec JavaScript, les lambda expressions permettront de tirer parti des pointeurs de fonction et de l’apport du fonctionnel (notamment sur l’API). Java deviendra beaucoup moins verbeux et ses manques par rapport à JavaScript seront comblés.

Google l’a bien compris, alors qu’il a lui-même proposé AngularJS et utilisé bon nombre d’outils JavaScript (clojure, etc …), il commence à se retourner vers Java pour les applications multiplateformes. L’article sur Inbox démontre cet intérêt mais surtout met en avant les qualités de Java comme langage de référence pour d’autres cibles (JavaScript, ObjectiveC, peut-être C#/.NET dans le futur, etc…). Et surtout, un intérêt pour les interfaces graphiques. GWT permet de faire de l’Offline, d’utiliser toutes les API HTML 5, même les plus récentes (avec Elemental). Avec la version 2.7, la compilation d’une application Java vers JS prend 1 seconde. Le debug est possible grâce à SourceMap directement à partir de l’IDE Java en espionnant les variables Java ou JavaScript.

Tous ceux qui ont enterré Java et avec lui GWT il y a deux ans en choisissant un Framework JS ont tout intérêt à reconsidérer leur position. La plus grande force de GWT est son compilateur qui optimise à l’extrême le JavaScript généré.  A tel point que Google imagine fournir dans quelques années, à la manière d’Inbox, des composants ou Framework écrits en Java mais disponible via une API JavaScript. Un peu comme si JQuery avait été développé en Java. La nouvelle fonctionnalité JSInterop de GWT permettra des prouesses de ce genre. Le monde à l’envers en quelque sorte, Java à la disposition de JavaScript pour écrire des composants optimisés que JavaScript ne saurait produire.

Pas un seul instant, nous n’avons cessé de croire en GWT. Google l’a clairement placé comme sa technologie de choix pour SpreadSheet, AdWords, Gmail et désormais Inbox. Les prochaines années vont être très riches et l’arrivée des WebComponent risque également d’abonder dans le sens de Java.

Sami Jaber (DNG Consulting)