Note de lecture : Wicket in Action, par Martijn Dashorst & Eelco Hillenius

Note : 7 ; Un apprentissage progressif, classique et sans surprise mais efficace d’un framework Web à la sauce client riche.

Wicket est un Framework de présentation Web vraiment à part. En effet, c’est à ma connaissance le seul à être statefull. En cela et par sa séparation HTML / Java, il me rappelle beaucoup les frameworks d’IHM Windows avec lesquels j’ai longtemps travaillé (OWL et MFC). C’est sans doute pour cela que je me sens à l’aise avec.

Wicket in action est sans nul doute un très bon tutorial pour comprendre et rentrer dans Wicket, par la pratique.

Le premier chapitre nous présente un incontournable « Hello, World » à la sauce Wicket. C’est très bien … à l’exception de mon incapacité à faire fonctionner cela par moi-même ! En fait, certains ingrédients nécessaires viennent plus tard, beaucoup plus tard ! C’est l’un de mes seuls reproches par rapport à ce livre par ailleurs excellent.

Le second chapitre fait le tour du Framework, une excellent idée, même si au final l’ensemble est un peu lourd à digérer pour un début. Mais les chapitres suivants vont revenir sur chacun des éléments.

Une application web, ça commence par une page, puis deux, puis trois. Avec le troisième chapitre les choses sérieuses commencent et on y construit une vraie amorce d’application Web, avec du HTML et des pages Wicket mappant des composants, une redirection de page, etc… C’est aussi le début de l’application d’exemple du livre. S’il n’y avait qu’un seul chapitre à lire, ce serait celui-ci.

On se plaint parfois de la complexité des modèles Wicket, mais ceux-ci sont admirablement expliqués au chapitre 4, en avançant progressivement sur les types de modèles de plus en plus complexes. Bravo !

Le chapitre 5 sur les liens, labels et répéteurs nous donne l’impression de revisiter une partie du chapitre 3. C’est une impression assez bizarre. Mais la qualité pédagogique est toujours au rendez-vous.

Même long de presque 40 pages, le chapitre 6 sur les formulaires explique clairement les composants de saisie, mais aussi la cinématique de fonctionnement du formulaire, c’est à dire son cycle de vie.

Le chapitre 7 conclut la seconde partie de ce livre en présentant la composition des pages, la manière de modulariser celles-ci et d’améliorer ce faisant la réutilisabilité.

La troisième partie s’attache aux usages avancés de Wicket. Le chapitre 8 ouvre le bal avec le développement de composants réutilisables. Pas franchement facile à suivre.

Plus important (on aurait pu mettre ça en seconde partie), l’utilisation des CSS et des ressources est au cœur du chapitre 9. Un contenu finalement indispensable.

Le chapitre 10 conclut cette 3ème partie, et c’est avec l’inévitable volet Ajax de Wicket. Je ne suis pas franchement sûr que celle-ci soit toujours d’actualité avec l’avancée des librairies Ajax modernes, dont JQuery, pour laquelle une adaptation Wicket existe : WiQuery.

La quatrième partie évoque la mise en production des applications Wicket. On commence au chapitre 11 par évoquer la sécurité et l’usage des contextes de session. Le chapitre 12 parle d’internationalisation. Nécessaire mais ennuyeux.

Le  chapitre 13 s’intéresse à l’intégration avec Spring et Hibernate. C’est un sujet important, mais hélas pas très bien traité ici.

Le dernier chapitre (la mise en production) nous réserve une étonnante surprise : il débute par l’évocation des tests unitaires ! Franchement on aurait pu débuter le livre par ça, ou presque ! Puis on évoque un reste à faire de petits sujets : configuration, logging, monitoring (avec JMX), etc..

Le livre est vraiment excellent. Je le conseille (presque) sans réserve aux personnes souhaitant se mettre à Wicket. Mes réserves, les voici :

Quelques bizarreries dans l’ordonnancement des sujets, mais rien de grave.

Un contenu qui commence à dater : il s’agit de la version 1.3 de Wicket, antérieure à Java 1.5 ; la version courante fait un usage abondant des génériques et rend légèrement obsolète certaines parties de code. Le texte mériterait un rafraichissement !

wicket-inaction-manning

Référence complète : Wicket in Action – Martijn Dashorst & Eelco Hillenius – Manning 2008 – ISBN: 1932394982 ; EAN: 978 1932394986

Wicket in Action


