On a l’impression que ça fait des lustres que l’architecture REST s’est imposée face à SOAP pour rendre les applications accessibles sur le web. REST, conjointement avec JSON et HTTP, s'est avéré beaucoup plus simple pour délivrer des services Web que SOAP, longtemps critiqué à cause de sa complexité. Aujourd’hui, Oracle considère REST et JSON comme des éléments essentiels pour faire évoluer Java EE. L’an dernier, après les protestations de la communauté - celle-ci reprochait à Oracle d’avoir négligé la plate-forme d'entreprise - l’éditeur a entamé la rénovation de Java EE pour les microservices et les plates-formes cloud. Les premiers résultats de ces efforts seront visibles dans Java EE 8, attendu en octobre. « Aujourd’hui, quand les gens développent des microservices, ils se basent souvent sur REST, ce qui justifie que nous nous concentrions sur JAX-RS (API Java pour RESTful Web Services) et explique que cette spécification clé bénéficie d’une mise à niveau », a déclaré Mike Lehmann, le vice-président de la gestion produits d’Oracle.
Les améliorations de la spécification JAX-RS 2.1 concernent différentes fonctionnalités, notamment les événements Server-Sent Events (SSE) et les intégrations avec JSON-B et Contexts and Dependency Injection (CDI). Java EE 8 intègrera JAX-RS 2.1, ce qui veut dire que les communications REST seront facilitées. Selon Mike Lehmann, cette méthode de communications est utilisée presque par défaut par les gros microservices pour communiquer entre eux. « REST est un élément clé de la plupart des microservices », a déclaré pour sa part Reza Rahman, architecte senior chez CapTech et par ailleurs directeur du groupe d'intérêt Java EE Java Guardians et ancien évangéliste Java EE d’Oracle. « De fait, JAX-RS 2.1 - l'API REST qui sera incluse dans Java EE 8 - apportera des améliorations très conséquentes ».
REST et HTTP2 intégrées dans Java EE
Toutes les enquêtes récentes menées auprès de développeurs Java montrent une forte adhésion pour REST et les microservices de Java EE. Sur les 1 700 utilisateurs interrogés par Oracle en fin d’année dernière, la majorité a souhaité voir les deux technologies REST et HTTP2 intégrées dans Java EE. Au mois de décembre, Oracle a annoncé que l’essentiel du travail sur ces deux technologies, JAX-RS 2.1 inclus, était déjà achevé. Oracle travaille également sur le serveur d'application Glassfish, afin de fournir une implémentation EE de référence et mettre à jour diverses requêtes de spécification Java. Dans une enquête conjointe réalisée par Java EE Guardians et DZone, il est apparu que 44 % des personnes interrogées souhaitaient des fonctionnalités normalisées de type uber-JAR (pour la programmation Java et les dépendances), des découvertes, des indicateurs, des patterns Circuit Breaker et Bulkheads pour architecturer leurs microservices. Mais 27 % ont estimé que Java était déjà bien adapté pour construire des microservices pratiques. Enfin, seuls 4 % ont estimé que les microservices étaient trop médiatisés.
Les utilisateurs Java accordent également une grande importance à JSON-B, l'API Java qui permet de manipuler des documents JSON. « Le format d'échange de données JSON fournit le mécanisme de formatage des données pour le protocole de communication Wire », a précisé Mike Lehmann. C’est pourquoi Java EE 8 intègrera JSON-B 1.0, lequel permet de lier un objet JSON au langage Java, et JSON-P 1.1 (JSON avec Padding), lequel fournit une API de parsing. « Elles sont souvent utilisées par les programmeurs qui développent des microservices pour appeler d'autres microservices, et pour traiter et travailler avec la charge utile présente dans l’appel REST », a encore expliqué le vice-président de la gestion produits d’Oracle. Java EE 8 comporte également des aménagements pour le HTTP2 : même si cette spécification n'est pas clairement orientée vers les microservices, elle fournit une API HTTP2 standard. Pour le cloud, « Java EE et Java servent essentiellement de runtimes sur la plate-forme cloud », a encore déclaré Mike Lehmann. « Ils doivent être capables d'interagir avec des fonctions courantes de la plate-forme cloud, comme l'accès à la base de données », a-t-il ajouté. Les API de programmation REST et JSON intégrées à Java permettent d’interagir avec ces fonctions. « Avec Java EE 8, comme avec n'importe quel type de plate-forme de microservices, nous voulons nous assurer que les programmeurs peuvent interagir facilement avec les services cloud - stockage, gestion de la persistance, surveillance, et ainsi de suite », a précisé Mike Lehmann.
Java EE9 déjà trop normalisé
Oracle a déjà commencé ses travaux sur Java EE 9, dont la sortie est prévue en 2018. Cette future version devrait comporter des fonctionnalités pour des services évolutifs et indépendants et pour le soutien des Key Value Store (KVS). Cependant, Reza Rahman se demande si Java EE 9 est bien orienté. « Personnellement, au regard des évolutions envisagées pour Java EE 9, je me demande si Oracle n’est pas sur le point de normaliser prématurément un certain nombre de fonctions qui ne devraient pas encore l’être », a-t-il déclaré. Parmi ces fonctions, il cite une nouvelle API pour configurer dynamiquement les applications Java EE, le support natif d'OAuth/OpenID Connect, les services de vérification de la santé et la modularité basée sur Java SE 9. Si Mike Lehmann est d'accord avec les concepts de programmation mentionnés par Reza Rahman pour EE 9, il insiste sur le fait que pour le moment Oracle se concentre en priorité sur Java EE 8. « Actuellement, notre objectif principal est de boucler et de livrer EE 8 », a-t-il répété. Java EE 7, la version actuelle disponible depuis juin 2013, avait ajouté le support HTML5. Elle prend en charge JAX-RS 2.0 pour les applications RESTful.
Commentaire