B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion



Ähnliche Dokumente
B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache

C Java RMI C.2 C.4. 1 Java. 1 Java (2) 1 Java (3) Objektorientierte Sprache. Objektorientierte Sprache (fortges.) Objektorientierte Sprache (fortges.

C Java RMI. 1 Java. Objektorientierte Sprache

Remote Method Invocation

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik

Hierarchische Benennung von Interfaces und Klassen

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

C.6 C.8. 1 Java (5) 1 Java (4) 1 Java (6) 2 Java RMI Grundlagen. Sicherheitsmechanismen. Hierarchische Benennung von Interfaces und Klassen

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Einführung: Verteilte Systeme - Remote Method Invocation -

Remote Method Invocation

Themen. Web Service - Clients. Kommunikation zw. Web Services

7.1.5 Java RMI Remote Method Invocation ( (

Java RMI Remote Method Invocation

Java-Programmierung. Remote Method Invocation - RMI

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Java Remote Method Invocation (RMI)

9. Remote Method Invocation Grundlagen der Programmierung II (Java)

Remote Method Invocation

Konzepte von Betriebssystem-Komponenten Middleware RMI

Mobile und Verteilte Datenbanken

22 Reproduktion oder Verwendung dieser Unterlage bedarf in jedem Fall der Zustimmung des Autors.

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter

Client/Server-Programmierung

Client/Server-Programmierung

7 Remote Method Invocation (RMI)

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method

Mobile und Verteilte Datenbanken

Programmieren II. Remote-Programmierung. Institut für Angewandte Informatik

Programmieren in Java

Praktikum Verteilte Anwendungen

Verteilte Systeme: Entfernte Methodenaufrufe

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Für objektbasiertes Programmieren ist keine objektbasierte Programmiersprache erforderlich!

Remote Methode Invocation (RMI) ETIS SS05

J Fernmethodenaufrufe Remote Method Invocation (RMI)

Verteilte Systeme. Literatur. Verteilte Systeme. Verteilte Systeme

C.38 C.40 C Socket-Factories. 5.2 Server-Seite. 6.1 Interaktionsmuster. 6 Beispiel: White-Board. generisches Skeleton

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase

Praktikum aus Softwareentwicklung 2, Stunde 8

Verteilte Systeme Übung

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Programmieren in Java

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS12) Java RMI 1 1

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation RMI Beispiel

Das Interface-Konzept am Beispiel der Sprache Java

Client/Server-Programmierung

Überblick. Java Reflection API. Class-Objekte

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS14) Java RMI 1 1

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1)

Überblick. Verteilte Systeme - 4. Übung. VS-Übung. Dynamische Proxies Stubs & Skeletons Dynamische Proxies als Stubs. Tobias Distler, Michael Gernoth

8.1.5 Java RMI Remote Method Invocation

Überblick. Stubs & Skeletons Java Reflection API Dynamische Proxies als Stubs Generische Skeletons Aufgabe 2. VS-Übung (SS17) Stubs & Skeletons 2 1

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Kommunikation. Björn und Georg

Überblick. Fernmethodenaufrufe

Remote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS16) Java RMI 1 1

14. RMI - Remote Method Invocation

B.33 B Programmiermodell. 3 Programmiermodell (2) Erweiterung des Java-Programmiermodells. Wesentliche Änderungen gegenüber Java

Grundlagen verteilter Systeme

Überblick. Netzprogrammierung 3. Verteilte Objekte in Java RMI. Verteilte Objekte

Einstieg in die Informatik mit Java

Vorkurs Informatik WiSe 15/16

Einstieg in die Informatik mit Java

1 Einleitung Generizität Syntax... 2

Einstieg in die Informatik mit Java

Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators. BindingIterator. next_one next_n destroy

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmierpraktikum 3D Computer Grafik

Überblick. Middleware - Übung. Model-View-Controller. Entwurfsmuster (Design Patterns)

Einführung in die Programmiersprache Java II

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einstieg in die Informatik mit Java

