290 votes

Ce que OSGi résout-elle ?

J'ai lu sur Wikipédia et d'autres sites sur OSGi, mais je n'ai pas vraiment voir la grande image. Il dit que c'est un composant basé sur la plateforme, et que vous pouvez recharger à l'exécution. Aussi la pratique de "l'exemple" compte tenu de partout, c'est le Plugin Eclipse Cadre.

Mes questions sont les suivantes:

  1. Ce qui est clair et simple définition d'OSGi?

  2. Quels problèmes communs permet-il de résoudre?

Par "des problèmes communs", je veux dire problèmes auxquels nous sommes confrontés tous les jours, comme "Ce qui peut OSGi faire pour rendre notre travail plus efficace/fun/simple?"

100voto

Abhishek Goel Points 792

quels sont les avantages d'OSGi du composant au système de vous fournir?
Eh bien, Ici, est tout à fait une liste:

Réduction de la Complexité - Développement avec la technologie OSGi-dire de développement de faisceaux: les composants OSGi. Les Bundles sont des modules. Ils cachent leurs internes des autres faisceaux et de communiquer à travers des prestations définies. Cacher les éléments internes de la plus grande liberté de changer plus tard. Cela réduit non seulement le nombre de bugs, il fait aussi des faisceaux plus simple à développer correctement de la taille des faisceaux de mettre en œuvre un morceau de fonctionnalités par le biais d'interfaces bien définies. Il y a un blog intéressant qui décrit ce que la technologie OSGi a fait pour leur processus de développement.

La réutilisation - OSGi modèle de composant, il est très facile à utiliser de nombreux composants tiers dans une application. Un nombre croissant de projets open source offrent leurs Pots de prêt à l'emploi pour OSGi. Toutefois, les bibliothèques sont aussi de plus en plus comme des ready-made de faisceaux.

Monde réel - Le framework OSGi est dynamique. Il peut mettre à jour des faisceaux sur la volée et services peuvent aller et venir. Les développeurs ont utilisé plus traditionnelles en Java voyons cela comme une très problématique de la fonctionnalité et de ne pas voir l'avantage. Cependant, il s'avère que le monde réel est très dynamique et ayant des services dynamiques qui peuvent aller et venir rend les services d'un match parfait pour de nombreux scénarios réels. Par exemple, un service peut modéliser un appareil dans le réseau. Si le périphérique est détecté, le service est enregistré. Si l'appareil se met à l'écart, le service est annulé. Il ya un nombre surprenant de scénarios réels qui correspondent à cette dynamique, le modèle de service. Applications peut donc réutiliser le puissant primitives du service de registre (registre, d'obtenir, de la liste avec une force expressive du langage de filtrage, et d'attente pour les services d'apparaître et de disparaître) dans leur propre domaine. Cela permet non seulement d'économiser de l'écriture de code, il fournit également une visibilité mondiale, les outils de débogage, et plus de fonctionnalités qu'aurait mis en place pour une solution dédiée. L'écriture de code dans un environnement aussi dynamique des sons comme un cauchemar, mais heureusement, il y a des cours de soutien et des cadres qui prennent pour la plupart, si pas tous, de la douleur.

Facilité de Déploiement - La technologie OSGi n'est pas seulement une norme pour les composants. Il précise également la manière dont les composants sont installés et gérés. Cette API a été utilisé par de nombreux faisceaux de fournir un agent de gestion. Cet agent de gestion peut être aussi simple comme un shell de commande, un TR-69 protocole de gestion de pilote, OMA DM pilote de protocole, cloud computing interface d'Amazon EC2, ou un IBM Tivoli système de gestion. La normalisation de la gestion de l'API, il est très facile à intégrer la technologie OSGi dans des systèmes existants et futurs.

Les Mises à jour dynamiques - OSGi modèle de composant est un modèle dynamique. Les faisceaux peuvent être installés, marche, arrêt, mise à jour, et désinstallé sans ramener le système dans son ensemble. Beaucoup de développeurs Java ne crois pas que cela peut être fait de manière fiable et donc d'abord de ne pas l'utiliser dans la production. Cependant, après l'utilisation de ce développement pendant un certain temps, la plupart commencent à se rendre compte qu'elle fonctionne réellement et significativement réduit le temps de déploiement.

