Interopérabilité d'OSGi avec la plateforme NetBeans

Mike Francois

Avec la sortie de NetBeans 6.9, la plateforme de service OSGi s'est vue obtenir un support complet par l'EDI.

Geertjan Wielenga, auteur technique de l'équipe NetBeans, a rédigé un article sur l'interopérabilité d'OSGi avec la plateforme NetBeans.

Ci-dessous, la traduction de son article qui je l'espère vous apprécierez autant que j'en ai eu pour le traduire. ♪

- Titre : Interopérabilité d'OSGi avec la plateforme NetBeans

- Auteur : Mike Francois

- Parution : 2 mars 2010

- Licence : Copyright ® 2010 Mike Francois. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Interopérabilité d'OSGi avec la plateforme NetBeans

- II. Remerciements

I - Interopérabilité d'OSGi avec la plateforme NetBeans

Dans quelques mois, il y aura un outil pour les développeurs d'OSGi qui s'adressera spécifiquement à ceux qui voudront utiliser Swing dans leur UI toolkit.

Avec NetBeans 6.9 qui contient ces outils, vous serez capable de créer et de réaliser ceci.
Ci-dessous, vous pourrez voir des captures d'écran des dernières versions de développement du nouveau NetBeans.

Pour faire simple, la plateforme NetBeans reconnaît un bundle OSGi. Ainsi, vous pouvez importer des bundles OSGi dans les applications de votre plateforme NetBeans OSGi.
Ci-dessous, vous pouvez voir un dossier sélectionné dans NetBeans.

Ce dossier contient des bundles OSGi provenant de Glassfish, qui depuis GlassFish v3 tourne sous Felix :

Une fois que vous avez sélectionné le dossier contenant les bundles OSGi, vous pouvez voir tous les bundles OSGi contenus dans le dossier :

Ci-dessus, vous pouvez voir que j'ai spécifié que seulement trois bundles OSGi dans Glassfish devraient être activés dans mon application.
Les bundles OSGi Lazy Loading sont aussi supportés, ce qui résultera de choisir Autoload à la place d'Enabled.

Une fois que le wizard ci-dessus est terminé, je peux voir un nouveau cluster ajouté dans l'aperçu de mes librairies utilisées dans mon application.

Nous allons créer un bundle OSGI pour utiliser les bundles que nous avons importés.

Dans le wizard où nous avons normalement créé un module NetBeans, nous pouvons aussi créer un bundle OSGi :

À la fin du wizard ci-dessus, notre manifest sera généré et aura cet aspect :

La partie suivante, nous allons ajouter un BundleActivator. Ici vous avez un wizard qui vous aidera :

Automatiquement, le squelette de la classe BundleActivator est créé et enregistré dans le manifest.

Nous allons ajouter un peu de code dans notre BundleActivator, pour être sûr que d'une manière ou d'une autre, l'exposition du BundleContext soit ailleurs que dans le module.

Enfin, nous allons créer une action dans notre application qui affichera les bundles activés à l'utilisateur final.
À la fin, ce sera le wizard qui va générer un jeu d'ActionListener et les enregistrera dans le système de fichiers de l'application.

Nous allons définir l'ActionListener comme ci-dessous :

À noter qu'ici, nous utilisons une bonne vieille classe ActionListener dans notre bundle OSGi.
Cependant, nous appelons un module extérieur de la plateforme NetBeans qui contient la classe DialogDisplayer (de base, un JOptionPane est légèrement plus élégant).

Lancez l'application et invoquez l'action (en utilisant la location que vous avez définie dans le wizard Action, qui enregistre la position dans le système de fichiers via le fichier layer.xml, où vous pouvez modifier la position comme souhaité).
Maintenant, le container Felix démarre tout autant que la plateforme NetBeans.

Vous pouvez voir l'activité en cours des bundles OSGi, qui tourne dans une application basée sur Swing de la plateforme NetBeans :

Maintenant que vous avez eu un aperçu général,  vous pouvez si vous souhaitez continuer à explorer les différents aspects de ce qui a été présenté en lisant OSGiAndNetBeans.

II - Remerciements

Je tiens à remercier Wachter pour sa relecture orthographique.

Je tiens à remercier Geertjan Wielenga (dont la version originale est ici : http://eclipse.dzone.com/news/new-cool-tools-osgi-developers) qui nous a autorisé la traduction de son article et pour les échanges que nous avons eus.