Übung zur Vorlesung "Einführung in Verteilte Systeme"

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006

36.2 Example ClassLoader Example Appletviewer

Algorithmen und Datenstrukturen

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

Probeklausur: Programmierung WS04/05

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

10.1 Remote Method Invocation (RMI)

Überblick. Verteilte Systeme Übung. VS-Übung. Dynamische Proxies Stubs & Skeletons Dynamische Proxies als Stubs. Tobias Distler, Michael Gernoth

Kapitel 6: Verteilte Objekte durch RMI. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Inhalt. Übung zur Vorlesung "Einführung in Verteilte Systeme" Das RMI-Schichtenmodell. Java Remote Method Invocation. Wintersemester 2004/05

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Überblick. Verteilte Systeme - 4. Übung. Dynamische Proxies Stubs & Skeletons Dynamische Proxies als Stubs

AvO-Übung 2 Remote Method Invocation

Szenario 3: Service mit erweiterter Schnittstelle

Transkript:

1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2) 1.2 Methoden Klassenbeschreibung Methode ist eine Art Funktion Beispiel class Car Wheel [4] mywheels; Motor mymotor; int maxspeed = 180; Erzeugung neuer e Beispiel Car c = new Car(); // Definition der n kann auf eigenen zustand zugreifen wird an einem aufgerufen Beispiel class Car void startengine() mymotor.ignite(); B.3 B.4

1.2 Methoden (2) 1.3 Interfaces Methodenaufruf Schnittstelle eines s bei vorhandener referenz Übergabe von Parametern Rückgabe eines Ergebnisses Statische Methoden (static) sind an Klasse gebunden nicht an e über Klassennamen eigenständiges syntaktisches Konstrukt Klassen können Interfaces implementieren e von Klassen, die dasselbe Interface implementieren sind kompatibel Typpolymorphismus Interfaces enthalten nur Methoden oder Konstanten keine Attribute/ n Beispiel interface Vehicle boolean ismoving(); B.5 class Car implements Vehicle boolean ismoving() B.6 1.4 Vererbung 1.5 Exceptions Java als objektorientierte Sprache einfache Vererbung (extends) maximal eine Basisklasse übernimmt Beschreibung der Basisklasse Kompatibilität Beispiel class Van extends Car mehrfache Interface-Vererbung (implements) lediglich Schnittstelle jedoch keine Implementierung wird geerbt Beispiel interface Vehicle implements OwnedObject, ColouredObject B.7 Exception-Handling außerordentliche Beendigung eines Methodenaufrufs Beispiel: class Car void startengine() throws EngineFailure if throw new EngineFailure(); Exception kann beim eingefangen und ausgewertet werden Beispiel try c.startengine(); catch ( EngineFailure e ) B.8

1.6 Weitere Elemente 1.7 Sicherheitsmechanismen Hierarchische Benennung von Interfaces und Klassen Byte-Code-Verifier Paketname + Klassenname (Package) z.b. java.lang.object weltweite eindeutige Benennung durch Anlehnung des Paketnamens an Domainname z.b. org.aspectix.orb.orb (angelehnt an aspectix.org) Compilierung auf Klassenebene (Class File) übersetzt in interpretierten Byte-Code Dynamisches Laden von Klassen ClassLoader kann Klassen von beliebigen Quellen laden Ausführung des Byte-Codes erhält Semantik der Sprache z.b. kein Zugriff auf nicht-öffentliche n anderer e möglich Sandboxing Klassen eines neuen ClassLoaders werden von einem SecurityManager kontrolliert versagt oder gewährt Zugriff auf Dateien Zugriff auf Netzwerkverbindungen etc. Threads als Sprachkonzept verfügbar als spezielle e B.9 B.10 1.8 JVM 1.8 Parameterübergabe Java Virtual Machine orientierte Sprache Interpreter für Java Class-Files heute in der Regel JIT-Compiler Ausführungsumgebung für Java Programme bzw. Klassen mehrere ClassLoader möglich Semantik der Parameterübergabe Call-By-Object-Reference für e übergebene Referenz Call-By-Value für andere Datentypen (z.b. Integer-Typ int) 42 42 übergebener Wert B.11 B.12