http://www.goodreads.com/book/add_to_books_widget_frame/1932394982?atmb_widget%5Bbutton%5D=atmb_widget_1.png

Note de lecture : Liferay, Portal Enterprise Intranets, par Jonas X. Yuan

Note : 3 ; Un tour du produit vu par l’utilisateur sans beaucoup d’intérêt.

La qualité des ouvrages publiés par Packt pub peut s’avérer assez variable. Hélas, ici on n’est pas dans le meilleur. Je dois aussi avouer qu’il s’agit d’un choix éditorial de s’être concentré sur l’utilisation de l’outil (et de ses portlets) plutôt que sur le volet architecture ou administration. Je suis donc un peu déçu, mais l’angle adopté pourra satisfaire un lecteur souhaitant plutôt découvrir l’outil et en faire le tour des fonctionnalités. A cet égard, les 375 pages du livre sont découpés en 13 Chapitres.

Je passe rapidement sur le 1er chapitre qui ne parle pas réellement de Liferay, mais de l’intérêt d’utiliser un portail pour un intranet. Le second chapitre rentre d’avantage dans le vif du sujet en nous proposant de réorganiser les pages et la navigation dans le portail, le tout via des manipulations interactives. Une bonne entrée en matière, je dois avouer.

Le 3ème chapitre évoque la gestion des utilisateurs et des droits à différents niveaux. Il manque une explication synthétique de cette gestion des droits par ailleurs complexe. Hélas encore, les aspects d’intégration LDAP et SSO sont évoqués plus que légèrement.

Le 4ème chapitre est consacré à la portlet forum et à la gestion des tags. Une vue utilisateur et trop superficielle à mon goût. Il en vu de même pour les chapitre 5 et 6 consacrés respectivement au Wiki et aux Web Forms, puis aux blogs et des flux RSS. On pourra toujours se dire qu’à l’issu de ces 4 chapitres on a une vue intéressante des portlets standard du produit !

Le chapitre 7 continue le tour des portlets, avec une petite originalité : WSRP, c’est à dire l’accès aux « remote portlets », mais tout ceci reste bien superficiel. Le chapitre 8 est dans la même ligne, expliquant l’utilisation du CMS interne de Liferay, mais sans vraiment entrer dans le fond.

Bref, tout ça continue dans la même lignée jusqu’au chapitre 13. Dans l’ensemble ce livre n’est pas foncièrement mauvais, il est simplement inutile, car il donne fort peu de choses par rapport au tour du propriétaire que l’on peut faire par nous même. J’aurais aimé une compréhension plus en profondeur de l’outil, qui aurait justifié l’existence de ce titre, mais que nenni !

Liferay-Portal-Enterprise-Intranets

Référence complète : Liferay, Portal Enterprise Intranets – Jonas X. Yuan – Packt publishing 2008 – EAN : 978 1 847192 72 1

Liferay Portal Enterprise Intranets


http://www.goodreads.com/book/add_to_books_widget_frame/1847192726?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Pro Wicket, par Karthik Gurumurthy

Note : 6 ; Une bonne surprise : globalement clair et pédagogique

Le monde Java s’étoffe décidément de nombre de frameworks open-source aussi surprenants qu’inventifs. Ils constituent, à mon avis, bien plus l’avenir de la plateforme Java Enterprise que l’approche normative que pousse Sun contre vents et marées. Bien sûr, il y a aussi un phénomène de mode sur tous ces frameworks open-source, les nouveaux poussant les anciens. Wicket est l’un des nouveaux venus et vient concourir dans la catégorie pourtant déjà surpeuplée des frameworks de présentation Web !  Mission accomplie, pourtant, car la qualité de ce framework et son approche « disruptive » (une approche mixte xhtml / Java, mais pilotée par le Java) car basée sur des ressources non managées et stateful, en ont rapidement fait un produit populaire. Il a d’ailleurs été accueilli au sein de la communauté Apache.

Tout framework majeur finit par avoir son livre. Dans le cas présent, il n’en existe (ou existait, devrais-je dire) qu’un, celui-ci. Autant dire que je craignais le pire, car le premier livre sur une technologie est pratiquement toujours un ratage total, l’auteur se focalisant plus sur la mise sur le marché que sur la qualités du texte. Apress fait hélas partie des éditeurs soutenant cette approche. A la lecture de ce livre, je dois m’avouer soulagé et agréablement surpris.

