Verteilte Anwendungen in Java
 

Serguei Serov

Was ist Java?

    - eine C (C++) änliche, objectorientierte Programmiersprache
    - wurde in 1995 von Sun Microsystems entwickelt
    - stellt ein client/server Sruktur dar

Anwendungsgebite

    - verteilte Anwendungen im Internet
 

           Operative Information - Abruf, graphishe Darstellung)
 
    - verwendung von Applets, als ein Teil der Web-Seite  
Apllet oder Application?

    Bei der Erstellung von Java-Anwendungen untersheidet man zwischen den
    beiden Grundformen - Java-Applet und Java-Application.
 

    unter Kontrolle des Web-browsers innerhalb des Dokuments ausgeführt
    Beispiel
      Browser ausgeführt werden, entsprechen herkömmlichen Anwendungsprogrammen
 

Merkmale von Java
 

- Objectrientierung: jedes Java-Programm besteht aus Objecten (Daten und Methoden), die über Nachrichten miteinander interagieren

- Verteilung: durch geignete Aufteilung der Anwendung in Kommunikations-, Anwendungs- und Datenhaltungsteil lassen sich verteilte Client-Server-Anwendungen realisieren

- Einfachheit: einerseitets enge Verwandschaft mit C++ und C, andererseits starke Einschränkungen der Sprachkonstruktionen (z.B. Fehlen von Zeigern, Verbot der mehrfachen Vererbung)

- Interpretierung: der Quellcod wird nicht in Maschinencode der zugrudeligenden Basismschine, sondern in ein Zwischencode - Bytecode - übersetzt; dabei handelt es sich um ein architekturunabhängiges Objectdateiform, das auf jeder Basismaschine ausführbar ist, für die ein Laufzeitsystem und ein Interupter in Form einer virtuellen Java Maschine (Java Virtual Machine) vorliegt.

- Robustheit: hat keine äßere Referenzen

- Architekturunabhägigkeit und Portabilität: einzige Voraussetzung - das Vorhandensein einer Java Virtual Machine für die jeweilige Basismaschine, damit ist eine explizite Portierung auf ein neues Zielsystem nicht mehr notwendig und man kann verzichten auf implemetierungsabhängige Aspekte bei der Spachdefinition von Java

- Multithread-Fähigkeit: unterterstützt die Nebenläufigkeit innerhalb von Programmen, d.h. mehrere Aufgaben eines Programms können mit Hilfe von unabhängigen Threads quasi simultan abgearbeitet werden

 

Warum Java?

Für Java spricht:

    Die Sprache hat in kurzer Zeit eine beachtliche Verbreitung gefunden

    Java wurde u.a. entworfen, um die Entwicklung von Netzwerk-Applikationen zu erleichtern

    Java-Objekte erfüllen Anforderungen, die in verteilten Systemen gestellt werden. Sie sind

 

Verteilte Anwendungen.

Der erste Schritt bei der Verteilung einer Anwendung ist die Übertragung von Daten. In Java kommen dazu serielle Datenströme, sogen. Streams, zum Einsatz.

    - Streams

 

Neben der Anwendung von Streams zur Dateieingabe und -ausgabe wird die Verketung von Streams, zur Manipulation der Daten vorgestellt.

    - Remote Method Invocation (RMI)
 

Um die Daten und Objekten zwischen zwei Rechnern zu verteilen genügt das TCP/IP-Protokoll vollkommen. Allerdings reicht dies noch nicht für die Implementierung von verteilten Anwendungen aus, bei denen nicht nur die Daten, aber das Anwendungsprogramm selber, auf mehrere Rechner verteilt wird. Dazu ist eine Erweiterung notwendig um die Methoden eines Objektes auf einem anderen Rechner aufrufen zu können, so daß die Module eines Progrannms auch auf mehreren Rechnern liegen können.

Die Java-Welt kennt hierfür zunächst den einfachen Mechanismus Remote Method Invocation (RMI). Damit stehen die Methoden von Java-Objekten eines Rechners für Java-Objekte auf anderen Rechnern transparent zur Verfügung, d.h. die Objekte merken nichts von der rechnenibergreifenden Zusammenarbeit. Es ergibt sich allerdings ein Unterschied in der Ausführung der jeweiligen Methode. Sie erfolgt auf dem Rechner, auf dem das Objekt sich befindet. Der Auftufer kann während dieser Zeit andere Anweisungen ausführen, was eine Leistungssteigerung der gesamten Anwendung bedeutet.

Aber die Verfendung von RMI für verteilte Anvendungen ist durch die Beschränkung auf die Interaktion zwischen Java-Objekten nicht immer einsetzbar.
 

    -  Common Object Request Broker Architecture (CORBA)
 
        CORBA stellt ein Ansatz dar, der ermöglicht die Module und Komponenten aus anderen
        Prozeßumgebungen (z.B. C++) direkt von Java nutzen.
 
Im gegensatz zu RMT unterstützt CORBA keine Sprache oder Plattform an sich, sondern ein Modell, an dem beliebige Programmiersprachen und Plattformen teilnehmen können.