🔝 Retour au Sommaire
Partie 5 — Applications : desktop, web et services
Prérequis recommandés : chapitre 3 (POO), chapitre 4 (Java moderne & fonctionnel),
chapitre 8 (concurrence) et chapitre 6 (build & dépendances).
Outils Eclipse mobilisés : e(fx)clipse, Scene Builder, WindowBuilder, configurations
Run/Debug — voir Annexe I. 🔧
Soyons honnêtes : en 2026, la plupart des applications grand public sont web ou mobiles.
Le bureau n'est plus le terrain par défaut. Mais il n'a pas disparu pour autant — il occupe un
créneau précis et durable, là où une interface riche, réactive et autonome reste le bon choix :
- Outils métier internes (gestion, saisie, supervision) où l'on privilégie la productivité à l'esthétique d'un site vitrine ;
- Logiciels scientifiques, techniques et d'ingénierie : visualisation, instrumentation, calcul intensif, interfaces denses ;
- Outils pour développeurs et professionnels (Eclipse lui-même en est un exemple) ;
- Applications devant fonctionner hors-ligne, manipuler intensivement le système de fichiers, ou s'intégrer finement au système d'exploitation.
Java est particulièrement à l'aise sur ce terrain : portabilité (« écrire une fois, exécuter
partout »), maturité, et un écosystème éprouvé. Une même base de code livre une application
native sur Windows, Linux et macOS.
Java propose deux boîtes à outils d'interface graphique, toutes deux traitées dans ce chapitre.
Comprendre leur positionnement respectif est la première décision d'architecture à prendre.
JavaFX (projet OpenJFX) est la boîte à outils moderne, recommandée pour tout nouveau
projet. Elle apporte une approche déclarative (FXML), un style par CSS, la liaison de
données (properties/bindings), l'animation et un riche ensemble de contrôles.
⚠️ Point pratique essentiel : depuis Java 11, JavaFX n'est plus livré avec le JDK. Elle se
distribue séparément et s'ajoute comme dépendance Maven/Gradle (ou via le SDK Gluon).
C'est une source classique de confusion : un importjavafx.*qui « ne se résout pas » vient
presque toujours d'une dépendance manquante. On verra comment la configurer proprement dans
Eclipse en 11.2.
Swing est la boîte à outils historique. Contrairement à JavaFX, elle fait toujours partie
du JDK (module java.desktop) — rien à installer. Elle est en mode maintenance (pas de
nouvelles fonctionnalités), mais reste stable et supportée. Surtout, un volume considérable
d'applications d'entreprise repose encore dessus : savoir lire, maintenir et faire évoluer du
code Swing est une compétence très demandée, traitée en 11.3.
💡 À situer aussi : AWT est la couche fondatrice sous-jacente à Swing (rarement utilisée
directement aujourd'hui), et SWT est la boîte à outils propre à l'écosystème Eclipse (celle
qui fait fonctionner l'IDE lui-même). D'autres pistes — Compose Multiplatform, interfaces
web embarquées — relèvent de la mise en perspective : voir le chapitre 18.
Conformément à l'esprit de cette formation, on exploite réellement l'IDE :
- JavaFX : le plugin e(fx)clipse (assistant de projet, coloration FXML) et l'éditeur visuel Scene Builder pour dessiner les interfaces FXML — détaillés en 11.2.
- Swing : le concepteur visuel WindowBuilder, qui génère et synchronise le code des fenêtres — détaillé en 11.3.
- Au quotidien : configurations Run/Debug, et le débogueur d'Eclipse pour suivre ce qui se passe sur le thread d'interface (en lien direct avec le chapitre 8).
À l'issue de ce chapitre, vous saurez :
- Choisir entre JavaFX et Swing selon le contexte (projet neuf vs maintenance) ;
- Construire une interface moderne avec JavaFX : scènes, nodes, layouts, FXML, liaison de données, CSS et contrôles ;
- Lire et maintenir une application Swing existante ;
- Gérer correctement la concurrence d'interface — la règle d'or de toute UI : ne jamais bloquer le thread graphique ;
- Internationaliser une application (i18n/l10n) avec les
ResourceBundle; - Situer l'étape d'empaquetage d'une application de bureau (installeurs natifs, traités au chapitre 15).
| Section | Sujet | Repère |
|---|---|---|
| 11.1 | Panorama : JavaFX vs Swing — lequel choisir | Grille de décision |
| 11.2 | JavaFX — l'UI desktop moderne (FXML, Scene Builder, bindings, CSS) | ⭐ Cœur du chapitre |
| 11.3 | Swing — maintenir l'existant (composants, layout managers, WindowBuilder) | 🏛️ Legacy |
| 11.4 | Concurrence UI : thread d'application, tâches en arrière-plan | |
| 11.5 | Internationalisation (i18n/l10n, ResourceBundle) |
|
| 11.6 | Empaquetage d'une application desktop → renvoi au chapitre 15 | 🔧 |
- Nouveau projet → JavaFX. Boîte à outils moderne, mais dépendance externe à déclarer (elle n'est plus dans le JDK).
- Maintenance / existant → Swing. Toujours inclus dans le JDK, stable, encore très présent en entreprise.
- La règle d'or de toute interface : on ne bloque jamais le thread graphique — les traitements longs partent en arrière-plan (11.4).
- L'empaquetage en installeur natif (via
jpackage) n'est pas traité ici mais au chapitre 15 : un seul endroit pour tout le déploiement.
Prêt ? La première étape est de trancher entre les deux piliers en toute connaissance de
cause : direction le panorama comparatif en 11.1.