Le 21 juillet prochain, le Lyon JUG propose une soirée spéciale à l’occasion de la sortie de Java 7. Partout dans le monde d’autres événements de ce type auront lieu au mois de juillet. Vous pouvez récupérer les slides Oracle et des exemples de code présentant les nouveautés de Java 7 et également visionner le webcast officiel “MOVING JAVA FORWARD” proposé par Oracle pour la sortie de Java 7. Le Lyon JUG a donc choisi pour l’événement d’accueillir un de ses fidèles, Julien Ponge, mais également Alexis Moussine-Pouchkine.

@alexismpAlexis Moussine-Pouchkine était ambassadeur, chez Sun Microsystems du projet Iibre, GlassFish. Il continue actuellement à travailler sur ce serveur d’application Java EE de nouvelle génération en tant que GlassFish community manager chez Oracle. Ceci lui permet de rencontrer lors de réunions ou de conférences de nombreux développeurs Java et autres utilisateurs de technologies libres. Il anime depuis peu une conférence intitulée “Oracle ange ou démon?”, vous pourrez notamment assister à cette session au JUG Summer Camp à la rentrée. Il blogue régulièrement sur Bistro! ou TheAquarium et participe à plusieurs communautés open source. Il traduit également en français des ouvrages techniques autour de Java ou XML. Vous pouvez suivre Alexis sur Twitter ou l’écouter sur le podcast Java Spotlight auquel il participe régulièrement.

@jpongeJulien Ponge est un artisan de longue date de l’opensource. Il a créé le framework IzPack et a participé à plusieurs autres projets, notamment à GlassFish en collaboration avec Sun Microsystems. Titulaire d’un doctorat en informatique, il est actuellement professeur agrégé en informatique à l’INSA de Lyon, et un chercheur dans le cadre de l’INRIA Amazones / équipe CITI. Ses centres d’intérêts de recherche concernent une approche combinée des langages de programmation, les machines virtuelles et des middlewares. Parlant à la fois le langage industriel et le langage académique, il œuvre pour développer des synergies entre ces mondes. Vous pouvez suivre Julien sur Twitter.

Puisque la team du Lyon JUG est généreuse, vous avez le droit pour l’occasion à un interview des speakers mais également à un nouvel opus de son podcast Cast-IT qui sortira peu après le 21 juillet (le temps du montage!). Si vous ne connaissez pas Cast-IT, allez vite écouter les premiers épisodes de ce nouveau podcast participatif sur l’écosystème Java, certes, mais ouvert également à des sujets comme l’Agilité ou d’autres langages. Et pour vous donner tout de suite un avant-goût de la soirée, allons à la rencontre des speakers de la soirée (Bon, on a donné des jokers à Julien : il ne s’est pas exprimé sur les questions touchant directement à Oracle!). Puisque la team du Lyon JUG est également joueuse, sachez que chacun d’entre eux n’a pas eu accès aux réponses de l’autre interviewé avant la sortie de l’interview! Que la partie commence…

Cet interview a été préparé conjointement par Agnès CREPET et Cédric EXBRAYAT, deux membres de la team du Lyon JUG. Merci également à Thierry Chantier et Anne-Laure Rigaudon pour leur aide sur la préparation de cet interview.

