2009-11-30 2 views
8

OSGi est un système modulaire dynamique pour Java. Ok, mais quel est le thème de base, pourquoi OSGi a-t-il été développé? Quels sont les avantages d'utiliser OSGi? Quelle est l'histoire principale du développement d'OSGi? Pourquoi existe-t-il?Quel est le thème sous-jacent dans OSGi?

+0

osgi est un moyen qui dit, "hé, nous savons que tous les programmeurs ont de mauvaises habitudes, mais voici un moyen de rendre plus facile la pratique de vos mauvaises habitudes." –

Répondre

5

OSGi est

  • Un système de module pour Java: il fournit un moyen d'exporter et d'importer les packages Java et de faire respecter les limites du module, y compris la dépendance et la version explicite.

  • Un conteneur généralisé pour les systèmes Java: les groupes peuvent être chargés dynamiquement et déchargés sans arrêter le système, où «bundle» est essentiellement un fichier jar.

  • Un système de programmation orienté service: en plus de modulariser le système par paquets, OSGi prend en charge la modularité orientée service, y compris des choses comme le whiteboard pattern (PDF).

OSGi a été initialement développé pour soutenir les systèmes embarqués haut de gamme tels que les boîtiers décodeurs, ce qui motive les dépendances explicites et versioning, ainsi que ce qui rend assez léger lorsqu'il est utilisé comme une version plus récente, côté entreprise récipient.

+1

Avant de se renommer OSGi Alliance, OSGi signifiait «Open Services Gateway Initiative». Sa cible principale étaient les routeurs et les routeurs domestiques intégrés. – akr

17

Si vous regardez de plus près, le concept de classpath dans Java est vraiment nul. Vous distribuez vos classes dans les fichiers JAR, mais pendant l'exécution Java jettera (presque) aveuglément toutes les classes de tous les fichiers JAR dans un grand sac où les classes avec le même nom se superposent et interagissent de manière inattendue. OSGi apporte une modularité d'exécution appropriée à la plate-forme Java et, en plus, un modèle de service puissant, parfois appelé «SOA à l'intérieur de la JVM».

Je vous recommande fortement de lire quelques articles d'introduction sur OSGi qui donneront une idée plus concrète de ce que tout cela signifie. Un bon point de départ pourrait être la série d'articles sur InfoQ sur la modularité Java par Alex Blewitt:

3

Je suppose que la question peut être réduite à « Qu'est-ce que est la valeur de Modularisation '. Pour une excellente série d'articles sur ce sujet par Kirk Knoernschild, voir http://techdistrict.kirkk.com/. Je crois qu'un livre est également en cours.

Si vous êtes académique, la puissance de la modularité et de l'assemblage dynamique du système est bien exploré par un ouvrage récemment publié - "Diversity and Complexity" (http://press.princeton.edu/titles/9208.html). Bien que non centré sur le logiciel - le livre explique pourquoi la prochaine génération de système logiciel adaptatif/robuste devra être modulaire. Notez que, en plus d'être la norme de l'industrie pour Java Modularity (permettant ainsi tout ce qui précède); OSGi apporte également une puissante architecture de services «SOA-inside the JVM».

Enfin, pour une douce et bien l'introduction artisanale au développement dans OSGi - essayer Neil Bartlett livre 'OSGi dans la pratique' http://njbartlett.name/osgibook.html

Cordialement

Richard

3

tout avantages OSGi offre, ils sont éclipsés par la perte de flexibilité, les modifications de l'environnement de construction et une foule d'autres changements, principalement causés par l'incompétence du développeur (très expérimenté). Ces obstacles réduisent la productivité des développeurs et diminuent donc la vitesse à laquelle toutes les améliorations apportées au code source peuvent être faites (pas seulement les améliorations de modularité).

+0

Je ne suis pas d'accord, l'outillage autour de Bundles est assez bon, donc il peut faire beaucoup lui-même (Bnd et Felix Annotations et vous couvrez pas mal de choses). Et beaucoup de bibliothèques open source ont déjà des entrées manifestes OSGi (exactement parce que c'est plutôt facile à ajouter). – eckes

+0

Exemples: Plugins Maven générant des fichiers de configuration rejetés par Felix comme mal formés (et devant les corriger à la main), "Apply to classpath" qui casse les projets maven, pas d'erreur ou d'avertissement quand quelque chose ne fonctionne pas, wokoo, iPOJO ne parvient pas à faire son travail, fautes d'orthographe dans les messages, nécessite le piratage (pax url) pour rendre le travail identique entre IDE et JAR déployé car ils l'ont surdimensionné et supposé que chaque machine va avoir un administrateur contrôlant un conteneur OSGi, rendant déploiement de jeux enfichables, de graphiques, de logiciels audio pour les utilisateurs normaux déraisonnables. – user515655