Le point fort du livre est sans conteste son approche pédagogique : le framework est introduit progressivement, en commençant par un exemple simple et fonctionnel. Chaque étape, chaque nouvelle fonctionnalité est introduite dans l’étape précédente par la mise en évidence de la lacune de fonctionnalité correspondante. Les exemples sont nombreux et occupent une part importante du texte (pas loin de 40% du texte), mais ils sont hélas souvent émaillés de petites erreurs qui heureusement ne gênent pas leur compréhension.

L’ouvrage est divisé en 9 chapitres, ceux-ci sont donc relativement gros, car le texte compte près de 300 pages, sans les annexes. Le premier chapitre est globalement l’équivalent d’un « hello world » assez étoffé. En réalité, on pourrait déjà écrire et déployer des applications Wicket assez simples à la fin des 33 pages de ce chapitre ! C’est tout dire…

Le chapitre 2 couvre un aspect plus spécifique du framework : les éléments de validation et de conversion. Chemin faisant, nous explorons quelques éléments plus avancés tels que la gestion des propriétés ou les listeners de vues.

Le chapitre 3 est sans aucun doute le plus consistent et le plus important du livre. D’abord par ses 60 pages, ensuite car il couvre complètement une petite étude de cas permettant d’explorer les aspects les plus importants du framework. Vous pouvez facilement vous arrêter à la fin de ce chapitre pour écrire votre première application Wicket et reprendre les aspects plus avancés ultérieurement.

Le chapitre 4, couvrant la structuration des pages est à mon avis le moins réussi et le moins clair. J’avoue avoir décroché assez rapidement.

Un des sujets à la mode est l’intégration de Wicket avec Spring, même si il s’agit là du mariage du veau et du cochon tant ces frameworks sont différents dans leur approche. Le chapitre 5 couvre très clairement le « comment » de ce module d’intégration, mais aussi (bien que plus succinctement) les intégrations Tapestry, Hibernate ou JPA.

Le chapitre 6 reprends là ou le chapitre 2 s’était arrêté pour couvrir l’internationalisation. Utile mais pas passionnant.

Le chapitre 7 couvre le développement de composants Wicket personnalisés. Une section à lire seulement après avoir pris un peu de bouteille avec Wicket.

Ajax est un sujet à la mode, le chapitre 8 n’évite pas le sujet car il lui est consacré, mais le sujet reste traité un peu rapidement ici. On a toutefois assez d’éléments pour démarre avec les composants Ajax de Wicket.

Le dernier chapitre couvre deux sujets qui ne sont pas mineurs : comment tester unitairement nos pages et formulaires Wicket, et ce qu’il y a de neuf dans Wicket 2.0.

En bref, voici un livre pour débuter en tout confort avec Wicket. Cela a été un bon achat… à l’époque. Un petit rafraichissement avec la dernière version du framework et tout serait parfait !

pro-wicket

Référence complète : Pro Wicket – Karthik Gurumurthy – Apress 2006 – ISBN : 1-59059-722-2 ; EAN : 978-1-59059-722-4

Pro Wicket


http://www.goodreads.com/book/add_to_books_widget_frame/1590597222?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Liferay Portal Administrator’s Guide 2nd édition, par Richard Sevoz Jr

Note : 3 ; Quand on a vraiment besoin, on n’a pas forcément le loisir d’être difficile sur la forme…

La première chose que l’on découvre quand on prend ce livre en main, c’est qu’on n’a pas envie de lire ! Le format n’est pas pratique (trop grand pour un format poche, mais trop petit pour une lecture confortable), le papier est de qualité très médiocre, la mise en page est lamentable, la qualité des illustrations inexistante et même la typographie n’est pas en reste avec ce charmant carnage.

La bête fait 255 pages hors annexes (celles-ci sont anecdotiques) sur seulement 6 chapitres. Des chapitres assez longs en moyenne, donc.

En parcourant le chapitre 2 « initial setup », on s’aperçois toutefois de certaines choses : d’abord il est vrai que les copies d’écran sont franchement trop nombreuses, même si certaines sont utiles (elles ont souvent des indications comme des parties cerclées, au lieu d’être brutes comme c’est trop souvent le cas). Cela explique la longueur inhabituelle de 89 pages pour ce chapitre. Mais les informations sont claires et précises et des recettes d’installation numérotées permettent de venir à bout de difficultés dont on sait qu’elles prennent du temps sinon. A propos de l’installation, la liste des serveurs d’application pour lesquels est fourni une explication est tout simplement impressionnante.

