Pour cette troisième journée, l’ensemble des inscrits sont désormais présents ce qui porte le nombre à prés de 3350 personnes présentes !

Keynotes

Cette journée est un peu spéciale car Stephan Janssen, le responsable de l’évènement présente sa Keynote ce matin ! Au delà des aspects préparation, organisation,… Stephan en profite pour annoncer une grande surprise pour les Frenchies présents à Devoxx : le lancement en 2012 de Devoxx France (la première session aura lieu du 18 avril au 20 avril 2012).

Les deux keynotes suivantes concernaient plus généralement l’écosystème Java avant que chacun des deux speakers rentre un peu plus dans le détail :

  • Java SE par Henrik Stähl
  • Java EE par Cameron Purdy

Ces deux conférences avaient pour vocation de présenter aux développeurs la roadmap d’Oracle à moyen terme et de rappeler tout ce que Java à pu apporter par le passé. Java EE et Java SE vivent, évoluent et ont pour objectif de nous aider à travailler efficacement !

Le message de Henrik est très parlant : “Move Java Forward !” Pour lui, les communautés, les JUGs, les conférences sont les meilleurs moyens de diffuser et propager cet état d’esprit.

Conférences

Play 2.0, a Web framework for a new era

By Guilaume Bort and Sadek Drobi

