Aujourd’hui je vais faire un peu un écart sur ma ligne éditrice. En effet nous n’allons pas parler de gestion de contenu MAIS de l’écosystème Java. En effet, nombres d’entre vous ont remarqué que Java est l’un des langages de programmation (avec PHP, .NET…) les plus utilisés dans les solutions d’ECM Open Source. J2EE, JavaBeans, Spring, Hibernate, EJB3, OSGI, serveur d’application… Les références technologiques et techniques ne manquent pas lorsque l’on soulève le capot de Nuxeo, Alfresco, eXoPlatform, Jahia… Or que connaissons nous de Java ? De sa communauté ? De ses règles ? Des liens avec l’open-source ? Du rachat de Sun par Oracle ? C’est un peu tous ces points que je vais aborder avec mon invité du jour.
J’ai donc le plaisir d’interviewer aujourd’hui Nicolas De Loof, architecte Java à Capgemini Rennes, commiter Maven et Président du BreizhJug (Association des utilisateurs de Java pour la Bretagne).
Bonjour Nicolas,
Pour commencer, je tenais à vous remercier d’avoir accepté mon invitation pour partager vos connaissances sur le vaste univers du monde Java.
Je suis "Architecte Software Solution" si on considère la nomenclature Capgemini. Je travaille surtout en mode support / coaching / veille techno.
- Support, car je suis référent en interne sur de nombreuses technos Java. J'interviens donc aussi bien en conseil sur des avant-ventes que pour faire marcher les projets
- Coaching pour faire tourner les équipes autour des bonnes pratiques de dev, par exemple l'intégration continue, le bon usage d'eclipse, mais aussi des micro-formations sur les design-patterns ou les frameworks à connaître
- Veille technologique en tâche de fond (même si parfois ca prend le dessus sur le reste). J'applique en gros la règle "google" du 20% de temps sur des devs libres. C'est par ce biais que j'ai intégré l'équipe Maven et appris à connaître de nombreux outils opensource, ainsi qu'à développer mes propres bidouilles que l'on utilise maintenant en production.
En résumé, quel a été votre parcours professionnel pour arriver à ce poste ?
Je suis rentré chez Cap Telecom Rennes en 97, après mon service militaire, et j'y suis resté depuis. Il faut croire que je m'y plais ! J'ai rapidement développé un rôle d'électron libre sur les projets Java, ma curiosité maladive m'obligeant à installer en douce sur les projets des frameworks opensource encore tout chauds - j'ai ainsi fait du Struts 0.5 et du Spring 1.0RC2. Bizarement (ou heureusement) cette attitude de geek et le fait que ça se passe plutôt bien m'a valu une bonne réputation en interne et la confiance de mes supérieurs. Il semble que je sois plus rentable quand on me lâche la bride que quand on veut me forcer à faire un truc que j'aime pas ;).Maintenant, intéressons nous à Java. Quand avez-vous programmé votre première ligne de code en Java ? Quelle a été la version de Java et que pensiez-vous à l’époque de ce langage de programmation ?
Dans ce cadre, j'ai beaucoup participé aux listes de discussion Struts puis Maven, sujet sur lequel je me suis attardé pour le boulot, proposant quelques patches et surtout en contribuant au développement d'Archiva dont le support de Maven1 était indispensable pour mes "vieux" projets. J'ai alors été invité fin 2007 comme membre de l'équipe de dev Maven.
J'ai commencé avec Java fin 1999 par une format Valtech sur le sujet dans le cadre d'un projet à démarrer. Rien de très croustillant ou de visionnaire donc. Par contre, j'ai tout de suite apprécié la supériorité de ce langage par rapport au C en terme de dynamique opensource. Sur les projets C à Cap on utilise très peu (pour ne pas dire "pas") de librairie opensource. Une fois que j'ai mis un orteil dans le monde communautaire qui foisonne autour de Java je n'ai jamais pu en sortir. Je ne sais pas si l'opensource C tourne aussi bien, mais Java est une plateforme de rêve pour les bidouilleurs. Le codage est réellement facile (je pense à la syntaxe qui masque les pointeurs) même pour des non-experts et on arrive donc rapidement à concevoir des petits outils rigolos. Et avec l'expérience on découvre les API de réflexion puis l'instrumentation du bytecode et rapidement on arrive à faire des choses étonnantes.
Quelles ont été les principales étapes de l’évolution de Java ?
Si on laisse de côté les prémices de java 1.0, Java n'a commencé à être un langage réputé qu'avec Java 1.2 et la compilation "Just In Time".De nos jours, comment définiriez-vous Java et quels sont les principaux courants d’influence (EJB3, SpringSource...) existants ?
La seconde grande étape a été l'arrivée de la norme Java EE. Aussi critiquable qu'elle soit, elle a implanté Java sur les serveurs de manière massive - amusant si on considère que la cible (loupée) de Java était le desktop.
Après cette date, les versions de Java (1.3, 1.4) n'ont fait en résumé que compléter la plateforme avec des API qui étaient jusqu'ici optionnelles. La troisième grande étape a été Java5, une vraie révolution dans la syntaxe du langage. Tous les frameworks n'en tirent pas encore partie, mais le bénéfice est flagrant.
La dernière étape clé est le repositionnement de Java comme plateforme pour le bytecode, et plus comme langage de programmation isolé. Le succès de Groovy, jRuby, Jython et compagnie montre que d'autres langages ont leur place dans cet écosystème.
Java est avant tout un écosystème autour d'une machine virtuelle. Le langage en lui même continue d'évoluer mais importe peu finalement. On peut même faire du PHP sur la JVM ! Le développement des normes Java au sein du Java Community Process s'est également largement ouvert. Au début très corporate, il s'est trouvé confronté à des initiatives libres et indépendantes, dont Spring fàce à JEE est la plus notoire. Aujourd'hui, SpringSource soutien une norme créée en dehors du JCP (@Inject, JSR330) qui a été acceptée en quelques mois pour JEE6, impensable il y a encore 6 mois. Java n'est définitivement plus piloté par des IBM ou des Oracle, mais bien par une communauté très active et très exigeante. Par ailleurs, le monde opensource a démontre qu'une norme c'est bien, mais qu'une implémentation intelligente et qui marche est bien plus rapidement acceptée. Spring ou Struts ont eu un succès démesuré si on considère que ce sont des outils indépendants. JSF et JEE font pitié a côté.Au fait java est Open-Source ?
Je dirais donc qu'il n'y a PAS de courant d'influence dans Java, mais une sélection naturelle par la communauté de ce qui apporte de la valeur à un instant "t". Des acteurs comme JBoss sont tentés de normaliser leurs outils (Seam), cela ne leur apporte pas plus d'utilisateurs. Par contre des projets bien ficelés comme Apache CXF trouvent de très nombreux supporters. C'est très rafraichissant de voir qu'un bon outil libre arrive à se faire une place à côté de mastodontes de l'industrie, et c'est une force de la communauté Java.
Toutes les évolutions de Java se sont faites sous le contrôle de SUN mais surtout sous la pression de la communauté et de l'opensource. Le passage de Java en GPL a fait beaucoup de bruit, et c'est une excellente chose. Je pense que si Java était né en 2009 il aurait été depuis le début sous une licence libre, les mentalités ayant beaucoup évolué depuis. La prochaine grande étape est Java 7 dont les évolutions dans la syntaxe sont ouvertes au suggestions de la communauté, ce qui montre que le pilotage de Java est désormais libéré.Comment percevez-vous le rachat de Sun par Oracle dans le domaine des technologies Java ? Abandon des projets comme GlassFish ?
Le monde Java est très friand d'opensource, et réclamait l'ouverture de Java depuis belle lurette. Le cas de GWT (Google Web Toolkit) est par exemple significatif. Avant la version 1.4, seul le runtime était libre, le "compilo" étant sous license Google. L'intérêt était alors réel mais sans grand succès. Avec le passage en full opensource de la version 1.4 GWT a explosé.
Contrairement à d'autres communautés, le monde Java baigne énormément dans l'opensource et a tendance à repousser les outils propriétaires, quelle que soit leurs qualité. Le JDL lui-même n'a pas pu échapper longtemps à ce rouleau compresseur, SUN étant parfois accusé de vouloir conserver à tout pris la mainmise sur Java. Cette ouverture est une preuve que Java vit très au delà des labos de SUN aujourd'hui.
C'est un gros sujet d'inquiétude. Oracle n'a pas racheté SUN pour Java mais pour compléter son offre (et sans doute aussi pour des questions de rentabilité financière). Difficile de savoir si Oracle poursuivra la politique de SUN en termes d'investissement sur les outils et les projets libres. GlassFish bien sûr, qui fait concurrence avec OAS et Weblogic, mais aussi Metro, Netbeans, etc. Le passage en GPL est en même temps une garantie, mais sans industriel pour le soutenir financièrement Java risquerait de tourner au ralenti et de s'appauvrir.Parlons maintenant de l’association BreizhJug. Pouvez-vous nous présenter le but de cette association et si on devait généraliser quel est le but d’un JUG (Java User Group) ?
Wait and see...
J'ai découvert le concept de JUG en allant à la conférence SpringOne 06 organisé par le JUG belge. L'idée est d'animer une communauté locale autour de Java, avec le soutien de SUN mais de manière libre et indépendante. Dans la majorité des cas cela se traduit par l'organisation de conférences gratuites sur des thèmes techniques. J'ai crée le JUG Rennais après le succès du lancement du ParisJUG suivi du ToursJUG. La liste des JUGs français s'est depuis largement étoffée (14 à ce jour), ratrapant le retard que la France avait sur le sujet avec nos voisins européens.Pourquoi avez-vous décidé de monter cette association et quelles sont les personnes qui participent au projet ?
J'ai monté le JUG dans le but de faire autre chose que juste coder dans l'ombre. Je voulais partager un verre avec des gens passionnés pour discuter de ClassLoaders (des gars vraiment très bizarres). Je voulais profiter d'une bonne dynamique pour avoir chez moi un équivalent (à l'échelle) des conférences JavaPolis. Je voulais renforcer les liens que j'avais tissés "online" avec quelques personnes influentes du monde Java. Je voulais aussi sans doute me faire mousser un peu en devenant le "JUG-leader" de Rennes. De ce point de vue c'est une réussite, et j'ai rencontré des gens passionnés, passionnants et désormais des habitués fidèles du JUG et ses meilleurs ambassadeurs.Quels sont les prochains rendez-vous de l’association ?
Le déclic a été très clairement ma visite à SpringOne. J'ai pris conscience de ce que peut être une communauté Java et ce qu'on arrive à faire avec relativement peu de moyens et de personnes. Depuis je suis le premier à encourager des confrères français à monter un JUG dans leur ville, quitte à faire "petit et pas cher et on verra bien".
J'ai impliqué des collègues dans cette démarche pour m'épauler et trouver du soutien auprès du Granit, une association locale de promotion des technos et de deux sponsors : Orange Business Services et ... Capgemini ! OBS a été très moteur en animant eux-même trois sessions de grande qualité. D'ailleurs, s'ils le veulent bien, j'aimerais reconduire le sponsoring l'année prochaine ;)
J'ai personnellement animé la session d'octobre en présentant Maven. C'est une expérience très stressante mais super enrichissante. J'encourage tout développeur qui participe à un outil opensource, même de loin, ou qui veut partager un retour d'expérience sur un outil à contacter son JUG local. Il y sera très probablement bien accueilli (nous cherchons toujours du monde). Présente son travail devant un public de 60 personnes ne met pas tout le monde à l'aise mais c'est tellement gratifiant que ça vaut le coup de s'en donner la peine.
La saison est close après 11 sessions riches et très suivies (de 50 à 90 participants, ce qui est énorme pour Rennes par rapport à nos prévisions). La deuxième saison repart en septembre, avec 3 sujets déjà programmés : Spring3, JEE6 et JPA2.Dans une note annexe, grâce à vous j’ai découvert il y a un temps le site JavaBlackbelt. Que pensez-vous de ce site et de quelle couleur est votre JavaBelt ?
Nous allons aussi tenter de faire bouger la communauté locale en organisant des quickies, sessions de 20/30 minutes ou un "local" vient présenter son petit projet perso, un outil ou une pratique qu'il a expérimenté. Nous allons aussi publier nos sessions en vidéo sur Parleys.com grâce au soutien du BEJug.
J'ai fait mumuse avec JavaBlackBelt jusqu'à ma ceinture marron. C'est un système original mais très discutable. Les questions sont souvent en dehors de la réalité de la pratique de développement, voir pas à jour par rapport aux versions actuelles des frameworks. J'ai plus appris en proposant des questions ou en en corrigeant pour gagner des points. La "gratuité" des premières ceintures n'est pas une bonne idée à mon avis de ce point de vue. Pour résumer, c'est un site sympa mais je ne m'en préoccupe plus et je ne donne pas une grande valeur aux ceintures obtenues.Pour finir sur une note annexe, quels sont vos blogs, twitter et liens préférés sur l'informatique en général ?
Le meilleur blog, c'est blog.loof.fr - plus sérieusement, je suis de près les blogs de Didier Girard (application-servers.com et onGwt.com) qui a longtemps été ma mine d'information. Les blogs de quelques petits camarades sont aussi très bons, comme celui d'Arnaud Héritier (blog.aheritier.net). Je ne suis pas un gros utilisateur de twitter même si je me prête un peu au jeu pour voir. Je tire l'essentiel des listes de discutions "classiques" des projets apache.
Un dernier mot avant de se quitter ?
J'ai appris bien plus en participant à des communautés en ligne, en essayant d'expliquer à d'autres ce que j'avais cru comprendre, et en lisant les réponses de personnes plus expérimentées. Je n'ai jamais trouvé aussi enrichissant dans une formation "classique". J'encourage tout les développeurs à s'impliquer dans ce genre de communauté. Cela prend bien sur un peu de temps chaque jour, mais le bénéfice est réel. Je ne serais pas à ma place sans la liste de diffusion de Struts, qui m'a fait découvrir Maven puis Spring.
Passer de l'autre côté du miroir en devenant soi-même "producteur" d'opensource nécessite du temps libre et une plus forte implication, mais c'est une expérience très gratifiante (je suis assez fier de mon eMail nicolas@apache.org). Chacun peut le faire à son échelle, la première chose à envisager est d'ouvrir ses petits outils internes à la communauté. Je pense en particulier aux plugins Maven qu'on a tendance à conserver "en interne" alors qu'il est si simple de les "officialiser" dans le projet Mojo (mojo.codehaus.org).
Enfin, pour ceux qui manquent de temps, essayez tout de même de vous dégager une soirée par mois pour participer au JUG local. Ces soirées sont d'excellentes ouvertures sur ce qui se fait ailleurs et l'occasion de rencontrer des gens passionnants. On peut aussi y comparer les pratiques et découvrir que ce qu'on croyait gravé dans le marbre n'est qu'une (mauvaise ?) habitude. Java est l'une des rares plateforme qui propose une approche communautaire aussi développée, ce serait dommage de passer à côté de cette dimension.
Merci d'avoir pensé à moi pour cette interview :)
Merci encore pour cette interview et bonne continuation sur la route d'un monde ECM Open Source basé sur des technologies Java !
Vous pouvez retrouver toutes les informations sur Capgemini à l'adresse suivante : http://www.fr.capgemini.com/
Intéressé par le BreizhJug ? Toutes les informations sont disponibles sur le site de l’association : http://www.breizhjug.org/
Et vous pouvez finalement retrouver Nicolas De Loof sur son blog : http://blog.loof.fr/
PS : Cette interview est disponible en téléchargement à cette addresse : http://www.scribd.com/doc/16469260/Open-Source-ECM-Interview-FR-Nicolas-De-Loof-Capgemini-







