Keynotes

Le début de cette quatrième journée à Devoxx est marquée par la keynote de Tim Bray sur Android. Tim met en avant l’adoption massive du mobile et le fait que le développeur se doit de passer à cette plateforme. La concurrence est rude sur les appStore et les développeurs doivent être excellents afin que ces téléphones nous plus de services et de meilleur qualité.

Tim exprime ses mises en garde sur l’utilisation faites des données personnelles. La confiance dans une application est (très) difficile à gagner mais est, à contrario, très vite perdue. Les applications sur mobile ont accès à un grand nombre d’informations (contacts, social, agenda, mail, géolocalisation, caméra, micro, …). Charge aux développeurs d’utiliser à bon escient ces informations pour améliorer l’utilisabilité et l’interactivité dans la vie quotidienne.

Tim émet ensuite un petit layus sur le coté financier du marché pour rappeler qu’actuellement et pour quelques temps encore, ce sont les jeux qui générent le plus de business. Coté application “d’entreprise” (application de gestion, de consultation,…), le modèle viable serait basé sur l’abonnement selon le speaker. Il est nécessaire de penser en terme de services et non en terme d’information.

Tim se félicite de la conccurence (Apple, Microsoft) qui pousse tout le monde à l’innovation. Cependant, l’hétérogénéité des plateformes pose à terme un problème lorsqu’une application doit être disponible sur chacune d’entre elle. A cela, HTML5 pourra y répondre à moyen terme. Mais l’état actuel reste fondé sur un état applicatif plutôt que web.

La keynote se termine par un message sur la capacité que nous avons à changer le monde via ces applications en connectant les utilisateurs et en leur fournissant les applications dont ils ont le besoin. Message qui dénote un peu étant donné le prix des téléphones et des abonnements nécessaires à leur utilisation …

Conférences

Cloud is such stuff as dreams are made on

By Patrick Chanezon, Guillaume Laforge and Ludovic Champenois

Une conférence prometteuse qui n’a pas fait rêver car celle-ci ressemblait plus à un “Partner Slot” qu’à une conférence…
En introduction, nous avons eu une définition du cloud et des éléments le composant (SaaS, PaaS et IaaS), nous avons vu ce qui a permis d’en arriver la comme les évolutions des composants (browser, services, API,…).
Désormais les technologies existent et sont bien présente mais ces dernières ont différents niveaux de maturité. Un des éléments à bien prendre en compte lors du choix du fournisseur du Paas est la stratégie mise en oeuvre sur la plateforme.

Sur la suite de la conf, nous avons eu les présentations et les démonstrations de cloudfoundry, app-engine et Gaelyk (Groovy toolkit sur app-engine)

JMS 2.0

By Nigel Deakin

Cette conférence a tenue ses promesses et fut très intéressante a suivre.
La spécification JMS 2.0 a débuté en mars 2011 (l’ancienne version, JMS 1.1, datait de 2003 et il existe actuellement beaucoup d’implémentation, libre ou propriétaire de cette spécification) et devrait aboutir pour le troisième trimestre de 2012. Les objectifs principaux de la nouvelle spécification sont, pour l’essentiel, les suivants:

  • Simplifier l’API:
    • Utilisation d’injection pour le MessagingContext, TextMessage, JMSConnection, JMSDestination,… ainsi que pour la création des ressources
    • Plus besoin de créer le textMessage (producer.send(String s) / producer.send(Serializable object))
  • Améliorer l’intégration avec les différents serveurs d’application
    • Le but est que n’importe quel provider puisse fonctionner avec n’importe quel serveur d’applications Java. Pour réaliser cela, la spécification 2.0 rend l’utilisation de JCA (Java Connector Architecture) obligatoire.
  • Ajout de nouvelles fonctionnalités
    • Utilisation obligatoire du DeliveryDelay (qui n’est donc plus dépendant du provider), les acknowledgments peuvent fonctionner en asynchrone, le JMSXDeliveryCount devient également obligatoire,…

Deploying Java & Play Framework Apps to the Cloud

By James Ward