Le chapitre 3 « configuration » est quand même plus court, avec ses 44 pages. Mais il a un petit goût de tutorial un peu cheap dans sa première partie. Le genre où l’on apprend rien. La partie dédiée à la configuration LDAP rattrape un peu le coup.

La configuration avancée, vous savez celle où l’on parle des « ext » est traitée au chapitre 4. C’est le plus long du livre et de loin, avec ses 90 pages ! Les très complexes fichiers de propriétés sont passés en revue, mais souvent avec des explications franchement sibyllines. La recherche et l’exploitation des informations de ce chapitre sont l’affaire de gens motivés et acharnés … et qui en ont vraiment le besoin. Abandonnez l’idée d’en faire une lecture linéaire. Seule la section dédiée à l’installation des plugins nous offre un oasis d’une relative fraicheur.

Le chapitre 5 « enterprise configuration » nous expose en un peu moins de 30 pages les possibilités de déploiement de Liferay en mode « solid rock » : clustering, cache distribué, déploiement à chaud, etc… sont les sujets qui y sont traités. Le chapitre a le mérite de développer un peu ses explications.

Le dernier chapitre « maintaining a Liferay Portal » parle backup, logging, procédures d’upgrades sur une dizaine de pages.

Voilà un texte auquel on ne s’attaque pas pour le plaisir. Si certains chapitres présentent des procédures d’exploitation claires, l’ensemble de la prose est très sèche et peut surtout être utilisée comme référence. Mais même là, ce n’est pas du grand confort.

Un tel ouvrage se doit de rester à jour par rapport aux nouvelles versions de Liferay. Une troisième édition de cet ouvrage y répond.

liferay-portal-admin-2nd

Référence complète : Liferay Portal Administrator’s Guide 2nd édition – Richard Sevoz Jr – Liferay Press 2008

Liferay Administrator's Guide


http://www.goodreads.com/book/add_to_books_widget_frame/0615196489?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Modular java, par Craig Walls

Note: 8 ; Vraiment un excellent tutorial, sur OSGi d’abord, puis sur Spring DM ! Bravo !

Craig Walls est déjà l’auteur de l’excellent « Spring in Action ». Je connaissais donc déjà ses talents d’auteur. Il n’a pas failli à sa réputation ici. En fait, je pense qu’il a fait encore mieux ! Le challenge de réussir ce tutorial en 200 pages, se partageant entre OSGi « brut » d’abord, puis ensuite sur Spring DM y est aussi pour beaucoup.

Dès le premier chapitre, on est séduit par la limpidité de la présentation d’OSGi et de l’intérêt d’un approche « composant runtime ». On n’en a que d’avantage l’eau à la bouche pour attaquer la première partie, celle qui présentera le développement OSGi sans Spring, soit 90 pages sur 4 chapitres.

Très intelligemment, le chapitre 2 présente la construction d’un bundle OSGi minimaliste, mais où l’on construit toute la plomberie à la main ! C’est bel et bien la meilleure façon de comprendre cette plomberie. Jouer avec la console OSGi (un outil dont la compréhension est indispensable), est le complément naturel de cette approche. C’est l’occasion d’aborder les différentes implémentations d’OSGi et principalement les deux implémentations open source : Equinox et Apache Felix. L’auteur penche pour Equinox, c’est visible.

Le troisième chapitre peut paraître curieux, car on y découvre peu de choses sur OSGi ! L’auteur nous y présente l’architecture de l’application que nous allons construire, mais surtout il introduit les outils PAX construct, une boit à outil qui va vite s’avérer indispensable pour construire et tester les bundles OSGi.

Les chapitres 4 et 5 abordent enfin la création de différents types de bundles et le développement de services. Au bout du 5ème chapitre, nous sommes devenus opérationnels pour construire des bundles OSGi qui coopèrent ensemble. Toute cette première partie constitue un tutorial remarquable.

La seconde partie va aborder l’utilisation de Spring DM afin de faciliter le développement de bundles OSGi en en masquant la complexité. 3 chapitres et 65 pages suffisent à la tâche. Le chapitre le plus important est d’ailleurs le premier de cette partie (le chapitre 6) car il explique comment la plomberie du bundle est prise en charge par le contexte Spring et l’injection de dépendances inter bundles !

C’est aux « web bundles » que ce se consacre le chapitre 7. Je l’ai trouvé personnellement assez complexe, car il a trait à beaucoup de problématiques de configuration, pour déployer des bundles sur Tomcat et sur Jetty et pour régler des problématiques de listener http et autres… Disons que c’est un mal nécessaire (ou incontournable).