2 Verteiltes Java 2 Verteiltes Java (2) Idee: Realisierung verteiltes Java Programm läuft auf mehreren JVMs (Knoten), möglicherweise auf mehreren Rechnern erfordert Unterstützungssoftware, z.b. durch eine Middleware Middleware liegt zwischen Anwendung und Betriebssysem e liegen in einer der verfügbaren JVMs transparenter Client weiß nicht, dass bearbeitung in anderen JVM erfolgt (verteilungstransparent) Client weiß nicht, in welcher JVM bearbeitung erfolgt (ortstransparent) Java Remote Method Invocation (RMI) Erweiterung des Java Programmiermodells für Verteilung mehrere JVMs spannen eine verteilte Rechenplattform auf Verteilungseinheiten Java e Beispiel: Knotengrenze B.13 B.14 2.1 Verteilte Java e 2.1 Verteilte Java e (2) Schnittstelle verteilte Java e / RMI-e implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.remote erbt dient als Marker, enthält keine Methoden alle Methoden in von java.rmi.remote erbenden Interfaces müssen die Exception java.rmi.remoteexception deklarieren Beispiel package avo; public interface Printer extends java.rmi.remote public void print( String s ) throws java.rmi.remoteexception; zeigt Fehler bei entfernten en an es kann auch eine Basisklasse deklariert werden, z.b. java.io.ioexception oder java.lang.exception B.15 B.16

2.1 Verteilte Java e (2) 2.2 Erzeugen eines RMI-s Entfernt ansprechbare Methoden Übliches Vorgehen entfernt sind nur die Methoden aus Interfaces ansprechbar, die von Remote erben andere Methoden und n sind nur lokal ansprechbar Implementierungsklasse erbt/implementiert mind. ein Remote-Interface Implementierungsklasse erbt von java.rmi.server.unicastremoteobject bereitet instanz für entfernte e: exportiert Referenzen Referenzen nur mit dem Namen eines Remote-Interfaces typisieren nicht mit dem Klassennamen der Implementierung Beispiel: avo.printer p; try p.print( Testdruck ); catch( java.rmi.remoteexception e) Alternative Implementierungsklasse erbt/implementiert mind. ein Remote-Interface manuelles Vorbereiten für entfernte e: von java.rmi.server.unicastremoteobject.exportobject( obj, ) B.17 B.18 2.2 Erzeugen eines RMI-s (2) 2.2 Erzeugen eines RMI-s (3) Beispiel package avo; Realisierung eines entfernten s Einsatz von Stellvertreterobjekten public class MyPrinter extends java.rmi.server.unicastremoteobject implements Printer public void print( String s ) throws java.rmi.remoteexeception Client Stubobjekt Skeleton RMI- RMI-Compiler erzeugt Stubklasse (Stellvertreter) für Clientseite nur bis Java 1.4 notwendig ab Java 1.5 (Java 5) generische Stubs möglich erzeugt Skeletonklasse für Serverseite nur bis Java 1.1 notwendig ab Java 1.2 generische Skeletons B.19 B.20

