java:object_serialization

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Object Serialization ====== Η Java παρέχει την δυνατότητα μετατροπής ενός αντικειμένου σε μία σειρά από bytes, προκειμένου αυτό στη συνέχεια να αποθηκευτεί σε ένα μέσω μόνιμης αποθήκευσης (π.χ. αρχείο στο filesystem) ή να μεταδοθεί μέσω δικτύου προκειμένου να δημιουργηθεί ένα αντίγραφο του σε απομακρυσμένο σημείο. Η διαδικασία μετατροπής των αντικειμένων σε bytes ονομάζεται **object serialization**. Αφού ένα αντικείμενο μετατραπεί σε σειρά από bytes μπορούμε να ακολουθήσουμε την αντίστροφη διαδικασία προκειμένου να δημιουργήσουμε ένα αντίγραφο του αντικειμένου. Η διαδικασία "σειριοποίησης" ενός αντικειμένου είναι ανεξάρτητη του JVM που χρησιμοποιούμε πράγμα που σημαίνει ότι ένα αντικείμενο που μεταδίδεται μέσω δικτύου μπορεί να αναπαραχθεί στη μνήμη σε μορφή αντικειμένου σε άλλο JVM/υπολογιστή. Οι κλάσεις **[[http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html|ObjectInputStream]]** και **[[http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html|ObjectOutputStream]]** αποτελούν κλάσεις τύπου **[[http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html|InputStream]]** και **[[http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html|OutputStream]]** υψηλού επιπέδου οι οποίες επιτελούν την διαδικασία της "σειριοποίησης" και "αποσειριοποίησης" των αντικειμένων. Από τις μεθόδους της κλάσης **[[http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html|ObjectOutputStream]]** μας ενδιαφέρει η μέθοδος [[http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html#writeObject(java.lang.Object)|writeObject]] η οποία μετατρέπει σε σειρά από bytes το αντικείμενο **obj** <code java> public final void writeObject(Object obj) throws IOException Parameters: obj - the object to be written Throws: InvalidClassException - Something is wrong with a class used by serialization. NotSerializableException - Some object to be serialized does not implement the java.io.Serializable interface. IOException - Any exception thrown by the underlying OutputStream. </code> Αντίστοιχα από τις μεθόδους της κλάσης **[[http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html|ObjectInputStream]]** μας ενδιαφέρει η μέθοδος [[http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#readObject()|readObject]] η οποία μετατρέπει σε αντικείμενο μία σειρά από bytes. <code java> public final Object readObject() throws IOException, ClassNotFoundException Returns: the object read from the stream Throws: ClassNotFoundException - Class of a serialized object cannot be found. InvalidClassException - Something is wrong with a class used by serialization. StreamCorruptedException - Control information in the stream is inconsistent. OptionalDataException - Primitive data was found in the stream instead of objects. IOException - Any of the usual Input/Output related exceptions. </code> Απαραίτητη προϋπόθεση για το serialization/deserialization των αντικειμένων είναι * η κλάση του αντικειμένου να υλοποιεί το //interface// **[[http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html|Serializable]]**.

java/object_serialization.1487337959.txt.gz · Last modified: 2017/02/17 13:25 by gthanos