Pour ceux qui n'en aurait pas entendu parler, OSGi est (pour faire court) une architecture Java qui héberge à des applications décomposées en "bundles". Chaque bundle expose une interface "publique", la seule accessible aux autres bundles - d'où une sparation très propre. OSGi permet un redéploiement à chaud des bundles, des versions concurrentes, des mises à niveau "à chaud" ... bref plein de fonctionnalités alléchantes.
De son côté, JEE n'offre absolument rien de comparable (en standard : Weblogic permet par exemple une mise à niveau N+1 sans interrruption de service). Java en général n'offre pas de séparation "stricte" entre modules, bien que quelques JSR tentent de ratrapper le retard.
SpringSource - décidément très actif ce printemps - lance "
SpringSource Application Platform". Pour faire très schématique, vous prener un conteneur OSGi (celui qui est au coeur d'Eclipse et de ses plugins), vous ajouter Spring-Dynamic-Modules (aka "Spring-osgi"), puis vous placez au dessus un Tomcat retravaillé pour l'occasion et vous déployez vos application web dessus.
Dans un premier temps ça ne change pas grand chose.
Maintenant vous remplacez votre WEB-INF/lib par des déclarations de bundles OSGi. Le war ne fait plus que quelques ko et toutes les librairies sont mutualisées. Une mise à niveau d'une seule librairie se fait sans interruption du service.
Bonus complémentaire, OSGi vous assure que vous n'utilisez pas "par mégarde" des classes interne d'une librairie, qui risque de changer ou disparaître dans une version N+1.
Et on peut aller plus loin en utilisant un packaging dédié "
.par" pour construire l'application en bundles OSGi, tout en bénéficiant d'un des meilleurs moteur de servlet et de l'API servlet/JSP complète.
Personne ne sera surpris de voir les prochaines versions de Websphere, Weblogic, Jboss et autres proposer des passerelles vers les fonctionnalités OSGi.
Faut il passer sous SpringSource Application Platform ?Dans ma vie à moi, je n'ai pas mon mot a dire et je me coltine toujours un Websphere 5.0.2. Le sujet n'est pas là. L'intérêt est que SpringSource propose une solution JEE
+ OSGi qui donne un apperçu de ce que seront les serveurs d'application dans quelques années.
Spring-DM de son côté propose un modèle de développement typiquement Spring (100% POJO) qui permet de passer à OSGi sans douleur - ce qui n'est pas gagné a priori vu les restrictions que cela implique sur la manipulation du
ClassPath.
Autrement dit, jettez un oeil à la doc Spring-DM, apprenez les ficelles d'OSGi, comme ça dans quelques années, quand il faudra migrer
dynosaure-2.1 sous
Websphere-12-Adanced-OSGi, vous aurez déjà préparé le terrain.
Et pour ceux qui peuvent se le permettre, surfez sur la vague OSGi !