2.2 Erzeugen eines RMI-s (4) 2.2 Erzeugen eines RMI-s (5) RMI-Compiler Kommando rmic z.b. für avo.myprinter wird Stubklasse avo.myprinter_stub erzeugt Stubklasse implementiert alle Remote-Interfaces der ursprünglichen klasse Compiler erkennt Remote-Interfaces an Marker-Interface java.rmi.remote Stubobjekt verhält sich wie RMI- Generische Stubobjekte Beispiel für das Erzeugen des s im Java-Code avo.printer p = new avo.myprinter();// Erzeugung des s wurde durch Basisklasse automatisch exportiert sofort von außen (entfernt) ansprechbar lokaler wie bisher entfernter (?) Referenz auf RMI- notwendig ab Java 1.5 (Java 5) und bei erben der UnicastRemoteObject-Klasse automatische Installierung kein rmic- nötig B.21 B.22 2.3 Finden initialer Referenzen 2.3 Finden initialer Referenzen (2) Namensdienst zum Registrieren von en Naming-Interface Klasse java.rmi.registry.locateregistry abkürzender Zugriff auf bestehende Registry erlaubt das Erzeugen einer Namensdienst-Instanz erlaubt das Erzeugen einer referenz zu einer (entfernten) Namensdienst-Instanz statische Methoden der Klasse java.rmi.naming bind( String s, Remote obj ) registriert obj unter Name s Hostname und Portnummer für TCP/IP-Verbindungen zum Namensdienst müssen bekannt sein lookup( String s ) gibt referenz für mit Namen s zurück referenz ist vom Remote-Interface java.rmi.registry.registry bind( String s, Remote obj ) registriert obj unter Name s lookup( String s ) gibt referenz für mit Namen s zurück String s ist von der Form: rmi://host:port/objectname host = Rechner, auf dem Registry läuft port = Portnummer, unter der Registry registriert ist objectname = name beim Registrieren bzw. Nachfragen B.23 B.24

2.3 Finden initialer Referenzen (3) 2.3 Finden initialer Referenzen (4) Beispiel Beispiel auf Serverseite auf Clientseite package avo; package avo; public class MyPrinter extends java.rmi.serverunicastremoteobject implements Printer static void main( String [] args ) Printer p = new MyPrinter(); java.rmi.naming.bind( "rmi:myprinter", p ); public void print( String s ) throws java.rmi.remoteexeception B.25 public class MyClient static void main( String [] args ) Printer p; p= (Printer) java.rmi.naming.lookup( "rmi:myprinter" ); try p.print( Testdruck ); catch( java.rmi.remoteexception e) B.26 2.4 Parameterübergabe 2.4 Parameterübergabe (2) Parameterübergabesemantik bei lokalen en Parameterübergabesemantik bei entfernten en Call-By-Value für Nicht-typen (z.b. Integer) Call-By-Object-Reference für Standard-Java-e und lokale RMI-e entfernte RMI-e Referenz auf Stubobjekt wird übergeben Client verwendet Stubobjekt wie lokales Call-By-Object-Reference Semantik für RMI-e übergebene Referenz Marshalling der Parameter Parameter werden serialisiert (Java Serialization) Erzeugung eines Bytestroms aus den Parametern Übertragung des Bytestroms Regenerierung der Datentypen und Java-e aus Bytestrom Call-By-Value für Nicht-typen (z.b. Integer) Datentypen werden kopiert Beispiel: 42 42 übergebener Wert B.27 Knotengrenze B.28

2.4 Parameterübergabe (3) 2.4 Parameterübergabe (3) serialisierbare Java-e und lokale, nicht-exportierte RMI-e Serialisierung führt zu vollständiger Kopie eines s und seiner untergeordneten e evtl. große transitive Hülle zu übertragender Daten aber: Erhaltung der struktur über alle Parameter Call-By-Copy Semantik übergebene struktur Parameterübergabesemantik bei entfernten en (fortges.) nicht-serialisierbare Java-e nicht übertragbar: MarshalException lokale, exportierte RMI-e Einfügung eines geeigneten Stubobjekts in den Bytestrom Regenerierung des Stubobjekts auf der Empfängerseite Call-By-Object-Reference Semantik für lokale RMI-e entfernte, exportierte RMI-e Einfügung des vorhandenen Stubobjekts in den Bytestrom Call-By-Object-Reference Semantik für entfernte RMI-e Knotengrenze B.29 übergebene Referenz B.30 2.5 Beispiel 2.5 Beispiel (2) Aufbau der Referenz über Namensdienst Aufbau der Stubs und Skeletons MyClient MyPrinter MyClient MyPrinter JVM Client 1:Ref 3:Ref 2:bind() 4:lookup() JVM Server JVM Client JVM Server JVM Registry Registry JVM Registry Registry B.31 B.32