Conférence très intéressante sur Heroku. Ce PaaS permet de déployer très rapidement des applications de tout type : Spring, Scala, Java, Play!, Ruby, nodejs, Clojure  et bientôt Grails. James Ward nous a ainsi fait la démonstration du déploiement sur Heroku de trois applications : une Spring, une Play! Java et une Play! Scala. La facilité avec laquelle Git et Heroku permettent de déployer sur le cloud ces applications est très impressionnant ! James conseille le site : java.herokuapp.com pour avoir quelques exemples d’applications qui ont été testée. L’ensemble de la documentation est disponible sur le site d’Heroku. Ce PaaS met à disposition des IHMs d’administration de la plateforme. Pour information, les bases de données supportées sont : PostgreSQL, Oracle, MySQL, Redis et MongoDB.

Glassfish, 2 years into J2EE 6

By Alexis Moussine-Pouchkine

Glassfish est l’implémentation de référence de J2EE6. Il incorpore, entre autre les injections CDI, les fonctionnalités REST et améliore les technologies existantes comme  JSF, EJB, Servlet… Il est prévu de migrer “into the cloud” avec J2EE 7 dans sa version 4. C’est un projet Opensource sous license GPLv2/CDDL.

Glassfish 3.x est tres flexible, extensible et productif. Il est très utilisé actuellement:
– 10 millions de téléchargement/an
– 3rd party contribute
– mailling list très active

Ce serveur est également disponible en version payante ce qui apporte du support, des patchs,…
De nouvelles fonctionnalités sont disponibles comme la sauvegarde du DAS au runtime, l’activeCache, le monitoring de script client, le loadbalancer plugin et installer.

Voici l’évolution des versions sur 2010, 2011 et 2012 :
2010 => 3.0.1
2011 => 3.1.1 qui apporte des corrections + java7 + AIX 6.1/7.1
2012 => 3.1.2 et 4 (PaaS enable !!)

Suite à cette introduction, Stephan Janssen de Parleys.com nous a exposé son retour d’expérience sur ce serveur. Pour lui le serveur fonctionne très bien (mode cluster) et est très fiable. Il soulève malgré tout quelques points à améliorer comme la gestion des logs (Glassfish crache beaucoup de logs inutiles), la gestion des mises a jour des applications qui nécessite un redémarrage serveur provoquant une interruption de service (problème qui sera prochainement corriger grâce a SERLI) et une meilleur supervision du serveur dans la console d’administration (mémoire, cpu, threads, connection pool,…)

S’en est suivi une présentation de Mollom, qui est une solution pour supprimer les “website spam” (filtering content, Captcha, visitor/IP reputation model).

Glassfish in the virtual world

By Jérôme Dochez

Jérôme à  tout d’abord fait sa définition du cloud :
En premier lieu nous avons l’Infrastucture as a Service (IaaS) qui permet de creer des VM à la demande. Sur l’ IaaS, nous avons la Plateforme as a Service (PaaS) qui fournit les instances J2EE et enfin, sur le PaaS, nous avons le Software as a Service (SaaS) qui fournit les applications J2EE.

Actuellement (sans le cloud), quand nous voulons déployer une application, il y a plusieurs étapes à effectuer:
– installer les environnements J2EE sur les hardwares
– créer les clusters
– mapper correctement les flux
– résoudre les dépendances
– changer le J2EE application runtime descriptor (optionnel)
– et enfin, déployer l’application

Afin de faciliter grandement cela, PaaS permet de réaliser des déploiements de façon optimisés, sécurisés et supervisés. Pour les développeurs, cela permet de gagner du temps et de déployer rapidement. Il n’y a plus qu’une seule étape pour déployer et une seule étape pour undéployer. Attention:  PaaS ne doit pas être utilisé pour le développement mais uniquement pour le déploiement une fois le développement réalisé.

Pour réussir à faire cela, glassfish doit :

  • Utiliser et monitorer les VM (create, stop, start,…)
  • Comprendre les références et les définitions de services
  • Mapper les références aux définitions de services

Pour cela, il est nécessaire de bien spécifier les metadatas des services. Glassfish utilise un fichier glassfish-service.xml dans lequel le développeur doit spécifier ces informations afin de permettre à Glassfish de comprendre et mapper les références de services avec leurs définitions.

Par la suite, Jérôme a réalisé une démonstration très intéressante où il déploie très facilement (une seule commande) une application sur le cloud. La visualisation de la création et des démarrages des machines virtuelles  ainsi que les environnements J2EE  (grâce à la prise à distance de son poste se trouvant aux Etats Unis) fut assez impressionnant. En une commande et quelques secondes, l’application était disponible !

