ISA und OSGi

Der Unterschiede zwischen ISA und OSGi ist die Zielrichtung – und die daraus resultierenden, notwendigen Eigenschaften.

  • ISA ist eine übergreifende Enterprise Architektur mit dem Ziel – den Bau und die Wartung von verteilten Unternehmensanwendungen produktiver, zuverlässiger und evolutionärer zu machen
    dafür wählt ISA als Kernkonzept – Modularität
  • OSGi ist eine Architektur und eine Spezifikation für ein allgemeines, dynamisches Java Modulsystem

ISA steht damit nicht in Konkurrenz zu OSGi … trotzdem macht es Sinn einige der konzeptionellen und technischen Unterschiede in Bezug auf das Verständnis und die Umsetzung von Modularität aufzuzeigen – nicht im Sinne eines besser/schlechter Vergleichs – sondern im Sinne von Warum? es diese Unterschiede gibt (s.a. … weitere Details).

ISA Modul und OSGi Bundle

Ein grundlegender Unterschied der beiden Architekturen liegt im konzeptionellen Verständnis der angestrebten Modularität und dementsprechend im Verständnis, was ein “Modul” ist bzw. was es nach Best Practice sein soll

  • das Ziel von OSGi ist dabei – universelle Modularität für Java aus der Perspektive allgemeiner Java Entwicklung
  • das Ziel von ISA ist – eine einheitliche Modularität für den effizienten Bau von Enterprise Anwendungen, die aus jeder Perspektive gleich gut nutzbar ist

Anders ausgedrückt – kommt das ISA Modulverständnis aus Richtung Fachlichkeit und das OSGi Verständnis aus Richtung Technik. Das wird auch deutlich in den Grundkonzepten von Modul und Bundle

  • ein OSGi Bundle ist eine universelle Verpackung für ein abstraktes Modul, das aus privaten und öffentlichen (exportierten) Java APIs in Form von versionierten Java Packages besteht
  • ein ISA Modul ist ein versionierter, fachlich/funktionaler Baustein einer Anwendung, mit einem eindeutigen Namen und einer öffentlichen Schnittstelle

Die beiden Aussagen sind nicht notwendigerweise Widersprüche – aber sie zeigen, dass der Blickwinkel aus dem heraus eine Aufgabe betrachtet wird deutlich Einfluss auf die Schwerpunkte hat, die gesetzt werden. Hier Anwendungsbaustein(e) dort Java Package(s).

ISA Module sollen zwei zentrale Aufgaben erfüllen

  • sie sollen einfache Austauschbarkeit und damit einfache Handhabbarkeit und Veränderbarkeit ermöglichen
  • und sie sollen aus einer fachlich/funktionalen Sicht kommend den Übergang von Fachlichkeit zu Technik kapseln

Insbesondere der letzte Punkt ist wichtig, weil aus ihm folgt, dass ISA Module keine Abstraktion sind, die dann in ein technisches Design überführt wird – sondern ganz konkret und eins zu eins die funktionalen Bausteine, aus denen ISA Systeme und Dienste bestehen – konzeptionell wie auch technisch.

Ein ISA System, egal ob Client oder Server, ist ein Verzeichnis (Repository) mit dem Systemnamen, das beliebig viele Module in Form von eindeutig benannten Moduldateien enthält, die die konkrete Implementierung der gewünschten fachlich/funktionalen Anforderungen sind.

Mit diesem Verständnis von Systemen und Modularität ist in ISA bewusst festgelegt, dass Modul und Funktionalität eine Einheit, ein Objekt bilden und das Abhängigkeiten, funktionale Nutzungsbeziehungen zwischen konkreten Modulen sind.

Das ISA Modulsystem ist damit konzeptionell klar definiert und bietet auf dieser Ebene keinen Interpretationsspielraum.

Andererseits sagt ISA damit kaum etwas über konkrete Technik aus. Ein System ist ein Verzeichnis mit Modulen, ein Modul eine Datei und alles wird durch eindeutige Namen identifiziert.

OSGi ist dagegen konzeptionell universeller gehalten aber technisch spezifischer festgelegt. Hier ist ein Bundle eine Verpackung, ein Modul ist ein eindeutiger aber symbolischer Name, Funktionalität sind versionierte, öffentliche Java Packages und Abhängigkeiten sind Imports solcher Java Packages.

Zusammengefasst ausgedrückt – ist ISA eine konkrete Lösung für eine spezifische Aufgabenstellung – wohingegen OSGi eine universelle Lösung für eine allgemeine Aufgabenstellung ist. ISA sagt wie ein Anwendungssystem aussieht – OSGi sagt wie bestimmte technische Konzepte umgesetzt werden. (… weitere Details)