Agnès & Cédric: Quelles sont, selon toi, les nouveautés syntaxiques les plus intéressantes apportées par Java 7 ? Penses-tu que certaines nouveautés peuvent bénéficier à GlassFish ?
Alexis: Je trouve que Project Coin propose des améliorations du langage Java qui me font penser à la “nouvelle” boucle for apparue dans le JDK 5 et qu’elles forment un tout très cohérent mais j’aime particulièrement le bloc ARM (Automatic Resource Management, aussi parfois appelé try-with-resources).
Quant à l’intérêt de Java 7 pour GlassFish, je pense que les chaînes de caractères dans les switch, les blocs ARM (notamment avec JDBC 4.1), le multi-catch (SQL, gestion de fluxs, …) et la notation diamond sont tous applicables dans un contexte Java EE, mais c’est des développeurs GlassFish que j’attends le plus et en particulier de leur utilisation de nio 2 et peut-être même de fork/join. Nul doute que les APIs de Java EE 7 tireront partie de Java SE 7 qui sera un pré-requis. Enfin, on peut noter que GlassFish 3.1.1 sera certifié sur Java 7 d’ici quelques semaines ce qui proposera les améliorations de performances inhérentes à toute nouvelle version du JDK.
Julien: Les chaînes de caractères dans les switch ou les underscores dans les littéraux numériques sont des évolutions mineures mais néanmoins utiles. Le multi-catch apporte une concision salutaire lorsqu’on manipule des APIs déclarant beaucoup d’exceptions tandis que le traitement de celles-ci reste commun à de nombreux cas. Classiquement on utilisait un type d’exception très générique (Exception, Throwable, …), ce qui n’est pas toujours une bonne idée. Le multi-catch est un compromis idéal entre concision et expression de types complète.
L’inférence de types paramétrés avec le diamond ainsi que le try-with-resources sont pour moi les 2 vraies nouveautés majeures et notables de Java 7. J’adore en particulier le dernier. Tout le monde se plante en écrivant du code qui manipule des ressources, souvent sans en avoir conscience. Sur des applications serveur cela peut nécessiter des redémarrages fréquents. Traiter tous les cas d’erreurs possibles est complexe, aussi déléguer la génération d’un code correct au compilateur est salvateur. Cf http://www.oracle.com/technetwork/articles/java/trywithresources-401775.html

