Qu’est-ce que OSGi et quels sont ses exemples d’utilisation?

Je viens juste d’entendre parler du terme OSGi (en lisant des didacticiels sur les conteneurs Java EE courants tels que GlassFish et Spring), mais je n’ai pas réussi à trouver une explication simple, directe et facile à comprendre de ce qu’OSGi est ce qu’un novice en entreprise comme moi comprendrait.

Est-ce que quelqu’un peut fournir une explication aussi factice? Peut-être avec quelques exemples ou même des extraits de code?

Merci!

En termes simples, OSGi est un système de module dynamic pour Java. Il définit les moyens d’installer, désinstaller, mettre à jour, démarrer et arrêter les modules. Ces modules sont appelés bundles, mais sont, dans leur forme la plus simple, des fichiers Java jar avec un manifeste spécial. Les modules peuvent être installés, désinstallés, etc. sans arrêter ni redémarrer la machine virtuelle Java.

Une infrastructure OSGi gère le cycle de vie décrit et les dépendances entre les ensembles de manière sécurisée. Un bundle doit indiquer les packages Java qu’il exporte et qu’il importe. Les instructions d’importation et d’exportation peuvent être annotées avec les informations de version, de sorte que vous pouvez même avoir plusieurs versions du même package dans la même machine virtuelle Java.

OSGi Alliance est l’organisation qui spécifie la structure OSGi et de nombreux services d’accompagnement, par exemple pour la gestion des données de configuration, l’access aux périphériques, etc.

Ceci est juste un aperçu très basique. OSGi est beaucoup plus. S’il vous plaît jeter un oeil à https://www.osgi.org/developer/architecture/ (une introduction à l’architecture OSGi) et https://www.osgi.org/developer/where-to-start/ (beaucoup de liens et d’autres lectures recommandées par l’OSGi Alliance).

Au désortingment de quelques votes négatifs ;-), je voudrais répondre à cela par mes propres mots (afin que je puisse me corriger).

Nous construisons des applications sous la forme d’un ensemble de modules, chaque module fonctionnellement cohérent avec lui-même et peu couplé avec d’autres modules. Cela présente de nombreux avantages, comme vous le savez peut-être déjà. Temps supplémentaire, l’unité de modularité s’est améliorée des fonctions aux classes aux packages en une unité de déploiement (comme jar en Java et assembly en .Net). Mais tout cela ne se produit que pendant le développement, une fois que l’application (qui est un ensemble de modules) est déployée, le serveur le considère toujours comme une application monolithique géante, c.-à-d. OSGi rend ces limites explicites lors du développement ainsi que de l’exécution, à l’ exception des autres avantages décrits ici

Je suggère cet excellent livre gratuit pour vous aider à démarrer OSGi dans la pratique

Si vous travaillez sur une plateforme Java, vérifiez également cette présentation: Pourquoi les spécifications OSGi ont-elles été basées sur la technologie Java ™?