Play Framework vient de rejoindre la stack TypeSafe (http://typesafe.com/) et a sorti sa bêta très prometteuse de Play 2. Comme les speakers le rappellent, le web a évolué (changement d’état) :  Static -> Dynamic -> Structured -> Real Time. La quantité de données échangées ne cesse d’augmenter et Play 2 se veut optimisé pour mieux les gérer. De plus, Play 2 ne supportera pas uniquement le SQL !!! Et encore mieux, Play 2! permettra d’intégrer de manière rapide et efficace l’évolution des technologies côté clientes ! Ces évolutions se feront tout en respectant les points forts actuels de Play :

  • Facilité d’apprentissage,
  • Performances : rechargement à chaud etc…,
  • Framework complet,
  • Respect des conventions,
  • Gestion des configurations.

Autre nouveauté, Play 2 intégrera une console de gestion complète des applications et du serveur. Enfin, les templates seront désormais en Scala et non plus en Groovy (comme dans la version 1). Bref, Play est, tout comme le web, réactif et nos applications grâce à Play en profiteront tout autant ! La démonstration finale semble bluffante : les ressources CSS et JS sont vérifiées à la compilation et, en cas d’erreur, celle-ci sera énoncée directement au développeur.

Java : The Good, The Bad and the Ugly Parts

By Joshua Bloch

Durant cette session, Joshua a passé en revu l’API de la JDK de la version 1.0.2 (la première version stable)  à la 1.2 en détaillant les bons et les mauvais choix effectués à l’époque par Sun. Joshua est un orateur vraiment captivant qui a présenté les fondements du langage Java tout en pointant du doigt les erreurs (certaines étant désormais résolues, tandis que d’autres persistent afin d’assurer la compatibilité ascendante) et en expliquant les choix réalisés en fonction des contraintes de l’époque.

Une session à vivre plus qu’à raconter.

Death of the Slow: 7 Reasons to love JBoss AS7

By Dan Allen and Andrew Rubinger

JBoss AS 7 se veut désormais être le serveur le plus rapide du marché à l’heure actuelle. Ces performances reposent essentiellement sur la refonte du noyau du serveur d’applications qui s’organise sous forme de modules (un peu à la sauce OSGI) pouvant-être activés ou désactivés en fonction des besoins de chacun ainsi qu’une gestion améliorée des problématiques de concurrence (notamment au démarrage du serveur). Il n’est donc plus rare de démarrer JBoss AS 7 en moins de 10 secondes en fonction des applications déployées et des modules activés.

Pour dialoguer avec le serveur, outre la refonte de l’interface d’administration web, JBoss propose désormais une console d’administration et une API REST. Chose intéressante, les commandes executées à chaud sont persistées. Ces nouveautés sont issues du projet Andiamo.

Les outils pour l’environnement Eclipse sont dès à présent disponibles. Lors de cette présentation, la maxime “The classpath is dead” fait foi. Autre point intéressant, JBoss AS évolue vers une nouvelle gestion des configurations via deux modes Standalone et Domain (tout comme Glassfish). Plus d’informations sont disponibles ici : http://community.jboss.org/wiki/JBossAS7UserGuide.

The Heads and Tails of Project Coin

By Joe Darcy and Maurizio Cimadamore

Ce projet d’Oracle a pour vocation de définir des modifications “mineures” au langage Java  permettant de simplifier la vie du développeur. Six d’entre elles sont d’ores et déjà intégrées dans le jdk7 à savoir :

  • multi-catch : catcher plusieurs exceptions dans un seul bloc catch, séparées par un |
  • switch-case string: utiliser les String dans l’opérateur switch,
  • improve literal : utiliser l’underscore dans les types numériques afin d’améliorer la lisibilité :
    • 1_000_000_000
    • 1_5_6_345345
  • amélioration de l’inférence de type sur l’opérateur diamant
    •  Map<String, Integer> m = new HashMap<>()
  • try-with-resources : déclarer une ressource dans le bloc try qui sera automatiquement fermée lors de la sortie du bloc (la ressource doit implémenter l’interface  java.lang.AutoCloseable)
    • try (BufferedReader br = new BufferedReader(new FileReader(path))) { return br.readLine(); }
  • @SafeVarargs : fournir au compilateur la garantie que le développeur d’une méthode utilisant les varargs n’effectue pas d’opération risquée.

NoSQL for Java developers

By Chris Richardson

Tout simplement impressionnant, on en voit encore peu en entreprise et pourtant dans bien des situations elles résoudraient de nombreuses problématiques : Redis, Cassandra, MongoDB. En effet, les bases de données “conventionnelles” (SGBDR) sont très pratiques mais dans certains cas une base NoSQL pourrait-être préférée.

La présentation de Chris s’articule autour de 3 bases (redis, cassandra, mongodb) représentant chacune un certain type de bases NoSQL (clef/valeur, orientée colonne, orientée document). Autour d’un cas concret Chris présente les différentes manières de modéliser le stockage des informations dans ces bases de données.  Il en ressort que chacune est faite pour un certain type d’utilisation précis et que le choix d’une base NoSQL doit être mûrement réléchit. Certaines sont faites pour la scalabilité, d’autres pour modéliser des objets complexes, ou encore optimisées pour la lecture.

Tout au long de la présentation, Chris a agrémenté ses explications par des morceaux de code Java manipulant les API de Spring Data.

Language / Library co-evolution in Java SE 8

By Brian Goetz

Le speaker a donné une présentation réellement captivante et qui restera probablement l’une des meilleures sessions d’un speaker Oracle. Brian est parti d’un principe : qu’est ce qu’une lambda expression et comment les intégrer au langage Java. Le reste de la conférence est dédiée à l’intégration des lambdas expressions avec plusieurs propositions plus ou moins cohérentes tout en respectant les principes d’une API standardisée. Sont alors introduites les Virtual extension methods anciennenment connues sous le nom de Defender methods. Plus d’informations sont disponibles sur le site d’OpenJDK : http://openjdk.java.net/jeps/126

JAX-RS 2.0: RESTful Java on Steroids

By Marek Potociar

Difficile à suivre avec l’accent et le dynamisme incertain du speaker mais le sujet et le contenu était très intéressant. Nous avons eu un tour détaillé des nouvelles fonctionnalités de JAX-RS avec à chaque fois des exemples. Voici les fonctionalités attendues pour la deuxième version :

  • Client API
    Les librairies HTTP existantes sont trop bas niveau. Plusieurs projets client existent mais pas encore de standards. Il s’agissait d’une des fonctionnalités les plus demandées.
  • Filters & Handlers
    Ils peuvent être chaînés et permettent du coup des manipulations côté client et serveur.
  • Validation
    Utilisation des annotations de Bean Validation.
  • Hypermedia (HATOAS)
    Pour l’instant uniquement pour les liens “transitionnal”. Pas de gestion des hypermedia dans le JSON pour l’instant.

Marek nous a précisé qu’il n’était pas question pour l’instant d’intégrer des fonctionnalités MVC ni d’API de haut-niveau en indiquant qu’ils ne voulaient pas reproduire les erreurs de SOAP. Beaucoup de bonnes nouveautés arrivent, patience…

Working Off the Grid: HTML5 Offline

By Sam Dutton – slides en HTML5

Excellente présentation autour de la partie “hors-ligne” d’HTML5 et plus généralement du stockage dans le navigateur. Dans un proche avenir, il ne sera plus étonnant d’ouvrir un navigateur web sans connexion internet.
Premier point important évoqué par le speaker : les fonctionnalités s’appliquent à des problématiques avec un connexion (performances, consommation de ressources, fiabilité, expérience utilisateur…).
En une heure, nous avons eu le temps de voir les points suivants au travers de plusieurs exemples et démos :

  • Appcache
    Système de cache de ressources statiques (pages, CSS, JS, images…) Il suffit de référencer un fichier dans la balise <html>. Ce fichier contient différentes règles qui seront utilisées pas le navigateur lorsque celui ci est hors ligne.
  • WebStorage (local et session)
    Système de stockage clé/valeur. Comme pour l’AJAX ces fonctionnalités suivent le principe de la SOP (same origin policy).
  • IndexedDB
    Base de données pouvant stocker directement des objets JavaScript.
  • WebSQL
    Base de données avec un langage de requête proche de SQL. Son utilisation étant plus verbeuse (ou moins “native”) qu’IndexedDB, il semblerait que les navigateurs ne continue pas sur cette solution. Notez cependant que le support mobile est très bon.
  • FileSystem API
    Système de gestion de fichier. Il ne s’agit pas d’un accès direct au disque dur mais plutôt à un bac à sable dans lequel il est possible d’ajouter et d’enlever des fichiers.

Cette présentation s’est terminé avec un petit résumé sur le support actuel des navigateurs. Le speaker a proposé de ne pas répondre à des questions mais plutôt à des propositions autour des problématiques de stockage et de gestion hors-ligne dans les navigateurs HTML5.

Bleeding Edge HTML5

By Paul Kinlan – slides en HTML5

Concernant HTML5, on lit des articles, on regarde des présentations, on s’intéresse aux spécifications et ensuite Paul Kinlan arrive ! La présentation portait bien son nom. Nous avons vu les toutes dernières fonctionnalités qui arrivent dans les navigateurs avec des exemples et des démos intégrées dans des slides HTML5, à savoir :

  • La saisie vocale
    Nous avons eu le droit à un beau fail : “Hello Devoxx” => “Hello the box”.
  • RequestAnimationFrame
    Pour les jeux ou les applications ayant besoin d’une animation cyclique.
  • Le “pre-rendering” des pages.
    Il permet de charger à l’avance une page qui sera probablement la suivante. Problème soulevé, comment gèrer cela avec les outils d’analyse de traffic web ?
  • Les protocoles handlers.
    Ils permettent par exemple de généraliser le concept du mailto à d’autres sujet comme l’ajout d’un évènement au calendrier…
  • Les web-intents.
    Sur Android, les applications peuvent préciser “je peux partager des contenus”. Dans n’importe quelle autre application, lorsqu’on clique sur partager, on a le choix parmi une liste d’application offrant ce “intent” de partage. Les web-intents ont pour but de généraliser ce concept sur le web et rendre inter-opérable plusieurs sites sans qu’ils n’ai besoin de se connaitre. A suivre…
  • Drag and drop de fichiers vers et en dehors du navigateur.
  • Fullscreen API.
    Il n’est pas question ici d’uniquement reprendre le comportement du mode plein écran d’un navigateur mais plutôt de le rendre possible sur n’importe quel élément HTML.
  • Web RTC.
    La demande pour des échanges audio/vidéo dans le navigateur sans plugin est forte, le travail est en cours…
  • Web Audio.
    La balise audio ainsi qu’une API qui va avec existe. Elle n’est malheureusement pas du tout prête pour les jeux. Nous avons eu le droit à des démos assourdissantes de génération de sons directement au sein du navigateur. Beaucoup de possibilité et de performances sont à attendre de ce côté.

Le web bouge et a une vitesse bien supérieure à ce qu’on a pu voir ces dernière années. Paul Kinlan nous en a donné un bon exemple avec ce bel aperçu de l’avenir des navigateurs.

Building Modern Web Apps with HTML5 and DART

By David Chandler – slides en HTML5

Il y a quelques mois, Google a déclenché des avis très mitigés en annonçant un nouveau langage de script pour les navigateurs. Cette présentation était une bonne introduction au langage, ses fonctionnalités et ses outils. Ce fut l’occasion de se faire une première idée et de mieux connaitre la “roadmap” du projet.

Le projet est né d’une volonté d’aller (beaucoup) plus loin que les efforts actuels autour de l’évolution de JavaScript. Le résultat : un langage inspiré de JavaScript mais avec un typage optionnel et des classes. Tout est en version alpha et est susceptible de changer. Les développeurs intéressées pourront retrouver sur le site officiel les sources. Concerant les outils, pour l’instant un éditeur basé sur eclipse est disponible. Côté environnement, il y a le choix :

  • Deux compilateurs vers JavaScript dont un écrit en Dart.
  • Une VM (à compiler soit-même).
  • Un bac à sable web : Dartboard.
L’intégration native dans Chrome est évoquée mais rien de bien précis à ce sujet. Pour l’instant le projet est en train de naître. Comme tout nouveau langage il y a des choses intéressantes. Il est trop tôt pour dire JavaScript/Dart : 1/0. Cependant l’omniprésence de JavaScript suffit à deviner le résultat de la première manche.