Premi̬re journ̩e de conf̩rences РMardi 01/06

Je me suis rendu à Jazoon 2010 (première fois que j’y vais) et vais me faire en quelque sorte l’envoyé spécial de Developpez.com.

D’après d’autres participants, le nombre de personnes présentes est beaucoup moins important que l’année dernière, sans doute 400 personnes à peu près contre plus de 600 l’année dernière. Est-ce que ça reflète une diminution de budget de la part de certaines boites ou un flou dans l’implication des Javaïstes du aux incertitudes suite au rachat de Sun par Oracle ?

Certains sujets sont bien présents en terme de nombre de sessions :

  • Onze sessions parlent de Java EE 6 ou d’une partie (Servlet 3.0, JPA 2.0, JSF 2.0, …), mais on pouvait s’en douter, puisque la spécification est sortie le 10 décembre 2009;
  • Cinq sessions parlent d’OSGi;
  • Six évènements sont relatifs à la sécurité;
  • Huit évènements (sessions ou keynotes) sont relatifs à la conception ou à l’artisanat logiciel (software craftmanship).

D’un point de vue infrastructure, l’organisation est impeccable, à part le WIFI qui est passé de mauvais, pendant les trois quarts de la journée, à inexistant à partir de 16 heure (c’était comique, d’ailleurs, puisque les twits #Jazoon étaient affichés, et que l’un des derniers se plaignait justement du mauvais réseau).

Keynote d’ouverture : Java SE and JavaFX : the road Ahead

Nous n’avons évidement pas eu droit à James Goslin cette année, mais Oracle nous a quand même envoyé un représentant: Danny Coward.

Oui, voilà voilà, Danny Coward, est Chief Architect, Client Software chez Sun Microsystems, ce qui signifie qu’il connait bien, entre autres JavaFX.

Il a commencé sur un historique de Java, pour continuer sur l’avenir et évoquer les nouveautés promises dans Java7 (qui ont été largement évoquées sur Developpez.com).
Il explique également que le JDK est devenu trop important et qu’il y a un refactoring important interne au JDK et que c’est essentiellement pour ces besoins internes qu’est apparu le besoin de modularité (et la JSR 294 et le project Jigsaw).

Danny Coward, en rappelant que Java a officiellement 15 ans depuis le 14 mai dernier, a montré une vidéo dans laquelle James Gosling montre un PDA en 1992 Star7 (Green project).

Il part de cette vidéo pour prouver qu’il y avait déjà des interactions modernes (il évoque le multitouch) avec des widgets à l’époque, dans les labo de Sun.
Puis il passe à JavaFX, pour lequel il énumère les versions avec les apports et indique qu’aujourd’hui JavaFX est rapide et a une quantité phénoménale de widgets.

Ma faible connaissance de JavaFX me fait peut-être rapporter les choses de manière incorrecte, mais j’ai noté :

  • qu’il y a eu 4 releases en 18 mois ;
  • avec la version 1.3, il y a eu beaucoup de nouveaux widgets ;
  • avec la version 1.2 il y a eu un support des téléviseurs ;
  • dans la version à venir, ce support des téléviseurs va aller en s’améliorant (navigation), et il y aura un émulateur comme outil fournit dans le JDK.

Il a fini en montrant un usage réel de JavaFX pour une application web utilisée dans le cadre des jeux Olympiques de Vancouver, avec beaucoup de widgets dans tous les sens.

Les sessions du jour

Je ne vais pas détailler les sessions que j’ai suivies, pour dormir un peu avant la seconde journée, mais en donner un bref résumé.

J’ai suivis trois sessions sur la sécurité :

  • Pattern Driven Security Design, for Web Tier, par Manish Kumar Maheshwari
    VeriSign Services : Il ne s’agissait que de revenir sur les patterns de JAAS et/ou d’évoquer leurs alternatives à base de framework, en particulier Spring Security
  • Framework & Security : how web applications frameworks kill your security scanning : Christian Hang Armorize Technologies
    Cette session parlait essentiellement des outils de SCA (Static Code Analysis) qui essaient de détecter les failles de sécurité dans votre code pour que vous les corrigiez. Il explique les mécanismes qu’utilisent ces CSA et montre qu’il y a des problèmes quand le code qui est analysé utilise de la reflexion, ou des suites d’invocation avec propagation de contexte (lors d’un forward de requête par exemple). C’est évidemment le cas quand vous utilisez un framework comme Spring, Struts, … Il montre enfin quelque pistes pour essayer de rendre les SCA compatibles avec l’usage des frameworks.
  • Security as intrisinc part of any Java EE developement, Wolfgang Giersche : Parmi les limites de JAAS, il y a le fait que les rôles sont des chaines de caractères prévues à l’avance et que l’on ne peut en rajouter. Le speaker montre ici qu’il y a des patterns et des efforts de standardisation (XSPA Profile for XACML) de définition sémantique de politique d’accès, qui permettent de définir applicativement des nouveaux rôles, avec une définition dynamique des habilitations.

J’ai suivi ensuite une session de Neal Ford sur les DSL. Il nous a appris entre autre que Java n’est pas forcément pertinent pour faire des DSL internes, c’est-à-dire des DSL qui s’expriment en Java. On peut par contre, faire un programme en Java, qui interprète un DSL en Groovy par exemple.

La dernière session suivie par moi de la journée était menée par Jevgeni Kabanov, le CTO de ZeroTurnaround, la société qui édite JRebel, l’outil magique qui modifie le runtime en même temps que vous modifiez votre code, à la barbe de la JVM. Cette session était intitulée « Do you really get class loader ».

En ce qui me concerne, je croyais que c’était le cas, mais j’ai quand même appris des choses très intéressantes.
Jevgeni a dit qu’il est amoureux des classloaders.

Il explique que l’exception qui est faite, dans le cas des serveurs d’application qui fait qu’une classe est recherchée en premier dans les classloaders des webapps avant les classloaders parent est source de nombre de bugs et il nous le montre dans plusieurs cas unitaires.
Il nous recommande de reconnaître les différentes exceptions et de savoir comment elles peuvent arriver (eg. java.lang.LinkageError) et penser qu’on peut accéder au chemin d’une classe en faisant :

 this.getClass().getClassLoader().getRessource(MaClasseACharger.class.getName()).replace('.', "/")

et souvent on peut récupérer le classpath en faisant :

 ((URLClassLoader)getClass().getClassLoader()).getURLs()

Il nous a montré aussi comment reproduire (facilement) les leaks memory que l’on obtient sous Tomcat.

Keynote de fermeture : 97 Things Every Programmer should know, Kevlin Henney

Kevlin Henney a d’abord passé un peu de temps à expliquer pourquoi et comment il avait écrit ce livre, avant d’aborder un certain nombre d’items.

Il a écrit ce bouquin pour savoir ce que les autres pensent, par rapport au codage, puis parce qu’il s’est rendu compte qu’en demandant les dix items les plus importants on passait à côté de beaucoup de choses.

Pourquoi 97 ? Il répond souvent que c’est parceque 97 est premier, puis que ce livre fait tout bêtement parti d’une série de livre qui s’appellent tous comme cela.

C’est à ce moment que je suis tombé en rade de batterie, donc je vous laisse découvrir la liste sur le wiki du livre.

Il a évoqué lors de cette énumération le fait que le singleton sur cette image a été souvent meilleur que le pattern singleton.

Maintenant je vais me reposer pour être en forme pour vous prendre en notes les conférences de demain.

N’hésitez pas à partager vos impressions ou vos retours via le forum : http://www.developpez.net/forums/d841589/java/communaute-java/jazoon10-1er-3-juin-y-va-quen-pensez/

Laisser un commentaire