Adaptation de L'OSGi modèle de composant est conçu à partir du sol pour permettre le mélange et l'appariement des composants. Cela nécessite que les dépendances des composants doivent être spécifiés et il nécessite des composants de vivre dans un environnement où leurs dépendances optionnelles ne sont pas toujours disponibles. OSGi service de registre est une dynamique de registre où les faisceaux peuvent s'inscrire, obtenir et écouter de services. Cette dynamique modèle de service permet de faisceaux pour savoir quelles fonctionnalités sont disponibles sur le système et d'adapter les fonctionnalités qu'ils peuvent offrir. Cela rend le code plus flexible et résilient aux changements.

Transparence - Faisceaux et des services de première classe des citoyens dans l'environnement OSGi. La gestion de l'API permet d'accéder à l'état interne d'un bundle ainsi que la façon dont il est connecté à d'autres bundles. Par exemple, la plupart des cadres de fournir une interface de commande qui montre cet état interne. Les applications peuvent être arrêtés pour résoudre un certain problème de santé, de diagnostic ou de faisceaux peut être introduit. Au lieu de regarder des millions de lignes de sortie de journalisation et à long redémarrage fois, OSGi applications peuvent souvent être corrigés avec un shell de commande.

La gestion des versions de la technologie OSGi résout POT de l'enfer. POT de l'enfer est le problème que la bibliothèque fonctionne avec la bibliothèque B;version=2, mais la bibliothèque C ne peut travailler qu'avec B;version=3. En Java standard, vous êtes hors de la chance. Dans OSGi environnement, tous les faisceaux sont soigneusement versionnées et seuls les ensembles qui peuvent collaborer sont câblés ensemble dans la même classe de l'espace. Ceci permet à la fois bundle A et C de la fonction avec leur propre bibliothèque. Bien qu'il n'est pas conseillé pour la conception de systèmes avec cette versioning problème, il peut être un épargnant de vie dans certains cas.

Simple - OSGi API est étonnamment simple. L'API de base n'est qu'un paquet de moins de 30 classes/interfaces. Cette API de base est suffisant pour écrire des faisceaux, d'installation, de démarrage, d'arrêt, de mise à jour, et de les désinstaller et comprend tous les écouteurs et classes de sécurité. Il y a très peu d'Api qui fournissent autant de fonctionnalités pour si peu de l'API.

Petit - OSGi Version 4-Cadre peut être mis en œuvre dans environ 300 KO fichier JAR. C'est une petite surcharge de la quantité de fonctionnalités qui est ajouté à une demande en OSGi. OSGi donc fonctionne sur une large gamme d'appareils: de très petites, de petites, unités centrales. Il demande seulement pour un minimum de la machine virtuelle Java pour exécuter et ajoute que très peu sur le dessus de cela.

Rapide - l'Une des principales responsabilités de l'OSGi cadre du chargement des classes de faisceaux. En Java traditionnelle, les Pots sont complètement visibles et placés sur une liste linéaire. La recherche d'une classe nécessite la recherche par le biais de ce (souvent très long, 150 n'est pas rare) de la liste. En revanche, OSGi pré-faisceaux de fils et sait pour chaque module exactement qui bundle fournit la classe. Ce manque de recherche est l'une vitesse importante facteur au démarrage.

Fainéant - Paresseux dans le logiciel est bon et la technologie OSGi a beaucoup de mécanismes en place pour faire des choses que lorsqu'ils sont vraiment nécessaires. Pour des exemples, des paquets peut être démarré avec impatience, mais ils peuvent également être configurés uniquement dans le cas où un autre bundle. Les Services peuvent être enregistrées, mais seulement créé quand ils sont utilisés. Les spécifications ont été optimisés à plusieurs reprises pour permettre ce genre de paresseux scénarios qui peuvent enregistrer d'énormes coûts d'exécution.

Secure - Java a un très puissant fine modèle de sécurité dans le fond mais il s'est avéré très difficile à configurer dans la pratique. Le résultat est que la plupart de sécuriser les applications Java sont en cours d'exécution avec un choix binaire: pas de sécurité ou très limitée des capacités. OSGi modèle de sécurité tire parti de la fine modèle de sécurité, mais améliore la facilité d'utilisation (ainsi que le durcissement le modèle d'origine) en ayant le bundle développeur de spécifier la sécurité demandé des détails facilement vérifiés forme, alors que l'opérateur de l'environnement demeure entièrement responsable. Dans l'ensemble, OSGi est susceptible de fournir l'un des plus sûrs d'environnements d'applications qui est encore utilisable à court de matériel protégé des plates-formes informatiques.