4 commentaires: on "Interview : Nicolas De Loof, Architecte Software Solution à Capgemini Rennes"
"Aujourd'hui, SpringSource soutien une norme créée en dehors du JCP (@Inject, JSR330) qui a été acceptée en quelques mois pour JEE6,"
-> Cela me semble triplement inexact:
1. Si c'est une JSR, elle entre précisement dans le cadre du JCP.
2. Cette JSR vise JSE et non JEE.
3. JEE6 est en voie de finalisation, alors que JSR330 vient juste de démarrer: il n'y a aucune chance que JSR330 soit incluse dans Java EE 6.
La proposition @Inject (http://atinject.googlecode.com) a été élaborée en dehors du JCP avec la collaboration de Google Guice et le ralliement de nombreux outils liés à l'injection de dépendances (Plexus, Picocontainer ...)
Il a ensuite été proposé au JCP et accepté comme JSR330. Sa cible est bien JSE mais ses partisans visent sont intégration dans JEE6 (JSR316). Cette norme est en effet en "public review", ce qui ne signifie pas qu'un tour de force ne soit encore possible pour y intégrer @inject. Vu l'aspect minimaliste de cette norme ce n'est pas du tout impensable. Par ailleurs, l'intégration avec la JSR299 (déjà dans JEE6) même si elle se fait en force, semble progresser (http://in.relation.to/Bloggers/JSR299ProposedFinalDraftSubmitted "Therefore, we plan a maintenance release of JSR-299 that includes support for the JSR-330 bootstrap API")
Voila pour la petite précision. De toute façon le succès de Spring a prouvé que la normalisation par une JSR ne suffit pas à rendre une solution universelle. Il faut encore qu'elle soit intelligente et que les outils suivent.
"il n'y a aucune chance que JSR330 soit incluse dans Java EE 6." Va donc jeter un oeil ici :
http://blogs.sun.com/theaquarium/entry/javaee_6_will_include_jsr330
Comme quoi il ne faut jamais dire jamais ;)
Éhé :)
Mais je l'avais déjà vu, cf. mon twit d'hier soir:
http://twitter.com/sfermigier/status/3130866169
Enregistrer un commentaire