Le chapitre 8 revient au développement et nous présente la création de fragments. Je pense que cela aurait pu être présenté en première partie, mais ça marche aussi ici ! Petit détail, cela ne profitera qu’à ceux qui développent avec Equinox. Dommage pour ceux qui ont choisi Apache Felix !

La dernière partie, constituée de deux chapitres, adresse le passage en production : déploiement, administration, configuration et suivi d’exploitation. Tout cela est remarquablement expliqué en peu de pages.

Ce livre ne vous donnera peut-être pas des informations complètes sur tout ce que vous pourriez savoir sur OSGi et Spring DM, ce n’est pas une bible ! Mais je pense que c’est sa qualité première, il se débarrasse du superflu pour se concentrer sur l’indispensable et nous mettre le pied à l’étrier du développement avec Spring DM. Un tutorial, un vrai. La mission est remplie à 100% ! Je conseille sans réserve ce livre qui fut une bonne surprise.

modular-java-pragprog

Référence complète : Modular java, creating flexible applications with OSGi and Spring – Craig Walls – The Pragmatic Bookshelf 2009 – ISBN: 1-934356-40-9 ; EAN: 978 1934356 40 1

Modular Java: Creating Flexible Applications with Osgi and Spring


http://www.goodreads.com/book/add_to_books_widget_frame/1934356409?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Effective Enterprise Java, par Ted Neward

Note : 9 ; Un pur régal ! Book of the year 2005 !

Ce livre mérite bien son titre, car il fait honneur à son grand frère (effective C++), à la fois sur la qualité, la pertinence et la technicité de son contenu, mais également sur le style agréable, vivant et parfois même humoristique (ce qui tire aussi parfois le niveau d’anglais un peu vers le haut). Je ne suis pas vraiment un expert J2EE, mais le livre m’a accroché, car sans être débilitant, il exprime clairement les concepts, mais surtout il s’appuie et développe les principes d’architectures sous-jacents. En fait, le livre aurait pu s’appeler: “effective enterprise applications with J2EE”. Loin d’être un reproche, cela confère de la solidité à l’ouvrage, et même de la pérennité par rapport aux futures évolutions des API. Dans la lignée de “l’effective series” le livre démythifie les API J2EE, et met en perspective la réalité des applications d’entreprise par rapport aux discours commerciaux des vendeurs des serveurs d’application, abordant clairement les aspects que l’architecte “ne peut ignorer” ! Les différentes facettes de l’architecture sont abordées, même celles souvent à peine ou mal évoquées telles que les transactions et la sécurité. Les 75 items du livre sont découpés en 7 volets :

  • Architecture : Traite les sujets tels que répartition données / traitements, gestion des crashs, de la scalabilité et des aspects annexes tels que déploiement, administration et monitoring.
  • Communication : Ce chapitre traite des contextes de communications, allers-retours entre tiers et autres choix de styles de communication
  • Processing : Le traitement de ce chapitre est essentiellement focalisé sur les transactions (techniques et utilisateurs), ce qui comprends les différents types de transaction, d’isolation, ainsi que les points de reprise et es rollbacks
  • State management : Ce sujet englobe les contextes de transaction, mais surtout les sujets afférents à la persistance.
  • Présentation : ce court chapitre traite des clients riches et de la séparation traitement / présentation.
  • Sécurité : Peut-être un des chapitres les plus étonnants, car outre que j’y ai appris pas mal de choses (connaissez-vous le « SQL injection », l’attaque la plus simple et la plus courante qu’un site puisse subir ?), l’auteur met l’emphase d’avantage sur le processus que sur la technique !
  • System : On retrouve ici toute la plomberie bas niveau : garbage collecting, sérialisation, etc…

Au premier abord, le livre est déconcertant, car épais de 450 pages, il ne présente quasiment aucun diagrammes (en présenter quelques uns aurait pu aider), un peu de code (mais cela reste raisonnable et ciblé), mais les craintes s’envolent une fois la lecture commencée. Le style rédactionnel, s’appuyant sur des exemples ne permet pas seulement d’apprendre, mais également de réfléchir et parfois d’anticiper sur la compréhension de la solution. Le livre sert également remarquablement bien de points d’entrée vers d’autres lectures, on peut faire bon usage de la bibliographie commentée.

Voilà un texte qui mériterait sans aucun doute une seconde édition. Car si la substance est bien construite pour résister au temps, celui-ci fait quand même son  œuvre : le livre date de 2005 et beaucoup de choses ont quand même changé depuis. Je prends quand même le risque de vous le conseiller malgré son âge honorable.

