Serialisierung Proseminar Programmiersysteme Betreuer: Guido Tack Benedict Fehringer.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
Rekursive Grafiken Reklursive Grafiken.
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Zusammenfassung des Kapitels 8
Imperative Programmierung -Entwicklungswerkzeuge
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Design by Contract with JML - Teil 2
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Daten Anzeigen und Ausdrucken Zu Zeigende Daten (z.B. Studentenplan) Daten in XML müssen geparst und in PDF- Format umgewandelt werden. Dazu iTEXT Bibliothek.
Binäre Bäume Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Sprache
IF-ELSE-IF-Ketten Weiter mit PP..
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
Philipp Ciechanowicz 5. Übung zu Software Engineering WS 2007/2008.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
DVG Einführung in Java1 Einführung in JAVA.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Bestimmung des ggT zweier Zahlen
Verzweigung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
XML-Schnittstellen: SAX, DOM, XML Pull Parsing Timo Terletzki Transformation von XML-Dokumenten.
Rekursive Funktionen (Fakultät)
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java und Eclipse.
Mahmoud Zoabi Khaled Isa
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Exception Handling in Java
F-Sharp (F#) Eine multiparadigmatische Sprache. Merkmale von F# Multiparadigmatisch.NET-Sprache Skalierbar und effizient Als Forschungsprojekt von Microsoft.
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
7.1.5 Java RMI – Remote Method Invocation
2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.
ac.at1 EPROG Tutorium #1 Philipp Effenberger Einführung in Java Schlüsselworte Datentypen.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Beispielanwendung von Java Threads
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014 Referenzdatentypen
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
Mit Java die Turtle steuern
 Präsentation transkript:

Serialisierung Proseminar Programmiersysteme Betreuer: Guido Tack Benedict Fehringer

Übersicht Einführung Datengraphen und abstrakter Speicher Pickles (Unpickling, Pickling) Bsp. in Java und Alice

Einführung

Was meint Serialisierung? Serialisierung bedeutet, dass ein Datengraph in eine eindimensionale (lineare)-Form gebracht wird, so dass diese eindeutig in den Ursprungs- Datengraph umgewandelt werden kann.

Wozu benötigt man Serialisierung? Speichern Transferieren Compilieren

Umsetzung der Serialisierung in verschiedenen Sprachen CLU (eine Sprache, die von Pascal abstammt); (B. Liskov and St. Zilles, 1974) JAVA (Roger Riggs, Jim Waldo, Ann Wollrath Sun Microsystems, Inc., 1996), Microsoft`s.NET Framework Ruby oder Python SML/NJ (A. W. Appel and D. B. MacQueen, 1994), OCaml, Alice Mozart/Oz

Datengraphen und abstrakter Speicher

Bsp. für einen Datengraph class A { public string s; public int i; public B b; } class B { public int j; public A a; } A x = new A (); B y = new B (); x.s = aaa; x.i = 24; x.b = y; y.j = 45; y.a = x;

Bsp. für einen Datengraph Inhalt LabelAdresse object x int string object y int object x object y int 24 int 45 string aaa 1 | 2 | 3 24 aaa 0 | 4 45

Datengraph (formal) Ein Datengraph ist eine endliche Funktion g, so dass gilt: Ran(g) Lab x (Str Dom(g)*)

Abstrakter Speicher Spezielle Datenstrukturen benötigen eine spezielle Repräsentation (Zahlen, Strings, Arrays,...) (kann zur Optimierung implementiert werden)

Pickles

Definitionen Pickle: - linear - external - Platform-unabhängige Pickling - Umwandlung eines Datengraphen in einen Pickle Unpickling - Umkehrvorgang zum Pickling

Konstruktion/Unpickling von Datengraphen Baum azyklischer Graph zyklischer Graph

Baum a bc dc Instruktion# Nachfolger d c b a2 c

Baum a bc dc Instruktion# Nachfolger d c b a2 c

Azyklischer Graph Instruktion a b dc # Nachfolger c b a d STORE 0 LOAD 0

Azyklischer Graph Instruktion a b dc # Nachfolger c b a d STORE 0 LOAD 0

Zyklischer Graph Instruktion a b dc # Nachfolger PROMISE 0 a STORE 1 c1 - LOAD 1 2 FULFIL b d 2

Zyklischer Graph Instruktion a b dc # Nachfolger PROMISE 0 a STORE 1 c1 - LOAD 1 2 FULFIL b d 2

Pickling Schritt 1: Datengraph Pickle-Baum Schritt 2: Pickle-Baum Postorder- Linearisierung Schritt 3: Postorder-Linearisierung Pickle

Schritt 1 a b dc 0: a b -> 1 d 1: c -> 0 Datengraph Pickle-Baum

Schritt 2 0: a b -> 1 d 1: c -> 0 Knoten # Nachfolger 1:c -> 0 d -> 1 b 0:a Pickle-BaumPostorder-Linearisierung

Schritt 3 Knoten # Nachfolger -> 0 1:c -> 1 d b 0:a Knoten # Nachfolger PROMISE 0 a c STORE 1 LOAD 1 d b FULFIL Postorder-LinearisierungBottom-up-Pickle

Top-Down-Pickles Präorder statt Postorder Top-Down Pickle Kein Promise/Fulfill nötig

Verschiedene Darstellungen eines Pickle-Bäume 0: a b -> 1 d 1: c -> 0 0: a b -> 1 d 1: c -> 0 =

Implementier-Details Depth First Search (Graph Pickle-Baum Pickle) Bestimmung der maximalen Stack-Höhe

Realisierung in JAVA und Alice

JAVA-Objekt-Modell Klassen Objekte Felder Methoden...

Pickling in Java Objekte können serialisiert werden Top-Down-Mechanismus Pruning

Bsp. für Pickling in Java import java.io.Serializable; public class A implements Serializable { public int i; public string s; }

Bsp. für Pickling in Java 10 public class FlattenA 20 { 30 public static void main(String [] args) 40 { 50 A a = new A(); 60 FileOutputStream fos = new FileOutputStream(aa.ser"); 70 ObjectOutputStream out = new ObjectOutputStream(fos); 80 out.writeObject(a); 90 out.close(); 100 } 110 }

Bsp. für Pickling in Java 10 public class InflateA 20 { 30 public static void main(String [] args) 40 { 50 A a = null; 60 FileInputStream fis = null; 70 ObjectInputStream in = null; 80 try 90 { 100 fis = new FileInputStream(aa.ser"); 110 in = new ObjectInputStream(fis); 120 a = (A)in.readObject(); 130 in.close(); 140 } 150 catch(IOException ex) { ERROR!!!} 160 catch(ClassNotFoundException ex) { ERROR!!! } 170 } 180 }

Pruning der Programmierer kann selbst entscheiden, welcher Teil gepickelt werden soll und welcher nicht. Die nicht zu Pickelndeln Teile müssen markiert werden

Bsp. für Pickling in Java import java.io.Serializable; public class A implements Serializable { transient public int i; public string s; }

Pickling in Alice Pickling beliebiger Daten Typsicherheit Anwendung: z.B. Komponentensystem / Compiler

Bsp. für Pickling in Alice signature NUM = sig type t fun fromInt : int -> t fun toInt : t -> int fun add : t * t -> t end structure Num :> NUM = struct type t = int fun toInt n = n fun fromInt n = n val add = op+ end

Bsp. für Pickling in Alice Pickling: Pickle.save: string * package -> unit Pickle.save ("Num." ^ Pickle.extension, pack Num :> NUM) Unpickling: Pickle.load: string -> package structure Num' = unpack Pickle.load ("Num." ^ Pickle.extension) : NUM

Bsp. für Pickling in Alice Achtung! Num'.add (Num.fromInt 4, Num.fromInt 5) : argument type mismatch: t * t does not match argument type Num'.t * Num'.t because type Num.t does not unify with Num'.t

Literaturverzeichnis Guido Tack, Linearisation, Minimisation and Transformation of Data Graphs with Transients. Diplomarbeit, Saarbrücken, Mai 2003 Roger Riggs, Jim Waldo, Ann Wollrath Sun Microsystems, Inc., Pickling State in the Java System, Toronto, Ontario, Canada, June 1996 Java Object Serialization Specification. Available from The Alice Project. Available from sb.de/alice, Homepage at the Programming Systems Lab, Universität des Saarlandes, Saarbrücken.