HTML 5 with Play/Scala, CoffeeScript and Jade

By Matt Raible

Peut être le meilleur talk proposé à Devoxx. Matt a retracé son apprentissage de ces technologies pour Devoxx en expliquant ses choix, les problèmes rencontrés et la façon dont il a pu les résoudre.

Pour Matt, l’apprentissage de Scala peut se comparer à apprivoiser le dragon d’Avatar. Difficile mais une fois dompté il vous fait faire de grandes choses. Concernant Play! Matt rappel que c’est un framework fait par et pour les développeurs web.

Prenez un abonnement à Parleys rien que pour cette session !

The jQuery essentials

By Addy Osmani

Super conférence de Addy, il a réussi l’exploit de présenter tout le potentiel jQuery en 1h. jQuery est le fameux framework javascript qui permet d’optimiser la partie front-end d’une application. Ce framework est très léger, et se veut le framework javascript qui vous simplifie la vie : “Write less, do more.”. Ce framework extensible possède un système très performant de sélecteurs, d’animation, d’ajax, etc… Enfin, sachez qu’il est très facile d’apprentissage, qu’il a une communauté nombreuse et active (forums, blogs, IRC, twitters, books, tutoriaux…) et qu’il est utilisé par de très nombreux sites !

Fun with Java and home automation

By Vinicius Senger et Eric Bariaux

Cette présentation était très intéressante et comportait de belles démonstrations.
Tout d’abord Vinicius a présenté jHome qui est une API complète pour la domotique. Cette API permet, par exemple, de lire l’état de capteurs via des requêtes jQuery et/ou REST, d’envoyer des commandes via WS et/ou message JMS,… jHome est essentiellement basé sur les EJB et les injections CDI. La v1.0 est prévue pour décembre 2011.

Les composants hardware peuvent communiquer avec le container J2EE en utilisant différents moyens comme wifi, bluetooth, RF, xBee, zigBee (communication sans fils de proche en proche), USB, Ethernet, X10,…

La démonstration qui a suivi était très sympathique. Elle consistait à contrôler des lampes, haut-parleur à distance soit via une interface web ou soit en twittant. Cette démonstration a impressionné l’assistance !

Ensuite, Eric a exposé la problématique de ce marché : il n’existe pas de standard (très souvent un protocole par vendeur, protocole très souvent propriétaire) ce qui fait que les coûts de développement et d’intégration sont très élevés. Les coûts élevés entraînent le ciblage d’un marché de luxe ce qui freine grandement l’évolution de ces technologies.

Activiti and Vaadin, a match made in heaven

By Frederik Heremans and Petter Holmström

Cette session est basée sur le site de Devoxx et plus spécifiquement la gestion interne des abonnements / enregistrements. Les speakers expliquent chacune des spécificités de leur librairie et des besoins pour le site web de Devoxx. S’ensuit une  bonne session de live-coding entre les deux comparses qui se sont amusés à ajouter une étape de validation de note de frais avant paiement à l’émetteur au sein d’un workflow exemple. Les interactions sont riches, les deux speakers développent l’un après l’autre sans toutefois rentrer dans les détails… exit donc le comment faire pour intégrer Vaadin et Activiti ! Dommage…

Jigsaw : Putting It Together

By Mark Reinhold

L’objectif principal du projet Jigsaw est d’étendre le langage afin de supporter la modularisation et le découpage de la “plateforme” en modules. Cette modularisation offre un avantage de poids : la machine virtuelle Java ne charge uniquement que les modules dont elle a besoin et optimise donc les temps de chargement et l’exécution.

Il sera donc possible de travailler dans deux modes distincts :

  • Legacy mode : le mode actuel, avec classpath
  • Module mode : ou le classpath n’existe plus !

Chacun des modules pourra alors définir au sein de fichiers module-info.java :

  • ses dépendances vers d’autres modules (avec numéro de version) ,
  • les modules qu’il fournit et en quelle version

A noter, en outre, qu’il sera possible de gérer d’autres types de package tels que le RPM, DEB, SRV4, IPS… Enfin, les modules Java ne seront pas compatibles OSGI.