Catalyst, un nouveau format de fichier qui permet d'exporter/importer des fichiers d'outils comme Photoshop ou Illustrator vers Flex - des améliorations de l'existant qui permettent de mieux séparer le code de logique de la définition du visuel; ie Spark Component Architecture. La définition du visuel peut se faire dans une sorte de fichier XML où l'on peut définir l'ensemble des comportements visuels des composants graphiques) - des améliorations du modèle d'animations qui permettent la 3D, l'ajout d'effets. Ces améliorations sont principalement possibles grâce aux évolutions de la plateforme d'exécution: le player Flash - le rapprochement de Spring, l'idée étant de faciliter l'intégration de plateforme type BlazeDS ou Lifecycle (pour son "presque équivalent" commercial) - la nouvelle version du Flex Builder qui outille le développement jusqu'à faciliter le binding de table sur des DataGrid.
Une présentation de JPA 2.0 qui s'enrichi par rapport à sa précédente version. - les options de mapping (nouvelles possibilités sur les jointures, PK...) - la gestion des locks optimistes ou pessimistes. Certaines APIs évoluent également et permettent de mutualiser des opérations comme la sélection de l'objet et son lock... - JP-QL reprend le principe des Criterias déjà présents dans Hibernate ou comment créer dynamiquement une requête
Et Web Beans qui cherche à standardiser Seam et cherche à proposer une couche de liant au dessus des composants déjà présents dans JEE (EJB, JSF Managed Bean...). L'idée principale reste de pouvoir agencer, l'ensemble de ces composants via des annotations spécifiques, le tout en masquant le composant Java; ie EJB, Java Bean, JSF Managed Bean. L'envie de standardisation va un peu plus loin en gérant les notions de scope (classiquement un scope session, request...) et en proposant des mécanismes - au final complexes - permettant de remplacer au déploiement les implémentations à utiliser.
C'est séduisant mais cela parait complexe...
Une assistance beaucoup moins nombreuse que pour la sesssion Flex. Pourtant ces deux sessions se sont beaucoup ressemblées : - des widgets graphiques impressionants comme le "deep zoom" - un fort accent sur la relation designer/développeur - des outils de dévéloppements productifs (Visual Studio ou eclipse pour les uns, Expression Blend ou la suite Adobe pour les autres) A noter : la possibilité d'utiliser un panel de langage de développement (C#, vb.NET ou ruby).
L'idée générale : "du TDD où le test est écrit via un DSL". Cette approche rejoint celle poussée par les méthodes agiles et le pilotage par les tests: décrire fonctionnellement le système avant même de savoir comment il sera implémenté. Il s'agit alors de décrire le test via un langage plutôt fonctionnel (Given, when, then) et d'y ajouter des closures (qui jouent le rôle de fixtures dans des solutions comme Greenpepper ou Fitnesse) permettant de s'interfacer avec le "System Under Test". De la même manière, les assertions disposent d'une sémantique plus riche du type shouldBe plutôt qu'un simple assertEquals.
C'est un peu le même principe que des Fitnesse et des GreenPepper; à l'exception du wiki et en imaginant que le code des fixtures est fusionné avec la description fonctionnelle du test.
Une session intéressante qui repose les points importants de REST : 1) Tout à un identifiant matérialisé par une URI 2) Lier les ressources les unes aux autres 3) Utiliser les verbes GET/POST/PUT/DELETE et donc éviter le "tunneling" sur POST et GET 4) Une ressource peut avoir plusieurs représentation (en conservant l'URI) 5) L'architecture REST est par essence sans état (Stateless)
L'objectif principal étant d'utiliser au maximum les possibilités du protocole HTTP et les services offerts par l'infrastructure comme les mécanismes de cache, de proxy ou d'indexation par des moteurs de recherche par exemple. Une piqure de rappel pragmatique qui fait du bien sans attaquer SOAP.
Un framework s'intégrant nativement à hibernate et permettant par annotation de versionner les objets et de réaliser en quelque sorte une piste d'audit (ajout de metadata). Il devient alors possible de requêter un objet dans une certaine version, de savoir qui a modifié quelle propriété : un SVN pour Hibernate ;-). Une limitation soulevée pendant la présentation reste l'augmentation des accès/écritures en base. A chaque modification, insertion de la version principale de l'objet, une insertion est réalisée pour conserver les modifications.
Voilà pour l'essentiel de la journée. Stay tuned!
By Fabrice Robini, Benoit Lafontaine, Olivier Mallassi