effective-enterprise-java

Référence complète : Effective Enterprise Java – Ted Neward – Addison Wesley / Effective software development series 2004- ISBN: 0-321-13000-6

Effective Enterprise Java


http://www.goodreads.com/book/add_to_books_widget_frame/0321130006?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Effective Java, second edition, par Joshua Bloch

Note : 8 ; Il fait honneur à la lignée « effective »

Le titre du livre ne laisse guère planer le mystère : il se veut le pendant Java du désormais célèbre « Effective C++ » de Scott Meyers. Eh bien, on peut l’avouer, le contrat est plutôt bien rempli. Il expose 57 items au long de 232 pages découpés en 10 chapitres. La présence d’un tel ouvrage afin de stigmatiser les bons usages du langage était sans nul doute nécessaire, car si Java  (au contraire du C++) passe pour un langage facile, il n’en est de ce fait que plus aisé (et d’ailleurs plus fréquent) de mal l’utiliser !

Le style du texte est sensiblement différent de celui de Scott Meyers. D’abord on n’y retrouve pas la pointe d’humour qui fait le charme de l’ouvrage C++. Il focalise également un peu moins sur le code de bas niveau, même si nombre d’items sont spécifiquement dédiés à ces aspects. Enfin, l’auteur qui fut « chief architecte » d’une bonne partie des librairies Java oriente souvent son propos par rapport à une vision développement de librairies, alors que c’est un biais somme toute marginal, par rapport au développement d’applications !

Malgré ces petits reproches, il ne fait nul doute que ce livre est un incontournable de toute bibliothèque Java un tant soit peu sérieuse, ne serait-ce que pour utiliser correctement les redéfinitions des méthodes dérivées de la classe Object, comprendre convenablement les « nested classes », certains principes de bases inhérents aux exceptions ou à la sérialisation. Le chapitre consacré aux threads est évidemment plus ardu et également moins pointu que le livre de Doug Lea consacré à ce sujet (et qui fait toujours référence).

Parmi les choses que j’apprécie particulièrement dans le texte : le style très clair, même narratif dirais-je car l’auteur nous guide réellement dans l’explication de l’item tel un conteur. Des fragments de code illustrent le texte et sont particulièrement bien pesés : avec assez de contexte pour donner du sens mais assez concis pour ne pas noyer le lecteur ni être ennuyeux. Globalement j’aime le style très « punchy » avec lequel l’auteur aborde chaque problématique pour nous faire tomber des nues sur tel ou tel comportement du langage, qu’il soit justifié ou non.

Cette seconde édition compte 300 pages pour 68 items. Vous aurez vite fait le calcul sur la taille moyenne de chaque item en nombre de pages ! De toute façon, c’est une lecture à laquelle on prend plaisir tout en apprenant.

Le texte fait de nombreuses références au manuel de référence du langage qui est un complément indispensable à ce livre.

effective-java-2edt

Référence complète : Effective Java, second edition – Joshua Bloch – Addison Wesley / Java Series 2001 – ISBN : 0-201-31005-8

Effective Java(tm) Programming Language Guide


http://www.goodreads.com/book/add_to_books_widget_frame/0201310058?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Concurrent Programming in Java, second edition, par Doug Lea

Note : 9 ; Un remarquable ouvrage sur le multithreading, pour Java et pour les autres langages également … même si on accueillerait volontiers une mise à jour !

J’ai écrit cette note en 2005. Les livres liés à des technologies particulières ont fâcheusement tendance à mal accueillir le passage du temps. Celui-ci subit moins cette tendance car il s’intéresse plus aux concepts sous-jacents mais il vous faudra certainement relativiser certaines parties de mon propos.

S’il est un sujet d’importance sur le développement Java peu abordé aujourd’hui, c’est bien la programmation concurrente. Sans être ignoré, le multi-threading est largement mis de coté, ne serait-ce que parce que le développement coté serveur ne permet pas sa mise en œuvre. Or, il s’agit bien là d’un aspect majeur de conception, important coté client, et plus important encore avec l’avènement des clients riches. O, développeur Java, tu as bien de la chance dans ta misère, car à ta disposition un livre sur le multithreading tu as ! Nous parlons bien entendu du livre de Doug Lea. Bien sûr, il existe d’autres livres sur le sujet, ne vous attardez pas sur ceux-là : le livre de Doug Lea est LE livre. En fait, Doug Lea est le multithreading en Java, car depuis la version 1.5, l’API officielle dédiée au multi-threads est celle développée par l’auteur.

