I. Le livre

Image non disponible

Quelle a été votre motivation pour écrire ce livre ?

  • Depuis plusieurs mois, j'ai accumulé les supports de cours, les notes, les documents d'audits et autres projets Java EE. Ainsi, j'avais à ma disposition plus de mille pages de support concernant la plate-forme Java EE.
  • Lors de la sortie de Java EE 6, il y a plus d'un an, j'ai actualisé ces contenus en les adaptant à la dernière version en fonction des besoins utilisateurs (GlassFish 3, JPA 2, JSF 2...).
  • Ma motivation a été double, car elle a été axée sur les besoins des développeurs afin de fournir un ouvrage à la fois théorique, pratique et très détaillé mais également dans le but de mettre en œuvre des projets concrets utilisant les développements n-tiers en Java EE, en correspondance avec la sortie de la nouvelle plate-forme.

Est-ce que votre livre est destiné à des développeurs débutants ou expérimentés ? Est-ce un livre purement technique ou est-ce qu'il traite également l'historique de la plate-forme Java EE et quelle est sa place dans le développement d'applications ?

  • Le livre est destiné à des développeurs débutants car il reprend les concepts de base, mais également aux expérimentés car il entre en détail dans les concepts d'un point de vue théorique et technique.
  • L'ouvrage est très volumineux (plus de 900 pages), ce qui m'a permis de présenter l'historique de la plate-forme, les versions utilisées, les architectures, les outils et les services associés pour le développement d'applications professionnelles.

Quel est votre chapitre favori et pourquoi ?

  • Je n'ai pas vraiment de préférence en ce qui concerne les chapitres, mais j'ai particulièrement aimé le travail autour du serveur Java EE GlassFish.
  • En effet, la rédaction de ce chapitre m'a permis de questionner le personnel Oracle et d'appliquer en détail les concepts utilisés en entreprises avec d'autres serveurs.

Ce livre fait presque 1000 pages. Combien de temps avez-vous mis pour l'écrire ? J'ai moi-même écrit un livre et je sais combien de travail et d'investissement personnel cela prend. Est-ce que cela a été difficile pour vous de trouver le temps de l'écrire ?

  • L'écriture m'a demandé environ trois années depuis la rédaction de mon premier livre "Guide de développement d'applications Web en Java". J'ai collecté depuis l'écriture de mon premier livre énormément de notes et réalisé beaucoup de supports sur la plate-forme et la gestion de projet en Java.
  • Pour le travail d'écriture, j'ai procédé par période de synthèse, de recherche et de mise en application en alternant avec des temps de repos afin de trouver les réponses à mes questions et pour permettre de laisser mûrir mes idées autour des exemples appliqués.

II. Le serveur d'application GlassFish

Le chapitre 2 est entièrement consacré à GlassFish. Écrire un chapitre sur un serveur d'application n'est pas une chose simple, quels sont les services fournis par le serveur que vous avez pu couvrir ?

  • J'ai essayé de couvrir un maximum de services fournis par le serveur et je remercie pour cela Alexis Moussine-Pouchkine et la société Serli.
  • Alexis m'a aidé sur pas mal de points, notamment sur le clustering et sur l'architecture du serveur. Ainsi, le second chapitre traite notamment des points suivants :
    • IIOP, ACC, l'architecture GlassFish, l'installation sur différents OS, le couplage avec Apache, les domaines, les Realms, l'administration du serveur, le couplage avec PHP, le monitoring, le versioning ou encore l'optimisation des performances.

Pouvez-vous nous donner quelques conseils ou astuces utiles pour GlassFish ?

  • Le serveur GlassFish, notamment avec sa nouvelle version est très simple à utiliser, bien plus que certains serveurs concurrents. Sa mise en place sur une machine Linux est très simple et je conseille d'ailleurs de toujours utiliser la version livrée à partir d'une archive, sans installeur.
  • Le couplage de GlassFish avec un outil de monitoring comme JConsole permet de mettre en oeuvre une application professionnelle facile à maintenir et à superviser.
  • L'interface d'administration développée avec JSF est largement épurée désormais et facilite l'administration du serveur. L'utilitaire en ligne de commandes asadmin est également très utile pour réaliser des opérations d'administration.

III. La plate-forme Java EE

Que pensez-vous de la plate-forme Java EE 6 ?

  • La plate-forme Java EE 6 est largement épurée et il est désormais aisé de développer des EJB par exemple ou d'utiliser un serveur de messagerie en association à la plate-forme. L'ajout de nouvelles annotations et le principe de l'injection permettent de mettre en place des projets très rapidement.
  • Si j'avais un petit reproche à faire, il serait en direction de JSF 2 que je trouve encore un peu lent en terme d'exécution et assez complexe à mettre en oeuvre pour certaines fonctionnalités, bien que cela s'améliore.
  • Pour résumer, la plate-forme Java EE 6 n'est plus réservée à une élite et à des développeurs expérimentés, mais permet au contraire de développer des applications puissantes sans trop d'effort. Les technologies récentes comme CDI et Bean Validation sont très intéressantes et méritent d'être étudiées en détail.

