Ca fera bientôt quatre ans que la spécification portlet 1.0 à été adoptée sous l’égide du JCP de Sun (JSR-168). Depuis, la plupart des acteurs du petit monde des portails Java a adopté cette normalisation : la réutilisation multi-portail de portlets normalisées JSR-168 est maintenant une réalité.
Mais en quatre ans, tous ces portails ont mûri et chacun a peu ou prou enrichi les mécanismes standards. Il est donc temps de fixer un nouveau socle commun et de normaliser les évolutions nécessaires à cette plate-forme. C’est l’objectif de la JSR-286, initiée fin 2005 et qui approche désormais de sa conclusion. En effet la première révision “Public Review” de la spécification portlet 2.0 vient d’être publiée il y a quinze jours, on peut donc raisonnablement attendre la version finale d’ici quelques semaines.
On sait déjà que cette spécification garantira une retro-compatibilité pour les portlets compatibles JSR-168 et une mise en cohérence avec la norme WSRP 2.0 définie par OASIS. Le périmètre des nouveautés de cette spécification portlet 2.0 est déjà assez clair et couvre la plupart des limitations de la version précédente :
- introduction d’un modèle événementiel pour la communication inter-portlets (y compris pour des portlets distantes intégrées par WSRP, la sérialisation des messages s’appuiera sur JAXB 2.0 qui prend d’ailleurs de plus en plus de poids)
- possibilité de servir des ressources non HTML en restant dans le contexte “portlet” (téléchargement de fichiers binaires, fragments XML pour des requêtes AJAX)
- ajout de filtres de portlet calqués sur le modèle des filtres de servlets
- normalisation d’un système de cache avancé (portée publique/privée, invalidation conditionnelle)
Gageons que les éditeurs sont dans les starting-blocks et que certains sont déjà en phase avancée d’implémentation pour intégrer ces nouveautés. Nous aurons particulièrement l’œil sur Liferay qui a été un des premiers à respecter la précédente spécification (depuis mars 2004 et sa version 2.1). Bientôt une version 5.0 compatible JSR-286 ?