Agnès & Cédric: Peux-tu nous en dire un peu plus sur le projet OpenJDK?
Alexis: Depuis qu’Oracle a réaffirmé l’aspect stratégique d’OpenJDK (et depuis que cela devenait l’implémentation de référence de Java SE), on a vu IBM et Apple rejoindre le projet (RedHat l’avait fait à l’époque de Sun) ce qui lui assure des ressources importantes et de qualité et donc un avenir à long terme. Il reste encore beaucoup à faire et j’attends en particulier avec impatience les contributions issues de JRockit (annoncées par Oracle).
Enfin, à défaut d’avoir toute la transparence espérée dans JCP (les progrès sont en cours), OpenJDK est une communauté ouverte qui permet de suivre de très près l’évolution de la principale implémentation JavaSE et de permettre aux utilisateurs Mac OS X d’avoir des binaires fournis par la communauté (Henri Gomez) en attendant une version officielle d’Oracle.
Julien: C’est l’implémentation de référence de Java SE 7 qui est sous licence GPLv2 + classpath exception.
A titre personnel je suis ce qui se passe sur certaines listes de diffusion et en particulier le port macosx. On y voit des ingénieurs Oracle, IBM ou Apple y discuter ouvertement, avec des extérieurs qui se greffent aisément aux conversations. A titre d’exemple Henri Gomez qui s’occupe d’un packaging non-officiel du port macosx est très actif (http://code.google.com/p/openjdk-osx-build).
OpenJDK c’est “le vrai Java”, et vous pouvez facilement récupérer le code source, l’étudier, et le compiler… et le modifier. Il n’y a pas de barrière particulière à l’entrée.

Agnès & Cédric: Est-ce que tu penses que Java est attractif pour les jeunes développeurs? Vois-tu Oracle encore innovateur pour Java et son écosystème? Penses-tu qu’il soit nécessaire de ressusciter l’intérêt de la communauté? Si oui, comment?
Alexis: Il y a beaucoup de manière d’innover. Comparé à d’autres langages qui ont moins d’historique (moins d’utilisateurs) et d’autres approches (typage dynamique par exemple), Java peut apparaître comme en retard. Ceci dit on peut être très productif en Java de nos jours avec des versions récentes d’API (Java EE 6 coté serveur par exemple) et le rôle langage devient alors moins important. En fait son typage statique et son expressivité deviennent même une garantie de survie dans le temps, Java est un langage ou la (re)lecture est plus importante que l’écriture. C’est donc un excellent candidat pour l’apprentissage de l’informatique – pragmatique et *très* utilisé en entreprise, il n’en est pas moins indépendant de toute solution technique ou produit. On notera d’ailleurs que toutes les solutions de cloud que l’on voit apparaître sont basées sur Java.
Ceci dit, Java 7 n’est qu’une étape et Project Coin (comme le jeu de mots sur le nom du projet l’indique) ne propose que de relativement “petites” évolutions du langage. Java 8 (attendu dans environ 18 mois) sera plus ambitieux avec les expressions lambda (closures), et surtout à mon sens la modularisation tant attendue.
Le nouveau bytecode “invokedynamic” est une innovation qui passe un peu inaperçue. Elle devrait permettre à de nombreux langages s’exécutant sur la JVM d’améliorer leur performance et de simplifier leur implémentation. En fait ce bytecode sera même utilisé dans Java 8 pour l’implémentation des expressions lambda. Une place de choix est donc faite aux amateurs d’autres langages, même si je ne crois pas un instant Scala ou Groovy puissent détrôner Java tant son spectre et son utilisation sont larges.
D’autre innovations coté Oracle viendront sur les aspects monitoring et management avec en particulier le portage de JRockit Mission Control sur HotSpot ou la suppression pure et simple de la PermGen dans un update de Java 7. Il reste beaucoup de chose à faire: simplifier JNI, meilleure interop entre langages s’exécutant sur la JVM, isolats (multi-tenancy), meilleure intégration aux systèmes de persistance, etc.
Mes première impressions suite au lancement de Java 7 sont que l’arrivée même d’une version majeure de Java est une source importante de motivation dans la communauté. J’espère qu’une cadence régulière d’innovations (toutes ne viendront pas d’Oracle heureusement) va donner un nouveau souffle à Java. En fait je trouve incroyable que la communauté ait continué à s’étendre pendant cette période de troubles. L’avenir ne peut apporter que de bonnes surprises.
Julien: Plusieurs questions en une :-)
Oui Java est attractif pour les jeunes développeurs. Le langage en lui même reste simple mais pas simpliste. Mais c’est avant tout l’écosystème Java qui est attractif : une machine virtuelle de premier choix, des bibliothèques et frameworks à foison, des langages qui fleurtent avec des paradigmes différents de Java… sans oublier une communauté large et active. Le succès des JUGs et des conférences du monde Java en sont la preuve flagrante. Enfin il faut noter que l’univers Java n’a jamais été hermétique aux autres communautés (Ruby, Python, etc).
Clairement Oracle n’a pas la même culture que feu Sun Microsystems. Les débuts ont été difficiles en terme de communication, mais force est de constater qu’Oracle fait de gros efforts pour comprendre comment dialoguer positivement avec la communauté Java au sens large. Ils investissent massivement dans la technologie et ont réussi le coup de force de fédérer IBM, Apple et maintenant SAP autour de OpenJDK.
Certains ont un bénéfice stratégique à mettre de l’huile sur le feu et à guetter le moindre faux-pas d’Oracle. Jugeons plutôt cette entreprise sur les faits que sur les titres d’articles sulfureux qui fleurissent ci et là. De mon point de vue la tendance est bonne. Java possède un steward principal qui a les reins solides et la sortie de Java 7 marque la fin des errements de calendrier. Reste pour Oracle à poursuivre ses efforts.
Enfin je ne pense pas qu’il y ait besoin de “ressusciter l’intérêt de la communauté”. Les conférences sont sold-out en peu de temps, les JUGs tournent très bien… Java is not dying :-)