Non Intrusif - Applications (bundles) dans un environnement OSGi sont laissés à leur propre. Ils peuvent utiliser pratiquement n'importe quel établissement de la VM sans OSGi en les limitant. Les meilleures pratiques dans OSGi est d'écrire Plain Old Java Objects et pour cette raison, il n'y a pas d'interface requis pour les services OSGi, même un Java objet de type String peut agir comme un service OSGi. Cette stratégie permet à l'application d'un code plus port à un autre environnement.

Coule de Partout - eh Bien, ça dépend. L'objectif initial de Java a été de courir n'importe où. Évidemment, il n'est pas possible d'exécuter tout code partout, parce que les capacités des machines virtuelles Java diffèrent. Une machine virtuelle dans un téléphone mobile ne sera probablement pas en charge les mêmes bibliothèques comme un mainframe IBM exécutant une application bancaire. Il y a deux problème pour prendre soin de. Tout d'abord, le OSGi Api ne doit pas utiliser des classes qui ne sont pas disponibles sur tous les environnements. Deuxièmement, un bundle ne devrait pas démarrer si il contient du code qui n'est pas disponible dans l'environnement d'exécution. Ces deux questions ont été prises en charge dans les spécifications OSGi.

Source : osgi.org/Technology/WhyOSGi

92voto

Travis B. Hartwell Points 2309

J'ai trouvé les avantages suivants à partir d'OSGi:

  • Chaque plugin est un versionnées artefact qui a son propre classloader.
  • Chaque plugin dépend à la fois spécifique des pots qu'il contient et aussi d'autres de version des plugins.
  • En raison de la gestion des versions et isolé chargeurs de classes, différentes versions d'un même artefact peut être chargé en même temps. Si un composant de votre application s'appuie sur une version d'un plug-in et l'autre dépend d'une autre version, ils ont tous deux peuvent être chargés en même temps.

Avec cela, vous pouvez structurer votre application comme un ensemble des versions du plugin artefacts qui sont chargés à la demande. Chaque plugin est un composant autonome. Tout comme Maven vous aide à structurer votre construire de sorte qu'il est reproductible et définie par un ensemble de versions spécifiques d'artefacts, il est créé par OSGi vous aide à le faire au moment de l'exécution.

60voto

Olaf Kock Points 18072

Je ne m'inquiète pas trop sur le hotplugability de modules OSGi (au moins actuellement). C'est plus forcée de la modularité. Ne pas avoir des millions de "public" classes disponible dans le classpath, à tout moment, protège bien de dépendances circulaires: Vous devez vraiment penser à vos interfaces publiques - et pas seulement en termes du langage java construire "public", mais en termes de votre bibliothèque/module: Quel (exactement) sont les composants que vous souhaitez rendre disponible pour les autres? Quel (exactement) sont les interfaces (d'autres modules) vous avez vraiment besoin de mettre en œuvre votre fonctionnalité?

C'est agréable, hotplug vient avec elle, mais je préfère le redémarrage de mes applications habituelles que de tester toutes les combinaisons de hotplugability...

21voto

Mr. Pichler Points 850
  • Vous pouvez, analogiquement parlant, changer le moteur de votre voiture sans avoir à éteindre.
  • Vous pouvez personnaliser des systèmes complexes pour les clients. Voir la puissance de l'Éclipse.
  • Vous pouvez réutiliser ensemble de composants. Mieux que de simples objets.
  • Vous utilisez une plate-forme stable pour développer des Applications à base de composants. Les avantages sont énormes.
  • Vous pouvez créer des Composants avec la boîte noire de concept. Les autres composants n'ont pas besoin de savoir sur les interfaces, voir juste la publication des interfaces.
  • Vous pouvez utiliser le même système à plusieurs composants égaux, mais dans des versions différentes, sans compromettre l'application. OSGi permet de résoudre le Pot de l'Enfer problème.
  • Avec OSGi vous développer une réflexion de l'architecte de systèmes avec la CDB

Il y a beaucoup d'avantages (je rappelle ces maintenant), disponible pour tout le monde qui utilise Java.

18voto

Fabian Steeg Points 24261

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X