mardi 25 mai 2010

HJGMPB 1 : Profils de deploiement (Updated)

Commençons la série des HJGMPB (How JEE 6 Gave My Productivity Back) avec la présentation de la gestion et définition de profils standards de déploiement introduite par EE 6.

L'une des critiques récurrente à l'encontre de la plate forme EE est sa lourdeur et sa fâcheuse tendance à accumuler les APIs peu maintenues, utilisées et élégantes par souci de rétro-compatibilité et de complétude.
Cela implique l'obligation pour les fournisseurs de serveurs d'application de proposer une implémentation pour chacune de celles-ci, qui seront ensuite déployées sur toutes les instances. Qu'elles soient utilisées ou non.

La spécification de la gestion des profils apporte la possibilité de configurer des types de déploiement standards ciblant des besoins précis. Ils définissent notamment les systèmes et APIs déployés et mis au service des applications. Ainsi, un bus d'entreprise ne nécessite certainement pas les technologies de vue comme les servlets ou JSF.

Le premier de ces profils à voir le jour est le "Web Profile" destiné à l'hébergement d'applications Web légères. Il se passe donc des APIs "entreprise" superflues telles que EJB2, JDO ou encore JMS.
Ne restent principalement que JPA, EJB3, JSF2, CDI et Beans Validation, tous utiles dans le cadre du développement web.

Cela permet à des serveurs d'application légers, comme Tomcat ou Caucho de se déclarer compatibles avec ce profil, bien que n'implémentant pas l'ensemble des spécifications EE6.
De ce fait, une application ciblant ce profil est d'autant plus portable et résistante aux changements futurs.

En outre, le temps de lancement et l'occupation en ressources du serveur d'application s'en trouvent réduits. Un avantage non-négligeable dans sa gestion des coûts et de la disponibilité.

Les développeurs ne sont pas en reste, le (re)lancement du serveur d'application étant récurrent dans le cadre de l'implémentation d'une application Web en Java. Le swap à chaud n'est malheureusement pas toujours applicable.
Le gain peut se révéler de l'ordre de la demi-heure par jour, ce qui est loin d'être négligeable.

Si par ailleurs, le projet est régulièrement déployé sur un serveur d'intégration continue, le temps gagné peut permettre un rythme plus soutenu de test sans engendrer de coûts supplémentaires. Et ainsi mettre en évidence plus rapidement la moindre régression détectée.

Il intéressant de noter que la majorité des fournisseurs de serveurs d'application reposent leur gestion des profils sur OSGi.
Utilisant un même standard de plugins, les fournisseurs partagent facilement leur travail.

"Web Profile" sera bientôt rejoint par de profils destinés à bien d'autres usages qui bénéficieront alors de tous les avantages suscités en terme de flexibilité et de performance.




vendredi 21 mai 2010

Comment JavaEE 6 m'a rendu ma productivité.

Disponible depuis la fin de l'année dernière notamment au sein de l'implementation de référence Glassfish 3 de Sun (désormais Oracle) et JBoss AS6, Java EE 6 apporte son lot de nouveautés et dépoussière heureusement une plate-forme trop souvent perçue comme vieillissante.

Java EE souffre notamment d'une image d'usine à gaz dont les anciennes APIs sont intrusives, inélégantes et compliquées (JDO, EJB2...). En outre, elles demandaient aux développeurs un effort de configuration (XM Hell) certain, du fait de leur (trop?) grande abstraction et flexibilité.
EE 5 a grandement amélioré la situation avec l'introduction d'API modernes basées sur le principe de "convention over configuration". On peut citer notamment JPA et EJB 3.
EE6 poursuit cette simplification sur tous les fronts avec la mise à jour des nouveautés introduites par la 5eme version, l'ajout d'un système d'injection de dépendances et de gestion de contextes stateful et la mise à jour de JSF introduisant la gestion d'Ajax.
Le déploiement n'est pas oublié puisque les spécifications définissent des profiles serveurs type, notamment le "Web Profile" qui se passe des API trop "corporate" comme les ESB ou EJB2.

Ces avancées ont transforme JEE en une plate forme concurrentielle pour le développement de site de petite à moyenne taille, là où elle se destinait jusqu'alors aux grands comptes.
Comparé en terme de productivité à Rails, Django ou CakePHP, JSF2+Weld+JPA semble largement à la hauteur avec son écosystème d'outils de conception, ses performances inégalables et sa maturité.
Pour les geeks : c'est tres peu verbeux, je vous l'assure.

Une série de posts sera consacrée aux détails des changements et à leur intérêt en terme de productivité.


mercredi 19 mai 2010

News and noteworthy in the SeedKit land

Due to my current professional engagements, SeedKit development slowed down the last few week on my side.
This did not stop others to take the flame with contributions from Javier Jardón and Elliot Smith related to the build system (autotools).
Also a first third-party application is currently being developed by Alan Forbes. This log viewer is a great showcase for SeedKit. Thumbs up.