Die Common Object Request Broker Architecture (CORBA) ist ein Framework für verteilte Systeme, das speziell zur Unterstützung heterogener Architekturen entwikkelt wurde. Hier liegt auch einer der Hauptunterschiede zwischen CORBA und RMI, da RMI für homogene Architekturen entwickelt wurde, bei denen beide Kommunikationspartner in Form von Java-Anwendungen realisiert sind. Die Heterogenität bezieht sich hier nicht nur auf die verwendete Hardware (bspw. CPU oder Dateisystem), sondern auch auf das Betriebssystem und die verwendete Programmiersprache. Java-IDL (Interface Definition Language) ist eine Implementierung der CORBA-Spezifikation 2.0. CORBA wurde entwickelt, um ein Problem zu lösen, das vor allem in großen Firmen häufig vorzufinden ist: Das Management einer Menge verschiedener Systemressourcen, die unterschiedlichste Dienste erbringen. Oftmals finden sich bspw. neben UNIX-Workstations (bspw. Sun, IBM, HP oder SGI) auch Linux-PCs sowie Rechner, auf denen das Betriebssystem Windows installiert ist. Ein weiteres Problem besteht in der Verwendung von Netzwerken, die zur Verbindung von Rechnern und zum Austausch von Daten und Dateien eingesetzt werden. Aus technischer Sicht ist ein Netzwerk durchaus in der Lage, heterogene Systeme zu verbinden, da die hierzu notwendigen Protokolle (bspw. IP oder TCP) standardisiert wurden. Weiterhin besteht keine Abhängigkeit zwischen der Funktion eines Protokolls und der Realisierung auf einem Rechner (Hardware oder Betriebssystem). Der Datenaustausch zwischen verschiedenen Systemen ist jedoch schwierig und daher auch kostenintensiv. Programme können Daten nur dann gemeinsam verwenden, wenn diese geeignet für die Umgebung formatiert sind, in der die Daten verwendet werden. Üblicherweise sind die Datenformate allerdings nicht auf die Bedürfnisse der Kunden ausgerichtet, sondern auf die spezielle Hardware-Architektur eines bestimmten Rechnertyps. Traditionelle Unternehmensanwendungen sind meist eigenständige monolithische Programme, die nur begrenzte Zugriffsmöglichkeiten auf Prozeduren und Daten anderer Programme gestatten. Diese Programme weisen üblicherweise hohe Produktionskosten auf und sind auch wartungsintensiv, da selbst kleine Änderungen ein neues Übersetzen und neue Testläufe erfordern. Im Gegensatz dazu sind Objekte in verteilten Systemen (bspw. in CORBA) meist in Form einer mehrschichtigen Architektur aufgebaut, da hierdurch eine saubere Funktionstrennung erreicht werden kann. Die häufig verwendete dreischichtige Anwendung besteht bspw. aus einem GUI, einer Berechnungsschicht (manchmal auch als Business-Logikschicht bezeichnet) und einer Datenbankebene. Jede Interaktion der Schichten erfolgt in CORBA über die Interfaces, die alle CORBA-Objekte öffentlich zugänglich machen müssen. Die GUI-Schicht verarbeitet Benutzerinteraktionen. Wichtige Aspekte dieser Schicht sind das Design des Interfaces und die Verfügbarkeit in einer Organisation. Die GUI-Schicht kann auf dem Desktop eines Benutzers gespeichert sein, in einem Intranet eines Unternehmens oder im World Wide Web (Internet). Oft können auch verschiedene Interface-Implementierungen verwendet werden, die auf denselben Server zugreifen. Die GUI-Schicht ruft normalerweise Methoden der Berechnungsschicht auf und fungiert daher gegenüber Servern der Berechnungsschicht als Client. Die Berechnungs- oder Dienstschicht besteht aus Server-basiertem Code, der mit dem Client interagiert. Diese Schicht besteht aus Geschäftsobjekten, bspw. CORBA-Objekten, die logische Geschäftsfunktionen übernehmen, wie bspw. die Inventurkontrolle, die Budgetierung oder Abrechnungen. Diese Objekte rufen Methoden der Datenspeicherungsschicht auf. Die Datenspeicherungsschicht besteht aus Objekten, die Datenbankfunktionen kapseln und damit direkt mit Datenbankprodukten interagieren. Ein Beispiel hierfür ist eine Methode, die mit geeigneten SQL-Ausdrücken auf eine relationale Datenbank zugreift. Im Folgenden werden zunächst die Konzepte von CORBA in einer Einführung erläutert. Anschließend wird die Java-IDL betrachtet. Im Anwendungsbeispiel wird das in Kapitel 11.7 entwickelte Programm wieder aufgegriffen und so umgeschrieben, dass eine CORBA-Anwendung entsteht. Nach Abschluss dieses Kapitels sollte der Leser in der Lage sein, die Konzepte von CORBA in Java praktisch umsetzen zu können. Durch die vergleichende Darstellung von IDL und RMI sollten weiterhin verschiedenartige Konzeptionen von verteilten Systemen erkennbar und damit auch einschätzbar sein. Es liegt auf der Hand, dass im Rahmen dieses Buches keine detaillierte Erklärung aller CORBA-Funktionen erfolgen kann. Der speziell an CORBA interessierte Leser sei hier auf die Fachliteratur verwiesen.