Le développement d'applications avec les EJB a grandement été simplifié depuis la version 3. Malgré tout, je constate encore un peu de résistance de la part de certains développeurs à les utiliser. Quels sont les avantages des EJB en général et des EJB 3.x en particulier que vous mettriez en avant pour les convaincre ?

  • Je constate également la même résistance de la part de certains développeurs qui préfèrent utiliser des requêtes « en dur » ou un outil de mapping conventionnel.
  • Depuis la version 3, les EJB sont simplifiés (grâce aux annotations notamment), il est d'ailleurs possible d'utiliser ces composants dans une archive WAR désormais.
  • Le grand avantage de ces composants est la gestion des transactions en natif et le principe d'atomicité. De même, le fait de déporter le tiers métier avec ces composants permet d'isoler la couche et d'utiliser différents types de clients comme les services Web, ACC avec Java SE, Flex ou autres.
  • Enfin, lors des développements, j'utilise souvent un déploiement EAR avec la couche métier en EJB et la couche Web avec le sous-projet WAR. Ainsi, dès que la couche business est fiable, elle est déployée à part et les modifications sont uniquement réalisées sur le projet Web.

Si vous deviez choisir entre les EJB 3 et Spring pour développer une nouvelle application, quelle technologie utiliseriez-vous ?

  • EJB 3 sans hésitation afin de coller aux recommandations d'Oracle et pour bénéficier de la souplesse de la nouvelle spécification EJB 3.1.
  • Spring est un très bon framework mais j'apprécie le fait d'utiliser les recommandations et standards afin de conserver un système pérenne et de monter en compétence sans être obligé de tout remettre en cause à chaque version.

Côté couche Web, même type de question : entre Struts 2 et JSF 2, que choisissez-vous ?

  • Comme vous le savez je suis l'auteur d'un ouvrage sur Struts 2 et j'utilise ce framework pour plusieurs projets Java EE. Je préfère JSF 2 à Struts pour la partie Vue du modèle MVC. En effet, facelets est bien pensé et l'utilisation de librairies comme RichFaces ou PrimeFaces est très intéressante et permet de gagner du temps.
  • Ensuite, le concept de ManagedBean et de cycle de vie JSF est très intéressant avec sa notion de framework de type composant. Le fait que l'injection soit native avec JSF est un plus par rapport à Struts, j'ai d'ailleurs été obligé de développer un plug-in Struts pour pouvoir injecter les EJB 3.1 par annotation.
  • De son côté, Struts est plus orienté action et cela simplifie son utilisation, mais la couche Vue est pauvre et il est possible de faire un peu « n'importe quoi » avec les vues JSP. Par contre, les plug-ins et la gestion des redirections ou des messages est bien plus performante avec Struts. Il est par exemple possible de conserver des paramètres entre des pages malgré une redirection complète sans passer par un filtre avec des sessions en JSF.
  • Pour résumer, j'apprécie ces deux frameworks et il y a des bonnes idées à prendre des deux côtés.

Dans le chapitre 6, vous montrez comment développer des services Web de type REST avec JSON. Quels avantages voyez-vous à l'approche REST par rapport à l'approche SOAP, plus ancienne ?

  • L'approche SOAP est encore très largement utilisée dans les entreprises et correspond à des besoins spécifiques, même si elle s'essouffle sur Internet. De même, elle reste à mon avis beaucoup plus puissante que REST pour certains développements notamment grâce au fait que c'est un standard et que les artéfacts générés sont très proches du code serveur (classes, méthodes...).
  • Par contre, pour utiliser des services qui doivent être déployés par divers clients, qui peuvent utiliser du cache et qui nécessitent une exécution sur différents supports (ordinateur, mobile, tablette...), REST est sans doute plus adapté. Ce modèle d'architecture est plus simple à mettre en oeuvre que SOAP et permet une exploitation rapide mais ne repose pas sur un standard et le code client peut très vite être complexe.

IV. Conclusion

Quelles sont vos technologies de prédilection ?

  • Mes langages de prédilection sont ceux du Web et plus particulièrement Java EE, même si j'ai longtemps travaillé avec PHP également.
  • J'ai utilisé pendant plusieurs années les outils Eclipse mais je préfère désormais utiliser NetBeans en association avec Visual Paradigm pour l'analyse et la modélisation.
  • Ensuite, j'utilise les frameworks Java EE comme Struts et JavaServer Faces en association avec JPA et les EJB.
  • Concernant le serveur, ma préférence va vers GlassFish et notamment sa dernière version qui améliore beaucoup de points tout en facilitant son utilisation. Le déploiement avec un nom de domaine, le clustering, le versioning ou le load-balancing sont désormais des services simples à mettre en oeuvre.

Que pensez-vous de developpez.com ?

  • Developpez.com est une communauté très active et riche en terme de contenu. J'utilise le site pour des questions en CSS ou HTML 5 par exemple. Bien sûr, j'essaie de répondre aux questions concernant Java EE dès que j'ai du temps, mais je trouve les modérateurs très réactifs.
  • Pour mon nouvel ouvrage, je vais proposer un extrait suite au sondage en ligne. Mon but étant de partager avec les développeurs Java EE et d'échanger intelligemment avec les passionnés du sujet.

V. Liens

VI. Remerciements

Je tiens à remercier Patriarch24 pour ses conseils, remarques, relectures ainsi que pour sa correction orthographique.