Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2
1. Einleitung 1.1 Teilnehmer 1.2 Projektbeschreibung 1.3 Vorraussetzungen 3
1.1 Teilnehmer Deniz Orkunoglu Schwerpunkt: Vergleich mit CORBA und RPC gezogen, Theorie Patric Eid Schwerpunkt: Programmierung von Beispielen, Theorie 4
1. Einleitung 1.1 Teilnehmer 1.2 Projektbeschreibung 1.3 Vorraussetzungen 5
1.2 Projektbeschreibung - Beschreibung von Java RMI mit praxisorientierten Beispielen - Bezüge zu RPC herstellen - Ergebnisse durch einen Vortrag und einer Dokumentation darstellen 6
1. Einleitung 1.1 Teilnehmer 1.2 Projektbeschreibung 1.3 Vorraussetzungen 7
1.3 Vorraussetzungen Client: Java Virtual Machine Server: Java 2 Runtime Environment (1.5.0_06) 8
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 9
2. Einführung in RPC 2.1 Was ist RPC 10
2.1 Was ist RPC Einleitung RPC steht für remote procedure call realisiert Client-Server-Modell die Kommunikation zwischen Client und Server wird duch das RPC Protokoll vereinfacht (über das Netzwerk können Funktionen aufgerufen werden) 11
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 12
3. RMI 3.1 Was ist RMI 3.2 Ablauf 3.3 RMI - Registry 3.4 Begriffe 3.5 Vergleich zu CORBA 13
3.1 Was ist RMI (1) Einleitung RMI steht für remote method invocation (entfernter Methodenaufruf) basiert auf dem Prinzip von RPC realisiert Client-Server-Modell Java Objekte werden aufgerufen Stub Klassen werden zur Kommunikation genutzt 14
3.1 Was ist RMI (2) Unterschied zu RPC RPC und RMI scheinen identisch zu sein, beide arbeiten mit Sockets RPC ist nicht für objektorientiertes Arbeiten geeignet 15
3. RMI 3.1 Was ist RMI 3.2 Ablauf 3.3 RMI - Registry 3.4 Begriffe 3.5 Vergleich zu CORBA 16
17 3.2 Ablauf
3. RMI 3.1 Was ist RMI 3.2 Ablauf 3.3 RMI - Registry 3.4 Begriffe 3.5 Vergleich zu CORBA 18
3.3 RMI Registry (1) Übersicht RMI Registry ist ein einfacher Namensdienst läuft auf dem RMI Server der Server muss gebunden werden Client benötigt eine Referenz auf das Server-Objekt 19
3.3 RMI Registry (2) Aufrufen Unter Windows: start registry [port] Unter Unix: rmiregistry [port] & 20
3.3 RMI Registry (3) Ablauf 21
3. RMI 3.1 Was ist RMI 3.2 Ablauf 3.3 RMI - Registry 3.4 Begriffe 3.5 Vergleich zu CORBA 22
3.4 Begriffe (1) Stub 23
3.4 Begriffe (2) Sicherheit RMI benutzt integrierten Java Security Mechanismus Security Manager schützt vor schädlichem Code herunterladen von schädlichem Code wird meistens verweigert Verschlüsselung läuft über die Socketverbindung 24
3.4 Begriffe (3) Garbage Collection sammelt nicht mehr gebrauchte Objekte ein Objekte werden vernichtet 25
3. RMI 3.1 Was ist RMI 3.2 Ablauf 3.3 RMI - Registry 3.4 Begriffe 3.5 Vergleich zu CORBA 26
3.5 Vergleich zu CORBA (1) Sprache RMI: (-) nur Java CORBA: (+) sprachunabhängig (auch C++ und Java gemischt) Basis RMI: (+) benutzt JRMP (Java Remote Messaging Protocol) CORBA: (+) IIOP (Internet InterORB Protocol) 27
3.5 Vergleich zu CORBA (2) Programmieraufwand RMI: (+) erledigt RMIC-Compiler CORBA: (+) eigene Interface definition Language (IDL) Installationsaufwand RMI: (+) RMI ist Teil von Java, keine eigene Installation notwendig CORBA: (-) passender Maschinencode muss auf alle beteiligten Rechnern verteilt werden 28
3.5 Vergleich zu CORBA (3) Fehlersuche RMI: (+) evtl. mit Java Exceptios CORBA: (-) schwierig (binäre Codierung, verschiedene Sprachen..) Lernaufwand RMI: (+) mäßig CORBA: (-) groß (eigene Sprache IDL) 29
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 30
4. Code Beispiele 4.1 Server erstellen 4.2 Client erstellen 4.3 Server und Client starten 31
4.1 Server erstellen (1) Aufruf der Methoden erfolgt über ein Remote-Interface Remote Exceptions können auftreten der Server muss einen eindeutigen Namen binden 32
4.1 Server erstellen (2) MyInterface.java import java.rmi.*; public interface MyInterface extends Remote { public String gettime() throws RemoteException; } 33
4.1 Server erstellen (3) MyServer.java (1) 34 import java.rmi.naming; import java.rmi.remoteexception; import java.rmi.server.unicastremoteobject; public class MyServer implements MyInterface{... public MyServer() {} public String gettime() throws RemoteException { String time = new java.util.date().tostring(); return time; }
4.1 Server erstellen (4) MyServer.java (2) 35... } //damit der Server alleine lauffaehig ist public static void main (String[] args) { MyServer server = new MyServer(); try { UnicastRemoteObject.exportObject(server); Naming.rebind( TimeServer, server); } catch (Exception e) { e.printstacktrace(); }
4.1 Server erstellen (5) Server kompilieren MyServer.java mittels 'javac' auf der Konsole kompilieren erzeugt eine.class Datei durch 'rmic' eine Stub-Klasse erzeugen diese dem Client zugänglich machen 36
4. Code Beispiele 4.1 Server erstellen 4.2 Client erstellen 4.3 Server und Client starten 37
4.2 Client erstellen (1) der Client muss wissen, wo sich der Server befindet er kommuniziert mit dem Remote Interface 38
4.2 Client erstellen (2) MyClient.java 39 import java.rmi.naming; public class MyClient { } public static void main (String[] args) { try { MyInterface rem = (MyInterface) Naming.lookup( //127.0.0.1/TimeServer ); System.out.println(rem.getTime()); } catch (Exception e) { } } p.printstacktrace();
4.2 Client erstellen (3) Client kompilieren kompilieren erneut mit 'javac' generiert eine.class Datei Anmerkung: Die IP des Servers hätte auch ein entfernter Rechner sein können, z.b. //lx3-08//timeserver. 40
4. Code Beispiele 4.1 Server erstellen 4.2 Client erstellen 4.3 Server und Client starten 41
4.2 Server und Client starten (1) zuerst muss RMI registriert werden dies passiert auf der Konsole mittels rmiregistry danach wird der Server durch java MyServer gestartet 42
4.2 Server und Client starten (2) Client mit java MyClient starten 43
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 44
45 5. Live Vorstellung
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 46
6. Ausblick Annäherung zwischen Java RMI und CORBA RMI benutzt kann auch das IIOP Protokoll von CORBA benutzen 47
Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 48
7. Fazit Positiv interessantes Thema Basiert auf dem Prinzip von RPC leichter Umstieg ermöglicht das Einsetzen einer objektorientierten Sprache da alles standardmäßig in Java vorhanden ist, lässt sich RMI einfach anwenden Negativ?? 49
Systemprogrammierung Wir bedanken uns für Ihre Aufmerksamkeit! Fragen??? 50