2009-11-30 13 views
8

OSGi ist ein dynamisches modulares System für Java. Ok, aber was ist das Basisthema, warum wurde OSGi entwickelt? Was sind die Vorteile von OSGi? Was ist die Hauptgeschichte der Entwicklung von OSGi? Warum existiert es?Was ist das zugrunde liegende Thema in OSGi?

+0

osgi ist ein Weg, der sagt, "hey wir wissen, dass Programmierer schlechte Gewohnheiten haben, aber hier ist ein Weg, um es einfacher zu machen, Ihre schlechten Gewohnheiten zu üben." –

Antwort

5

OSGi ist

  • Ein Modulsystem für Java: es bietet eine Möglichkeit, den Export und Import von Java-Pakete und die Modulgrenzen durchzusetzen, einschließlich expliziter Abhängigkeit und Versionsinformationen.

  • Ein verallgemeinerter Container für Java-Systeme: Bundles können dynamisch geladen und entladen werden, ohne das System zu stoppen, wobei "Bundle" im Grunde JAR-Datei ist.

  • Ein serviceorientiertes Programmiersystem: Neben der Modularisierung des Systems durch Pakete unterstützt OSGi auch die serviceorientierte Modularität, einschließlich der whiteboard pattern (PDF).

OSGi wurde ursprünglich High-End-Embedded-Systeme wie Set-Top-Boxen unterstützen entwickelt, welche die expliziten Abhängigkeiten und Versionierung sowie so dass es ziemlich leicht, wenn sie als eine neuere, unternehmen Seite motivieren Container.

+1

Bevor sich die OSGi Alliance umbenannte, stand OSGi für "Open Services Gateway Initiative". Hauptziel waren Embedded Home Gateways und Router. – akr

17

Wenn man genauer hinsieht, ist das Konzept des Classpath in Java wirklich nervig.

Sie verteilen Ihre Klassen in JAR-Dateien, aber während der Laufzeit wird Java (fast) blind alle Klassen aus allen JAR-Dateien in eine große Tasche werfen, wo gleichnamige Klassen sich gegenseitig überschatten und dann auf unerwartete Weise interagieren.

OSGi bringt der Java-Plattform eine angemessene Laufzeitmodularität und darüber hinaus ein leistungsfähiges Servicemodell, das manchmal auch als "SOA in der JVM" bezeichnet wird.

Ich empfehle dringend, einige einführende Artikel über OSGi zu lesen, die eine konkretere Vorstellung davon geben, was das alles bedeutet. Ein guter Ausgangspunkt könnte die Serie von Artikeln über InfoQ über Java Modularität von Alex Blewitt sein:

3

ich die Frage erraten, reduziert werden kann, um ‚Was ist der Wert der Modularisierung ". Für eine hervorragende Artikelserie zu diesem Thema von Kirk Knoernschild siehe http://techdistrict.kirkk.com/. Ich glaube, ein Buch ist auch in Arbeit.

Wenn Sie akademisch veranlagt sind - die Kraft der Modularität und der dynamischen Systemzusammenstellung werden durch ein kürzlich veröffentlichtes Buch - "Vielfalt und Komplexität" (http://press.princeton.edu/titles/9208.html) gut erforscht. Obwohl nicht auf Software ausgerichtet, erklärt das Buch, warum die nächste Generation des adaptiven/robusten Softwaresystems modular sein muss.

Beachten Sie, dass zusätzlich zu den Industriestandard für Java Modularität (so dass alle der oben genannten); OSGi bringt auch eine leistungsfähige 'SOA-in der JVM' Services-Architektur auf den Tisch.

schließlich für eine sanfte und gut gestaltete Einführung in OSGi zu entwickeln - versuchen Neil Bartlett Buch 'OSGi in der Praxis' http://njbartlett.name/osgibook.html

Grüße

Richard

3

was Vorteile OSGi bietet, werden sie im Schatten durch den Verlust an Flexibilität, die Änderungen an der Build-Umgebung und eine Menge anderer Änderungen, die meist durch (sehr erfahrene) Entwickler-Inkompetenz verursacht werden.

Diese Hindernisse verringern die Produktivität des Entwicklers und verringern daher die Geschwindigkeit, mit der alle Verbesserungen am Quellcode vorgenommen werden können (nicht nur Modularitätsverbesserungen).

+0

Ich stimme nicht zu, das Tooling rund um Bundles ist ziemlich gut, so dass es viel selbst tun kann (Bnd und Felix Annotations und Sie decken ziemlich viel). Und viele Open-Source-Bibliotheken haben bereits OSGi-Manifest-Einträge (genau weil es ziemlich einfach hinzuzufügen ist). – eckes

+0

Beispiele: Maven-Bundle-Plugins, die Config-Dateien erzeugen, die von Felix als fehlerhaft abgelehnt wurden (und sie manuell reparieren müssen), "Apply to classpath", die Maven-Projekte unterbricht, keine Fehler oder Warnungen, wenn etwas nicht funktioniert, buildple up the wazoo, iPOJO scheitert stillschweigend an seiner Arbeit, schreibt falsch in Nachrichten, benötigt Hacking (pax url), um die gleiche Arbeit zwischen IDE und deployed JAR zu machen, weil sie es überdimensioniert haben und angenommen haben, dass jeder Rechner einen OSGi-Container steuern wird Bereitstellung von Pluggable-Spiele, Grafik, Audio-Software für den normalen Nutzer nicht zumutbar. – user515655

Verwandte Themen