Cet article a été écrit par Emmanuel Peru, Jeoffrey Haeyaert, Azize Elamrani, Emmanuel Diquas et François Descamps

Keynotes

La journée commence par 3 keynotes. La première conférence réalisée par IBM nous a expliqué les enjeux pour les entreprises de prendre en considération les mobiles dans nos projets. Le speaker nous a ainsi présenté les différentes méthodes pour réaliser les interfaces mobiles : application Cliente, application WEB, ou application Hybride avec PhoneGap par exemple… IBM nous a ainsi présenté les outils qu’il propose pour faciliter les développements mobiles.

La seconde keynote par Patrick Chanezon avait pour titre : « Portrait du développeur en The Artist » nous a mis en exergue l’importance pour les informaticiens de bien anticiper les changements d’architecture des SI et de rester passionné par le métier. Il faut rester proche des utilisateurs et de leurs besoins.

La dernière keynote de la matinée « Abstraction Distraction For France » avait pour but de nous mettre en relief les erreurs et les manques d’abstractions dans nos réalisations.

Conférences

Web Oriented Architecture, une transmutation des pratiques de construction des SI par Habib Guerguachi

Durant cette conférence, l’objectif d’Habib est de faire prendre conscience à la communauté Java que les SI et les applications d’aujourd’hui doivent être bâtis sur des architectures : REST, Stateless et asynchrone. En effet, le client ne doit jamais être en attente ou en dépendance forte avec le serveur. Les applications doivent permettre une expérience utilisateur très riche. Habib insiste sur le fait que les systèmes d’applications doivent être infiniment scalables. Habib introduit ainsi le principe d’architecture WOA qui a pour vocation de bâtir des systèmes qui vont dans le sens des standards du web. Une page web est une ressource qui s’accède via une URI. L’expérience utilisateur ne doit pas être obligée de naviguer sur le site selon un scénario précis, etc…

Deadlock victim par Heinz Kabutz et Olivier Croisier

Heinz Kabutz et Olivier Croisier ont abordé le thème de la synchronisation du code en java et plus particulièrement des problématiques liées à une mauvaise synchronisation.
Après avoir rapelé à l’aide d’un exemple ce qui conduit à cette situation, le plus souvent suite un abus de l’utilisation de ‘synchronized’, ils ont proposé une méthode simple visant à réduire ce risque en ciblant les éléments à synchroniser à l’aide d’un jeton de priorité.

La conférence s’est ensuite focalisée sur les moyens disponibles pour détecter les deadlocks, en utilisant ThreadMxBean du JDK et également de les débloquer dans certains cas en envoyant une erreur à un thread deadlocké puis en revérifiant l’état du deadlock

An overview of Guava: Google Core libraries for Java par Kurt Kluever and Kevin Bourillon

Très intéressante conférence sur Guava. L’objectif était ici de présenter les fonctionnalités majeures de Guava. Guava est là pour rendre plus propres et plus efficaces nos développements. Par exemple, on peut utiliser des méthodes de pré conditions, des charmatcher, des prédicats, etc… Guava permet aussi de faciliter l’utilisation des collections (Structure, Recherche, etc…). Ensuite, on nous présente la manière de Guava pour réaliser des Comparaisons et des tris très facilement. Puis, l’API de Hashing nous est exposée. Cette API permet entre autres de passer outre la limitation de 32 bits des hashcode et de construire des hashcode plus riches.

Java Caching with Guava par Charles Fry

Suite à la conférence sur Guava présentant les principales fonctionnalités de cette librairie, cette conférence s’est focalisée uniquement sur le système de cache proposé par Guava. Après avoir précisé que le cache Guava reste un cache sur le heap et ne concurrence pas les caches partagés tels que MemCache, il a détaillé son fonctionnement.
Tout d’abord les méthodes pour l’instancier à l’aide de CacheBuilder, d’insérer des données mais surtout de définir le mode d’évictions des données du cache, par valeurs à l’aide des méthodes ‘weakKeys’, ‘weakValues’, ‘softValues’ et temporel avec les méthodes telles que ‘expireAfterAccess’ et ‘expireAfterWrite’

Groovy 2.0 par Guillaume Laforge et Cédric Champeau

Groovy 2.0 (mais aussi en 1.8) permet l’écriture facile des Domain Specific Language avec par exemple les Command chains. Exemples : take(2).pills(of).chlo… == take 2 pills of chlo… OU take coffe with sugar, milk and liquor… == take(coffee).with(sugar, milk).and(liquor). Groovy intègre GPars est une librairie qui permet d’optimiser la gestion de la concurrence, les calculs distribués. De plus, Groovy bénéficie toujours des Closure et peut par exemple filtrer les collections très facilement. Groovy gère maintenant du JSON, la customisation de la compilation (auto import de certaines librairies). Groovy sera releasé d’ici fin mai et introduira la modularité (ainsi chacun choisira quelles apis il embarquera), les underscores dans les literals, le multicatch (comme java 7), l’invokeDynamic, la vérification des types statiques, la compilation statique et l’inférence de type.

MongoDB et Mustache. Vers la mort du cache ? par Mathieu Poumeyrol et Pierre Baillet

Mathieu et Pierre travaillent chez fotopedia et nous font part de l’expérience de toute l’équipe fotopedia et notamment de leurs problématique de performance. En effet, fotopedia permet aux utilisateur du monde entier de partager des photos, des descriptions, etc.. Leur souhait est que chaque page réponde en moins de 30 ms. A l’origine, leur application est en Ruby on Rails et s’appuie sur deux bases de données MongoDB et mysql. Au fur et à mesure du temps, ils ont mis en place tout une gestion des caches (avec varnish, lackr et une invalidation des caches par rapport à la durée de vie des différentes parties des pages). Le cache c’est très difficile à gérer et cela demande de nombreux paramétrages et contrôles. De plus, ils sont sans cesse embêter dès qu’ils doivent livrer une modification par rapport aux données des vues/templates qui sont en cache etc… Ensuite, ils ont commencé à mettre en place Mustache, un framework js qui permet de séparer la couche vue de la couche contrôleur plus nettement en gérant un échange exclusivement JSON entre ces deux parties. Enfin, ils se sont aperçus que s’ils utilisaient directement Mustache depuis leur vue et un contrôleur java qui attaque en direct MongoDB alors leur performance était plus élevée… De ce constat, ils ont décidé de migrer complètement mais en douceur toutes les tables mysql vers MongoDB et de plus rien mettre en cache !

Code Story

Le projet avance bien, les binômes travaillent de manière très efficaces. Le quatuor a vraiment pris le rythme et on sent maintenant bien l’intérêt de travailler en binôme. C’est vraiment une expérience très intéressante à observer et nous apprenons pas mal de choses en les observant : Guice, Mustache, Build Incassable, etc… Lorsque la dernière session code story arrive à sa fin et l’équipe a tenu son pari, tous les spectateurs ont appris de cette expérience. De plus, l’application est presque finie ! Il ne restera plus qu’à l’enrichir et l’équipe Code Story propose au public de former le repository github et d’apporter des évolutions dessus ! Et oui Code Story n’est pas réellement finie…