Agnès & Cédric: Comment se déroule une de tes journées standards ? As tu le temps de faire de la veille, d’observer les produits concurrents ? As tu le temps de faire du Groovy, Scala ou Clojure ? Que penses tu de ces langages alternatifs sur la JVM ?
Alexis: Je passe en effet pas mal de temps à observer ce qui se passe dans la communauté (et je crois connaître assez bien la concurrence). Je passe aussi du temps à alimenter le blog No. 1 chez Oracle: TheAquarium et je voyage assez fréquemment pour participer à des conférences ou effectuer des visites aux JUGs.
Coté langages “alternatifs”, je suis vieux jeu! Je pense qu’ils ont des domaines d’application restreints: DSL encore peu utilisés, services en ligne massifs (combien d’architecture à la twitter?), et besoin de parallélisme bien traités par un Scala encore réservé à une élite. Coté informatique de gestion les avantages de ces langages ne sont pas évidents, sauf peut-être pour du développement rapide et jetable.
Julien: Je fais un métier qui n’a pas de journée type. Être chercheur suppose naturellement de regarder l’état de l’art, expérimenter, se positionner… donc une activité dite de veille est naturelle.
Je suis un fervent défenseur du “polyglot programming”, j’utilise donc des langages et combinaisons de langages en fonction des usages visés. Je ne rentrerai donc pas dans une guerre Groovy vs Scala vs Clojure vs Ruby vs Python vs JavaScript :-) Il m’est même arrivé de programmer une application node.js !
La JVM est en passe de devenir le champ d’expérimentation #1 pour les nouveaux langages tant statiques que dynamiques (cf invokedynamic). Ce bouillonnement est une force, sauf pour les architectes frileux qui détestent avoir à effectuer des choix sur des critères purement techniques… :-) [troll assumé]

Agnès & Cédric: Tu présentes une session en ce moment (à venir au JUG Summer Camp) intitulé “Oracle, ange ou démon?”… Quels sont les premiers retours de cette conférence?
Alexis: L’idée de cette présentation est partie de mon impression que si environ 50% de la communauté donnait le bénéfice du doute à Sun Microsystems (non, pas plus, beaucoup ont idéalisé Sun depuis le rachat), personne ou presque ne fait confiance aveuglément à Oracle. En particulier il est facile de donner le rôle du vilain à Oracle dès qu’il y a une polémique. Mon but est donc de retracer les événements, principalement dans le monde Java, depuis le rachat et de laisser l’audience se forger une opinion sur la base des actes d’Oracle. Clairement personne n’en ressort avec la conclusion qu’Oracle est un ange!

Agnès & Cédric: En quoi le rapprochement des équipes JRockit et HotSpot a été bénéfique pour JavaSE?
Alexis: Il y a presque deux fois plus d’ingénieurs travaillant maintenant sur la JVM par rapport aux dernières années chez Sun. C’est pour moi le principal avantage à court terme. A plus long terme, l’intégration des fonctionnalités unique de JRockit sur la base HotSpot sont très prometteuses, en particulier Flight Recorder et Real-Time.
Julien: D”un point de vue externe, ces deux équipes ayant produit des avancées significatives dans la conception de machines virtuelles, leur rapprochement ne peut qu’être bénéfique !

Agnès & Cédric: Comment se passe la collaboration avec les equipes de WebLogic ? Avez-vous mutualisé certains efforts ? Quel est l’intérêt pour Oracle à maintenir 2 serveurs Java EE ?
Alexis:
Les premières collaborations datent d’avant le rachat: WebLogic utilise Mojarra, l’implémentation JSF de GlassFish, Metro (stack Web Services) alors que GlassFish utilise depuis sa version 1.0 l’implémentation TopLink/EclipseLink développée par Oracle. Avec le rachat, les équipes GlassFish et WebLogic sont regroupées et les collaborations renforcées.
Ceci dit il est fondamental de ne pas perdre de vue l’objectif principal de WebLogic qui est de servir de socle pour le middleware Fusion, les Fusion Applications et les applications critiques développées par ses utilisateurs depuis des années. De la même manière il est fondamental de continuer à fournir avec GlassFish un produit open source de qualité (production-quality comme disent les américains) qui implémente la toute dernière spécification JavaEE sans oublier le clustering et une admin centralisée. Les rythmes de développement sont donc nécessairement différents.
En tout cas les efforts (et les ressources) consentis par Oracle sur GlassFish sont en soit une belle marque de succès pour l’équipe avec entre autre des embauches régulières et l’adoption de plusieurs fonctionnalités clés du produit dans les prochaines versions de WebLogic.

Merci Alexis et Julien!

Les inscriptions pour la session d’Alexis et Julien au Lyon JUG le 21 juillet sont ouvertes! Rendez-vous sur le site du Lyon JUG.