Mais revenons au livre lui-même. Et là, comme disent les jeunes : c’est du lourd ! La lecture des 380 pages du volume n’a rien d’une promenade bucolique, le texte et l’information sont denses. On aurait pu s’attendre à un livre traitant des spécificités de Java sur le multithreading, cet ouvrage va bien au-delà. Comme indiqué dans le titre, on parle avant tout de principes de conception et de patterns, puis de mise en œuvre en Java. C’est l’une des forces du livre : focaliser sur des principes de conceptions à l’aide de patterns, décrivant ainsi le contexte d’utilisation. L’ensemble est supporté par des représentations UML lorsque c’est nécessaire et du code Java avec juste le niveau de détail qui convient. On dénombre ainsi 17 patterns, répartis en 4 chapitres seulement, couvrant les sujets suivants :

  • La programmation concurrente : Ce chapitre évoque les principes de base de la programmation multithreads et des concepts liés tels que la synchronisation, les queues d’évènements, les pools de threads, etc. La base, quoi !
  • Les exclusions : On attaque les choses sérieuses, ou quelles sont les stratégies de base sur l’exclusion (l’élimination, la gestion dynamique ou la gestion structurelle), et comment celle-ci se déclinent en 5 patterns.
  • Les dépendances d’états : Ce chapitre nous montre comment géré en environnement concurrent des comportements dépendants d’états.
  • La création de threads : On couvre ici les choix de conception lié à la gestion au partage et à la création de threads.

Au cas où ce matériel ne suffirait pas à assouvir votre soif de savoir, l’auteur dispense 2 ou 3 pages de références de « lectures supplémentaires » en fin de chaque chapitre. De quoi satisfaire n’importe quelle boulimie ! Les chapitres en eux-même sont hélas un peu volumineux, ce qui conduit à un chapitrage à 4 niveaux, ce qui est trop. L’auteur aurait dû découper le livre en autant de parties et réaliser des chapitres plus courts. Ce sera peut-être ma seule critique.

La qualité de ce livre est en tout point remarquable, c’est en fait une référence incontournable pour quiconque désire s’attaquer au multithreading sur des systèmes objet, même au-delà du langage Java !

Ce livre fait sans contestations possibles, partie de la catégorie des excellents surprises, il est en tout point remarquable, aussi bien par sa couverture du sujet que par sa qualité pédagogique, et ce malgré le niveau relevé du texte. C’est de fait une référence incontournable pour quiconque désirerai s’attaquer au multithreading sur des systèmes objet, même au-delà du langage Java ! Finalement, j’ai un autre regret à formuler : cette édition accuse 5 ans, une 3ème édition mise à jour par rapport à Java 1.5 serait la bienvenue.

Allez Doug, t’as bien mérité ton 9 !

concurent-programming-java

Référence complète : Concurrent Programming in Java, second edition: Design principles and patterns – Doug Lea – Addison Wesley / Java series 2000 – ISBN: 0-201-31009-0

Concurrent Programming in Java: Design Principles and Pattern


http://www.goodreads.com/book/add_to_books_widget_frame/0201310090?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Tika in Action, par Chris A. Mattmann & Jukka L. Zitting

Note : 6 ; Comment faire un livre correct à partir d’un Framework qui ne le justifierait à priori pas !

Tika est un framework de l’écosystème Apache Lucene. Il s’agit d’un framework facile à utiliser, permettant d’extraire des informations de contenu et des métadonnées depuis de nombreux formats de fichiers. Les chapitres 5 et 6 nous disent presque tout ce que l’on a besoin de savoir pour utiliser Tika : extraire le texte et les métadonnées depuis un format de fichier en utilisant la très pratique façade Tika ! Les auteurs sont parvenus à passer de deux chapitres à 15 (200 pages) sans tomber dans le simple remplissage. Ils ont su explorer différentes facettes du Framework en gardant un propos intéressant.

La première partie « getting started » nous met au parfum des problématiques inhérentes aux différents formats de fichiers, à leur détection, à la lecture de leur contenu et des métadonnées. On y couvre aussi une description haut niveau de l’architecture de Tika et la façon de l’intégrer dans un projet. Cette partie se termine par la description de l’étude de cas Lucene : comment Tika s’intègre dans une architecture de moteur de recherche.

