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 :

image


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

image

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ée dans mon application.

image

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 :

image


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

image

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

image

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

image

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.

image

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 :

image

À noter qu'ici, nous utilisons une bonne vieille classe ActionListener dans notre bundle OSGi.
Cependant, nous appelons un module extérieur de la plate-forme 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 plate-forme NetBeans.


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

image

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.