Substance est un Look&Feel Java que j'utilise en projet depuis presqu'un an associé à Beans Binding et JFD. Ce L&F permet d'avoir quasiment tout en terme d'ergonomie. La nouvelle version apporte son lot de nouveautés avec l'apparition d'un Ribbon à la Office 2007. Jetez un oeil sur cette démo en ligne, ce qu'on est capable de faire en Swing aujourd'hui dépasse largement les possibilités offertes par les Framework GUI à base de composants natifs type SWT/JFace ou WinForms côté .NET...
Un petit billet nombriliste (j'adore les billets nombrilistes :-( ) pour vous informer que j'animerai plusieurs conférences dans les prochains mois. La première, qui aura lieu le 19 Juin, est consacrée aux technologies RIA (Rich Internet Application) avec un principe totalement inédit. L'idée est d'organiser sur une journée de gigantesques sessions de Labs où les participants viendront avec leur portables, installeront et testeront trois outils/Framework : Flex, Silverlight et GWT. Animer un vaste Lab avec 75 personnes est une première, notamment pour la complexité de la logistique. J' assurerai pour ma part la partie GWT.
Les 2 et 3 Juillet, je serais également présent aux Université d'Octo, une société de conseil spécialisée dans l'architecture de SI. Ma session sera intitulée "L'architecture d'entreprise Java de demain" dont voici le pitch :
"Java a toujours été mis en avant pour sa capacité à développer des services métier d’entreprise et des composants serveurs. Côté client, cette plateforme a aussi pendant de longues années souffert de son retard par rapport à la concurrence avec une API Swing jugée peu productive. Cette session a pour objectif de montrer qu’en l’espace d’un an les choses ont radicalement changé. Côté serveur, les EJB 3 ont apporté une productivité hors pair associé au mapping objet/relationnel apporté par JPA. Côté client, les prémisses de Java 7 ont dépoussiéré Swing pour lui donner de vraies capacités d’architecture Web 2.0 avec le DataBinding, le mode WYSIWYG et la richesse de son écosystème (Pluggable Look&Feel, composants extensibles, ...). Développer n-tiers, mieux qu’avant et aussi vite qu’avec .NET, est désormais possible, cette session le démontrera."
Cette session résumera d'une certaine manière les derniers mois que j'ai passé en mode projet à mettre en place toute une philosophie de développement pour produire mieux et plus vite. J'avais dans l'idée d'organiser cette année sur le même thème que les rencontres GWT avec Didier une journée sur Java et d'y inclure cette session. Mais avec la succession des séminaires auxquels je participerai, j'ai préféré l'insérer dans le format de ces évènements.
Dans le cadre d'un projet, j'ai eu à évaluer les différents outils Open Source existant permettant de réaliser du pilotage d'IHM Swing à des fin de tests.
Si l'offre dans ce domaine est pléthore il faut avouer que la grande majorité d'entre eux combleront certainement le trou noir des outils Open Source promis à de sombres destinées. La plupart des outils testés sont énumérés dans cette liste http://java-source.net/open-source/testing-tools . Sur la base de critères très précis (compatible Java Swing & Recording), j'en ai retenu 3. Pour information, l'objectif premier étant de pouvoir enregistrer des tests d'IHM (par robotisation des évènements souris et clavier) pour les rejouer de manière programmatique.
Lors de mes différentes missions ou formations Il m'arrive régulièrement de rencontrer des fans de Javascript souvent étanches aux arguments GWT-esques.
En règle générale, il ne me faut pas plus d'une journée ou deux pour les convaincre de l'intérêt d'un compilateur comparée à l'approche native "interprétée" d'un navigateur. La force de GWT ne réside pas (uniquement) dans son approche Java mais bel et bien dans sa capacité à pruner, optimiser et compresser n'importe quel code JavaScript, serait-ce écrit par le meilleur des experts. Pour faire un raccourci, JavaScript est devenu en quelque sorte l'assembleur des langages Web 2.0 et on trouvera toujours des adaptes de couches basses.
Pour ceux qui auraient encore des doutes, voici un pointeur très intéressant sur le sujet : http://codinginparadise.org/weblog/2008/04/idea-for-dojo-from-gwt-land.html. Lisez aussi attentivement le commentaire de Ray.
"Brad,
Nice write up. There's an additional benefit from GWT and GQuery. Since the selector engine is broken down into bunch of small methods, and a compile time generator translates a Selector into a sequence of calls to these methods, then any calls not used are pruned.
Thus, if you never use any of the fancier CSS3 pseudo selectors like not/nth-child/etc, those get pruned by GWT.
For example, if you only use say, ID and descent selectors, then GWT will essentially inline just those two methods (getById, and getDescendentNodes()), thus the overall size of your GQuery output could be small.
If on the other hand, you use a single dynamic runtime query, GWT will be forced to include the whole selector engine because the decision as to which methods are neccessary has been deferred until runtime.
So, you can potentially realize both size and performance gains no usually obtainable in Javascript, unless you use a really really fancy JS build system with uber preprocessors to slice and dice and concatenate your JS files."
Au final, on peut légitimement se demander pourquoi il n'existe pas de compilateur JavaScript vers JavaScript type Rhino intégré nativement dans les navigateurs ..
Cette nouvelle est importante. Voilà bientôt un an que j'ai intégré systématiquement Hibernate Validator dans la plupart des projets sur lesquels je travaille. Mettre en place la validation du modèle de domaine via des annotations et synchroniser cette validation avec le Binding (Beans Binding par exemple) augmente la productivité des développements de manière inespérée. Mais jusqu'à présent, il est vrai qu'il fallait importer org.hibernate.validator dans la plupart des classes du domaine pour disposer de cette validation. Cette JSR va énormément faire bouger les choses.