La seconde partie est le cœur de l’ouvrage : l’exploitation de Tika. On passe en revue successivement la détection de format, l’extraction du contenu puis des métadonnées pour aborder une intéressante description des algorithmes de détection de langage ! Le dernier chapitre de cette partie « what’s in a file » ne m’a pas laissé un souvenir impérissable.

La troisième partie est consacrée à l’intégration. Bien entendu on aborde la façon dont Tika s’intègre avec Lucene puis on aborde en détail la « search stack » Lucene, ce qui m’a donné une bonne compréhension du rôle des différents frameworks ! Le chapitre sur la façon d’étendre Tika est passé un peu vite à mon gréé et j’aurais aimé voir abordé l’intégration en utilisant Tika packagé en bundle OSGi : dommage !

Les quatre études de cas figurant en quatrième partie n’étaient certainement pas indispensables, surtout qu’elles restent assez superficiellement décrites. Mais elles sont une façon agréable de clore le livre.

Voici un livre qui n’est probablement pas indispensable pour simplement utiliser Tika. Mais les auteurs ont eu l’intelligence d’intégrer du matériel donnant plus de perspective : standards des métadonnées, détection de types, détection du langage, intégration dans une architecture de recherche, etc… Ce n’est donc pas une lecture indispensable, mais elle pourra être source d’inspiration quand à l’usage que l’on peut faire de ce type de fonctionnalités.

tika-inaction-manning

Référence complète : Tika in Action – Chris A. Mattmann & Jukka L. Zitting – Manning 2012 – ISBN : 978 1 935182 85 6

Tika in Action


http://www.goodreads.com/book/add_to_books_widget_frame/1935182854?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : JUnit recipes, par J.B. Rainsberger & Scott Stirling

Note : 7 ; Un peu de déchets, mais beaucoup de matière, souvent aussi utile qu’originale.

Ce livre est pratiquement un livre de patterns d’utilisation de JUnit, donc à rapprocher de l’ouvrage de Mezzaros. L’ouvrage est imposant avec ses presque 700 pages. Heureusement, il n’est pas nécessaire de les lire linéairement.

Les deux premiers chapitres sont consacrés aux classiques B.A. BA de JUnit, on en est débarrassé en 70. Vient ensuite la vraie substance.

Les deux chapitres suivants (les 3 et 4, donc) ont un focus plus original, car ils traitent de l’organisation des tests, en terme de package ou de projet (avec ou hors du code de production), puis de l’organisation des suites de tests. Ce sont, pour la plupart, des questions réccurentes auxquelles il est rarement répondu. Le chapitre 5 suit logiquement en évoquant l’exécution des tests pilotée par les données. Bien évidemment, DbUnit est évoqué, mais aussi Ant avec ses tâches SQL. On a donc droit à un propos assez large.

Les chapitres 6 et 7 ont d’avantage trait à l’execution et au reporting des tests. Bien entendu, cela couvre l’extension du framework JUnit pour le reporting. La première partie se conclut par un chapitre dédié aux problèmes fréquemment rencontrés, je ne suis hélas pas en mesure de jauger sa pertinence.

La seconde partie est consacrée aux tests J2EE. Si on couvre quelque peu le XML et les pages HTML, les tests sur JDBC se taillent la part du lion. A l’heure de JPA, d’Hibernate ou JDO, je me pose quand même des questions, pour ne pas parler du chapitre consacré aux EJBs ! De la même façon, si le chapitre sur les tests des composants Web paraît utile, on n’évoque guère que JSP et Servlets, quid des JSF et autres Struts. D’ailleurs un chapitre est consacré aux tests de navigation où aucuns de ces frameworks (Struts, WebWorks, etc..) n’est évoqué ! Quand à parler de Spring… Bref, je suis déçu par le contenu de cette partie, même si il reste affuté techniquement.

La troisième partie porte sur des sujets complémentaires, où l’on traite des cas de figures non classiques : listeners, singletons, etc… Très utile, autant qu’original.

Bref, un livre de ressources utiles que l’on fera bien d’avoir sous le coude pour performer sur les tests unitaire : Il y a clairement beaucoup de matière ici.

junit-recipes

Référence complète : JUnit recipes, practical methods for programmer testing – J.B. Rainsberger & Scott Stirling – Manning 2005 – ISBN : 1-932394-23-0 ; EAN : 9 781932 394238

JUnit Recipes: Practical Methods for Programmer Testing

http://www.goodreads.com/book/add_to_books_widget_frame/1932394230?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on