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

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

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

Überblick. Fernmethodenaufrufe

Ü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

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus

Remote Method Invocation

Serialisierung & Deserialisierung Serialisierung & Deserialisierung in Java Marshalling & Unmarshalling

Verteilte Systeme Übung

Serialisierung & Deserialisierung Serialisierung & Deserialisierung in Java Marshalling & Unmarshalling

Java-Programmierung. Remote Method Invocation - RMI

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

7.1.5 Java RMI Remote Method Invocation ( (

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

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

J Fernmethodenaufrufe Remote Method Invocation (RMI)

Überblick. Java Reflection API. Class-Objekte

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

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

Einführung: Verteilte Systeme - Remote Method Invocation -

Remote Method Invocation

D.1 Organisatorisches

B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache

Objektserialisierung

E.2 Fragen zu Aufgabe 2

Java Remote Method Invocation (RMI)

Rechnernetze I SS 2017 Rechnernetze I (1/13) Rechnernetze I SS 2017 Datendarstellung Rechnernetze I (10/13)

Überblick. Verteilte Systeme - Übung. VS-Übung. Callback Stubs revisited Callback JUnit. Tobias Distler, Michael Gernoth, Reinhard Tartler

Konzepte von Betriebssystem-Komponenten Middleware RMI

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

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

Praktikum Verteilte Anwendungen

Überblick. Verteilte Systeme Übung. VS-Übung. Callback Stubs revisited Callback JUnit. Tobias Distler, Michael Gernoth. Sommersemester 2010

Rechnernetze I. SoSe Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 13.

Remote Method Invocation

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

E.1 Object Request Brokers

C Java RMI. 1 Java. Objektorientierte Sprache

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

Java Input/Output System (IO)

AvO-Übung 2 Remote Method Invocation

Java RMI Remote Method Invocation

Überblick. Fernaufrufe Motivation Stubs und Skeletons Marshalling und Unmarshalling Automatisierung XML-RPC. c td VS (SS17) Fernaufrufe 3 1

Mobile und Verteilte Datenbanken

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

36.2 Example ClassLoader Example Appletviewer

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Mobile und Verteilte Datenbanken

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

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

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

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

Repetitorium Informatik (Java)

14. RMI - Remote Method Invocation

Fehlerquellen. Überblick. Einordnung. Fehlerquellen

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Überblick. RPC-Semantiken Fehler bei Fernaufrufen Fehlertolerante Fernaufrufe Übungsaufgabe 3. VS-Übung (SS12) RPC-Semantiken 5 1

12 Abstrakte Klassen, finale Klassen und Interfaces

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

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

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

verwendete Entwurfsmuster (Designpattern) SecurityManager RMI MW - Übung E.1

Kapitel 8: Serialisierbarkeit

Methoden und Wrapperklassen

Client/Server-Programmierung

Client/Server-Programmierung

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

7 Remote Method Invocation (RMI)

12.2 Persistente Objekte

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

Tag 8 Repetitorium Informatik (Java)

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

Programmieren 2 Java Überblick

Grundlagen verteilter Systeme

Java-Grundkurs für Wirtschaftsinformatiker

Informatik II Übung 5

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Vorkurs Informatik WiSe 15/16

8.1.5 Java RMI Remote Method Invocation

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

J2EE-Praktikum. Enterprise JavaBeans Patterns. Peter Thiemann. J2EE-Praktikum, WS2005/2006. Universität Freiburg

Modellierung und Programmierung 1

Java I Vorlesung 6 Referenz-Datentypen

Für objektbasiertes Programmieren ist keine objektbasierte Programmiersprache erforderlich!

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

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

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Grundelemente objektorientierter Sprachen (1)

Die abstrakte Klasse Expression:

Datenströme in Java. Zeichenkonvertierung

Grundelemente objektorientierter Sprachen (1)

Transkript:

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

Fernmethodenaufrufe Remote Method Invocation (RMI) Aufrufe von Methoden an Objekten auf anderen Rechnern Remote-Referenz: Transparente Objektreferenz zu entferntem Objekt Beispiel: Java RMI Client Stub Server Skeleton RMI-Referenzenschicht RMI-Transportschicht VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 2

Java RMI Transportschicht Datenübertragung zwischen Rechnern Implementierung Aktueller Standard: Verwendung von TCP/IP-Sockets Generell: verschiedene Transportmechanismen denkbar Client Stub Server Skeleton RMI-Referenzenschicht RMI-Transportschicht VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 3

Java RMI Referenzenschicht Verwaltung von Remote-Referenzen Implementierung der Aufrufsemantik (Beispiele) Unicast, Punkt-zu-Punkt Aufruf an einem replizierten Objekt Strategien zum Wiederaufbau der Verbindung nach einer Unterbrechung Client Stub Server Skeleton RMI-Referenzenschicht RMI-Transportschicht VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 4

Java RMI Stub & Skeleton Stub 1. erhält einen Objekt-Ausgabe-Strom von der RMI-Referenzenschicht 2. schreibt die Parameter in diesen Strom 3. teilt der RMI-Referenzenschicht mit, die Methode aufzurufen 4. holt einen Objekt-Eingabe-Strom von der RMI-Referenzenschicht 5. liest das Rückgabe-Objekt aus diesem Strom 6. liefert das Rückgabe-Objekt an den Aufrufer Skeleton 1. erhält einen Objekt-Eingabe-Strom von der RMI-Referenzenschicht 2. liest die Parameter aus diesem Strom 3. ruft die Methode am implementierten Objekt auf 4. holt einen Objekt-Ausgabe-Strom von der RMI-Referenzenschicht 5. schreibt das Rückgabe-Objekt in diesen Strom Client Server Stub Skeleton RMI-Referenzenschicht VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 5

Java RMI Server Remote-Objekt (entferntes Objekt) Kann aus einer anderen Java Virtual Machine heraus genutzt werden Erst von außerhalb erreichbar, nachdem es exportiert wurde Remote-Schnittstelle Beschreibt die per Fernaufruf erreichbaren Methoden des Objekts Abgeleitet von java.rmi.remote (Marker-Schnittstelle) Einzige Möglichkeit mit Java RMI auf ein entferntes Objekt zuzugreifen Remote-Exception (java.rmi.remoteexception) Muss im throws-clause jeder Remote-Methode angegeben sein Beim Auftreten einer Remote-Exception weiß der Aufrufer nicht, ob die Methode komplett, teilweise oder gar nicht ausgeführt wurde Client Stub Server Skeleton VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 6

Java RMI Registry Namensdienst Bekanntmachen von Remote-Objekten Abbildung von Objektnamen auf Objektreferenzen Registry-Schnittstelle public interface Registry extends Remote { public void bind ( String name, Remote obj ); public Remote lookup ( String name ); [...] bind() Zuordnung eines Objekts zu einem eindeutigen Namen lookup() Rückgabe der Remote-Referenz zu einem Namen Erzeugung und Verbindung zur Registry public class LocateRegistry { public static Registry createregistry ( int port ); public static Registry getregistry ( String host, int port ); [...] createregistry() Erzeugung einer Registry auf dem lokalen Rechner getregistry() Holen einer Remote-Referenz auf eine Registry VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 7

Java RMI Beispiel Bank-Anwendung Geldbetrag VSMoney public class VSMoney implements Serializable { private float amount ; public VSMoney ( float amount ) { this. amount = amount ; public float getamount () { return amount ; Konto VSAccount (Remote-Schnittstelle) public interface VSAccount extends Remote { public void deposit ( VSMoney money ) throws RemoteException ; Bank VSBank (Remote-Schnittstelle) public interface VSBank extends Remote { public void deposit ( VSMoney money, VSAccount account ) throws RemoteException ; VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 8

Java RMI Beispiel Remote-Objekt VSBankImpl: Implementierung der Remote-Schnittstelle VSBank Exportieren des Remote-Objekts Implizit: Unterklasse von java.rmi.server.unicastremoteobject public class VSBankImpl extends UnicastRemoteObject implements VSBank { // Konstruktor public VSBankImpl () throws RemoteException { super (); // Implementierung der Remote - Methode public void deposit ( VSMoney money, VSAccount account ) throws RemoteException { account. deposit ( money ); VSBank bank = new VSBankImpl (); Explizit: Aufruf von UnicastRemoteObject.export() public class VSBankImpl implements VSBank { [...] VSBank b = new VSBankImpl (); VSBank bank = ( VSBank ) UnicastRemoteObject. exportobject (b, 0); VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 9

Java RMI Beispiel Remote-Objekt Konto-Implementierung VSAccountImpl Implementierung der Remote-Schnittstelle VSAccount Exportieren analog zu VSBankImpl Synchronisation paralleler deposit()-aufrufe [Auf welchem Rechner erscheint die Bildschirmausgabe?] public class VSAccountImpl implements VSAccount { private float amount ; public VSAccountImpl ( float amount ) { this. amount = amount ; public synchronized void deposit ( VSMoney money ) { amount += money. getamount (); System. out. println (" New amount : " + amount ); VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 10

Java RMI Beispiel Server Server-Implementierung VSBankServer Erzeugen des Remote-Objekts Exportieren des Remote-Objekts Remote-Objekt mittels Registry bekannt machen public class VSBankServer { public static void main ( String [] args ) throws Exception { // Remote - Objekt erzeugen VSBank bankimpl = new VSBankImpl (); // Remote - Objekt exportieren VSBank bank = ( VSBank ) UnicastRemoteObject. exportobject ( bankimpl, 0); // Remote - Objekt bekannt machen Registry registry = LocateRegistry. createregistry (12345); registry. bind (" bank ", bank ); VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 11

Java RMI Beispiel Client Client-Implementierung VSBankClient public class VSBankClient { public static void main ( String [] args ) throws Exception { // Geldbetrag - Objekt anlegen VSMoney money = new VSMoney (10.0 f); // Account anlegen und exportieren VSAccount accountimpl = new VSAccountImpl (100.0 f); VSAccount account = ( VSAccount ) UnicastRemoteObject. exportobject ( accountimpl, 0); // Remote - Referenz holen ( Annahme : Server auf faui05a ) Registry registry = LocateRegistry. getregistry (" faui05a ", 12345); VSBank bank = ( VSBank ) registry. lookup (" bank "); // Geld einzahlen bank. deposit ( money, account ); System. exit (0); VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 12

Java RMI Beispiel Interaktion Ausgangssituation vor Registry-Zugriff des Client Client Java Virtual Machine Server Java Virtual Machine money account client bank VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 13

Java RMI Beispiel Interaktion Remote-Referenz auf bank von Registry holen Client Java Virtual Machine Server Java Virtual Machine money account client Remote-Referenz bank VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 14

Java RMI Beispiel Interaktion Methodenaufruf von bank.deposit() Client Java Virtual Machine Server Java Virtual Machine money account client bank.deposit() Kopie von money Stub für account bank VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 15

Java RMI Beispiel Interaktion Nach dem Auspacken der Parameter Client Java Virtual Machine money Server Java Virtual Machine Kopie von money account Remote-Referenz client bank.deposit() bank VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 16

Java RMI Beispiel Interaktion Methodenaufruf von account.deposit() Client Java Virtual Machine money Server Java Virtual Machine Kopie von money client account account.deposit() Kopie von Kopie von money bank.deposit() bank VS-Übung (SS12) Java RMI Java Remote Method Invocation 1 17

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

Marshalling und Unmarshalling Definition Marshalling: Verpacken von Informationen in einer Nachricht Unmarshalling: Auspacken von Informationen aus einer Nachricht Problemstellungen Unterschiedliche Datentypen Heterogenität bei der lokalen Repräsentation von Datentypen Unterschiedliche Client Parameterübergabearten Server Stub Skeleton Host A Kommunikationssystem Host B VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 19

Unterschiedliche Datentypen Primitive Datentypen z. B. char, boolean, int,... Benutzerdefinierte Datentypen z. B. structs Felder z. B. int[47] Referenzen z. B. char * Objekte z. B. Strings, Dateien,...... Kein allgemeines Vorgehen möglich VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 20

Heterogenität Byte Sex -Problem Big Endian (Network Byte Order) Most-significant byte first z. B. SPARC, Motorola Little Endian Least-significant byte first z. B. Intel x86 Repräsentation von Fließkommazahlen Allgemein Vorzeichen (s) Mantisse (m) Exponent (e) Zahlenwert: ( 1) s m 2 e Variationsmöglichkeiten Anzahl der Bits für m und e Speicherreihenfolge von m, e und s Byte-Order VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 21

Heterogenität Lösungsvarianten Kanonische Repräsentation Nutzung einer allgemeingültigen Form als Zwischenrepräsentation z. B. IEEE-Standard Eventuell unnötige Konvertierungen [z. B. wenn Sender und Empfänger identische Repräsentation nutzen] Sender makes it right Sender kennt Datenrepräsentation des Empfängers Sender konvertiert Daten Multicast an heterogene Gruppe nicht möglich Receiver makes it right Kennzeichnung des Datenformats Empfänger konvertiert Daten Bereitstellung sämtlicher Konvertierungsroutinen notwendig [Unproblematisch für Byte-Order-Konvertierung] VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 22

Unterschiedliche Parameterübergabearten Eingabeparameter Teil der Anfragenachricht z. B. value in void setvalue(int value); Ausgabeparameter Teil der Antwortnachricht z. B. String-Rückgabewert in String tostring(); Ein-/Ausgabeparameter Teil der Anfrage- und Antwortnachricht z. B. stack in Object pop(stack stack); Lösungsansatz Semantiken: Call-by-Value, Call-by-Result, Call-by-Value-Result Behandlung von Referenzen Zeiger dereferenzieren: Objektkopie erzeugen Remote-Referenzen VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 23

Serialisierung & Deserialisierung in Java Primitive Datentypen Hilfsklasse java.nio.bytebuffer public abstract class ByteBuffer [...] { public static ByteBuffer allocate ( int capacity ); public static ByteBuffer wrap ( byte [] array ); public byte [] array (); public ByteBuffer put < Datentyp >( < Datentyp > value ); public <Datentyp > get < Datentyp >(); [...] allocate() neues (leeres) Byte-Array anlegen wrap() bestehendes Byte-Array verwenden array() Byte-Array zurückgeben put*(), get*() Daten einfügen bzw. lesen Beispiel: {S,Deserialisierung eines double-werts double d = 0.47; ByteBuffer buffer1 = ByteBuffer. allocate ( Double. SIZE / 8); buffer1. putdouble ( d); byte [] bytearray = buffer1. array (); ByteBuffer buffer2 = ByteBuffer. wrap ( bytearray ); double d2 = buffer2. getdouble (); VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 24

Serialisierung & Deserialisierung in Java Objekte Objekt Stream: java.io.object{out,inputstream public class ObjectOutputStream [...] { public ObjectOutputStream ( OutputStream out ); public void writeobject ( Object obj ); // Objekt [...] // serialisieren public class ObjectInputStream [...] { public ObjectInputStream ( InputStream in ); public Object readobject (); // Objekt deserialisieren [...] Stream Byte-Array: java.io.bytearray{out,inputstream public class ByteArrayOutputStream extends OutputStream { public byte [] tobytearray (); // Rueckgabe des Byte - Array [...] public class ByteArrayInputStream extends InputStream { public ByteArrayInputStream ( byte buf []); [...] VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 25

Serialisierung & Deserialisierung in Java Schnittstellen Automatisierte {S,Deserialisierung: java.io.serializable Muss von jedem Objekt implementiert werden, das von einen Object{Out,InputStream serialisiert bzw. deserialisiert werden soll Marker-Schnittstelle keine zu implementierenden Methoden {S,Deserialisierung wird vom Object{Out,InputStream übernommen Manuelle {S,Deserialisierung: java.io.externalizable Klassenspezifische {S,Deserialisierung public interface Externalizable extends Serializable { void writeexternal ( ObjectOutput out ); void readexternal ( ObjectInput in ); writeexternal() readexternal() Objekt serialisieren Objekt deserialisieren {S,Deserialisierung wird vom Objekt selbst übernommen VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 26

Serialisierung & Deserialisierung in Java Geschützte Attribute Einige Attribute einer Klasse sollen nicht serialisiert werden Sicherheitsaspekte Effizienzüberlegungen Einige Objekte können nicht serialisiert & deserialisiert werden, da sich ihr Zustand nicht so ohne weiteres wiederherstellen lässt FileInputStream Socket, ServerSocket Thread Schlüsselwort transient Mit transient gekennzeichnete Attribute werden bei der automatischen {S,Deserialisierung vom Object{Out,InputStream ignoriert Beispiel public class TransientExample { private transient Thread t = new Thread (); VS-Übung (SS12) Java RMI Marshalling und Unmarshalling 1 27

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

Übungsaufgabe 1 Programmieren mit Java RMI Implementierung der Kommunikationsschicht Client Server Stub Skeleton Host A Kommunikationssystem Host B VS-Übung (SS12) Java RMI Aufgabe 1 1 29

Programmieren mit Java RMI Beispielanwendung: Schwarzes Brett public interface VSBoard { public void post ( VSBoardMessage message ); public VSBoardMessage [] get ( int n); public void listen ( VSBoardListener listener ); public interface VSBoardListener { public void newmessage ( VSBoardMessage message ); post() get() listen() Hinzufügen von neuen Botschaften Abfragen der neuesten Botschaften Automatische Benachrichtigung über neue Botschaften Verteilung mittels Java RMI Server Bereitstellung der Anwendung als Remote-Objekt Registrierung des Diensts bei einer Registry Client Zugriff auf den Dienst über Fernaufrufe Interaktion mit dem Nutzer per Kommandozeile VS-Übung (SS12) Java RMI Aufgabe 1 1 30

Implementierung der Kommunikationsschicht Übertragung von Datenpaketen public class VSConnection { public void sendchunk ( byte [] chunk ); public byte [] receivechunk (); Übermittlung von Daten über eine TCP-Verbindung Senden und Empfangen von Byte-Arrays beliebiger Länge Übertragung von Objekten public class VSObjectConnection { public void sendobject ( Serializable object ); public Serializable receiveobject (); Senden und Empfangen von beliebigen Objekten Marshalling und Unmarshalling von Nachrichten VS-Übung (SS12) Java RMI Aufgabe 1 1 31

Optimierte {S,Deserialisierung Ziel Minimierung der über das Netzwerk zu übertragenden Daten Ausgangspunkt Analyse der vom ObjectOutputStream erzeugten Daten Beispielklasse public class VSTestMessage implements Serializable { private int integer ; private String string ; private Object [] objects ; Reduzierung der benötigten Datenmenge Anwendung der Schnittstelle Externalizable Manuelle Implementierung der {S,Deserialisierungmethoden Hinweis: Ausgabe eines Byte-Array als Zeichenkette in Eclipse byte [] chunk = [...]; System. out. println ( new String ( chunk, " COMPOUND_TEXT ")); VS-Übung (SS12) Java RMI Aufgabe 1 1 32