Skip to content

14. Pour aller plus loin

Ce document a présenté le langage Java et les bibliothèques les plus utilisées pour écrire des applications en couches, des clients et serveurs réseau et des services web. Voici les principaux thèmes qui le prolongent.

14.1. Le traitement des documents XML

Le JSON a largement remplacé XML pour les échanges de données, mais XML reste présent (fichiers de configuration comme les [pom.xml] de Maven, formats de documents, services SOAP existants). Le JDK offre plusieurs API dans le paquetage [javax.xml] :

  • DOM ([DocumentBuilder], [Document], [Element]) : le document est chargé en mémoire sous forme d'arbre, que l'on parcourt et modifie ;
  • StAX ([XMLStreamReader], [XMLStreamWriter]) : le document est lu ou écrit au fil de l'eau, sans être chargé entièrement en mémoire ;
  • XPath ([javax.xml.xpath]) pour interroger un document, et XSLT ([javax.xml.transform]) pour le transformer.

Hors du JDK, la bibliothèque Jakarta XML Binding (JAXB) associe des classes Java à des documents XML, comme Jackson le fait pour JSON (chapitre 5) ; Jackson sait d'ailleurs lire et écrire du XML avec son module [jackson-dataformat-xml].

14.2. Les applications web

Le chapitre 13 ne présente que les services web (des applications qui produisent des données). Pour les applications web qui produisent des pages HTML, l'écosystème Java propose :

  • Spring MVC avec un moteur de modèles comme Thymeleaf : des pages générées côté serveur ; l'auteur a écrit le cours Introduction étape par étape au framework web Spring MVC (septembre 2026) ;
  • Jakarta EE (anciennement Java EE), l'ensemble de spécifications dont font partie les servlets, JPA (Jakarta Persistence, chapitre 11), CDI (injection de dépendances) et JAX-RS (services REST), implémenté par des serveurs d'applications comme WildFly, Payara ou Open Liberty ;
  • d'autres cadriciels plus légers ou plus récents : Quarkus, Micronaut, Helidon, Javalin ;
  • des interfaces écrites en JavaScript (Vue.js, Angular, React) qui consomment des services web Java ; l'auteur a écrit le cours Introduction étape par étape au framework Vue.js (septembre 2026).

14.3. Les applications de bureau et mobiles

Ce document ne présente pas les interfaces graphiques : les applications de gestion s'écrivent aujourd'hui le plus souvent avec des interfaces web. Le JDK fournit toujours la bibliothèque Swing, et la bibliothèque JavaFX (distribuée séparément depuis Java 11, par le projet OpenJFX) permet d'écrire des interfaces de bureau modernes. Les notions des chapitres 7 (écouteurs d'événements) et 9 (programmation asynchrone) s'y appliquent directement. Sur mobile, les applications Android s'écrivent en Java ou, de plus en plus, en Kotlin, un langage qui produit lui aussi du bytecode pour la machine virtuelle Java.

14.4. Les tests

Le chapitre 6 présente JUnit. On le complète souvent par :

  • la bibliothèque AssertJ, qui offre des assertions plus lisibles ([assertThat(liste).hasSize(7).contains(x)]) ;
  • la bibliothèque Mockito, qui crée des « doublures » (objets simulés) des couches dont dépend la couche testée ;
  • Testcontainers, qui lance une vraie base de données (MySQL, PostgreSQL…) dans un conteneur Docker le temps des tests d'intégration ;
  • les outils de test de Spring Boot ([@SpringBootTest], [MockMvc]) pour tester un service web sans le déployer.

14.5. Les performances

La machine virtuelle Java compile le bytecode à la volée et l'optimise pendant l'exécution, ce qui donne d'excellentes performances aux programmes qui tournent longtemps. Parmi les outils qui vont plus loin :

  • l'outil JMH (« Java Microbenchmark Harness ») pour mesurer précisément les performances d'un code, en tenant compte du préchauffage de la machine virtuelle ;
  • JDK Flight Recorder et JDK Mission Control, qui enregistrent et analysent le comportement d'un programme en production ;
  • la compilation anticipée en code natif avec GraalVM Native Image : un exécutable autonome qui démarre en quelques millisecondes, au prix de restrictions sur la réflexion ; Spring Boot et Quarkus savent produire de tels exécutables ;
  • le choix du ramasse-miettes (G1 par défaut, ZGC pour des pauses très courtes sur de gros tas mémoire).

14.6. Le déploiement

Un programme Java se déploie de plusieurs façons : sous forme d'archive [.jar] exécutée par un JDK installé sur le poste ([java -jar application.jar] ; Spring Boot produit un [.jar] autonome qui contient toutes ses bibliothèques), sous forme d'application autonome qui embarque une machine virtuelle réduite à ce dont elle a besoin (outils [jlink] et [jpackage] du JDK), ou dans un conteneur Docker (Spring Boot produit directement une image de conteneur par [mvn spring-boot:build-image]).

14.7. Les ressources