answersLogoWhite

0

Serialization in java

Updated: 8/10/2023
User Avatar

Wiki User

12y ago

Best Answer

Imagine you want to save the state of one or more objects. If Java didn't have serialization, you'd have to use one of the I/O classes to write out the state of the instance variables of all the objects you want to save. The worst part would be trying to reconstruct new objects that were virtually identical to the objects you were trying to save. You'd need your own protocol for the way in which you wrote and restored the state of each object, or you could end up setting variables with the wrong values. For example, imagine you stored an object that has instance variables for height and weight. At the time you save the state of the object, you could write out the height and weight as two ints in a file, but the order in which you write them is crucial. It would be all too easy to re-create the object but mix up the height and weight values-using the saved height as the value for the new object's weight and vice versa.

The purpose of Serialization is to help us achieve whatever complicated scenario we just witnessed in an easier manner.

Working with ObjectOutputStream and ObjectInputStream

The magic of basic serialization happens with just two methods: one to serialize objects and write them to a stream, and a second to read from the stream and deserialize the object.

ObjectOutputStream.writeObject() - serialize and write

ObjectInputStream.readObject() - read and deserialize

The java.io.ObjectOutputStream and java.io.ObjectInputStream classes are considered to be higher-level classes in the java.io package, and as we learned in the previous chapter that means that you'll wrap them around lower-level classes, such as java.io.FileOutputStream and java.io.FileInputStream. Here's a small program that creates an object, serializes it, and then deserializes it:

import java.io.*;

class Car implements Serializable { } // 1

public class SerializeCar {

public static void main(String[] args) {

Car c = new Car(); // 2

try {

FileOutputStream fs = new FileOutputStream("testSer.ser");

ObjectOutputStream OS = new ObjectOutputStream(fs);

OS.writeObject(c); // 3

OS.close();

} Catch (Exception e) { e.printStackTrace(); }

try {

FileInputStream fis = new FileInputStream("testSer.ser");

ObjectInputStream ois = new ObjectInputStream(fis);

c = (Car) ois.readObject(); // 4

ois.close();

} Catch (Exception e) { e.printStackTrace(); }

}

}

Let's take a look at the key points in this example:

1. We declare that the Car class implements the Serializable interface. Serializable is a marker interface; it has no methods to implement.

2. We make a new Car object, which as we know is serializable.

3. We serialize the Car object c by invoking the writeObject() method. First, we had to put all of our I/O-related code in a try/Catch block. Next we had to create a FileOutputStream to write the object to. Then we wrapped the FileOutputStream in an ObjectOutputStream, which is the class that has the magic serialization method that we need. Remember that the invocation of writeObject() performs two tasks: it serializes the object, and then it writes the serialized object to a file.

4. We de-serialize the Car object by invoking the readObject() method. The readObject() method returns an Object, so we have to cast the deserialized object back to a Car. Again, we had to go through the typical I/O hoops to set this up.

This is a simple example of serialization in action.

User Avatar

Wiki User

12y ago
This answer is:
User Avatar
More answers
User Avatar

Wiki User

13y ago

If an object is serializable, that means that the object (and all of its properties) can be converted to a text readable format. This is useful anytime you want to transfer the object from one process to another, for example to be able to send and receive objects over a web service.

This answer is:
User Avatar

User Avatar

Wiki User

13y ago

Serialization is a technique in java using which the contents of a java object (A class instance) can be written into a flat file. This value can be unserialized or deserialized at a later point of time to create the object.

Any class that implements the Serializable interface can be serialized.

This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: Serialization in java
Write your answer...
Submit
Still have questions?
magnify glass
imp
Continue Learning about Engineering

What is meaning Serialize in java?

Primary purpose of java serialization is to write an object into a stream, so that it can be transported through a network and that object can be rebuilt again. When there are two different parties involved, you need a protocol to rebuild the exact same object again. Java serialization API just provides you that. Other ways you can leverage the feature of serialization is, you can use it to perform a deep copy. Why I used 'primary purpose' in the above definition is, sometimes people use java serialization as a replacement for database. Just a placeholder where you can persist an object across sessions. This is not the primary purpose of java serialization. Sometimes, people say that java serialization is used for storing (to preserve the state) an object and retrieving it. They use it synonymously with database. This is a wrong perception for serialization.


What is serialization in Java?

Serialization is the ability to easily store the state of an Object in memory onto some long-term medium (on a hard drive, for example). Basically, the Serializable interface allows us to tell Java to turn our Object into a byte-stream. The Object could be a document that the user is working on, or a more complex data class which needs the ability to be saved to the hard drive. Using the Serializable interface (and related I/O methods), Java will do most of the work for us.


What is meaning of word persistence in java?

Persistence is the term used to refer to the situation where the objects data is stored even after the object is destroyed or the application is closed. Persistence is implemented using Serialization where the data of the object is serialized into flat files and stored into the system. These files can be de-serialized to form the objects by using de-serialization.


In Java what does the keyword transient do?

It flags a field as a field that should not be considered part of an object's persistent state. It marks a member variable not to be serialized when it is persisted to streams of bytes. (Using Serialization) When an object is transferred through the network, the object needs to be 'serialized'. Serialization converts the object state to bytes. Those bytes are sent over the network and the object is recreated from those bytes in the target machine. Member variables marked by the java transient keyword are not transferred, they are lost on purpose. Ex: When transmitting user authentication information, password fields are made transient in the models so that, they are not transmitted through the network.


What is serializable class in JAVA?

The serializable interface is used to perform the serialization action. Serialization is the process by which the contents of an object are written to any form of storage - say a flat file. This data stored in the flat file can be de-serialized at any time to create the object. Ex: public class Test implements Serializable { … //lots of code }

Related questions

What is deserialization in java?

De-serialization is the opposite process of serialization. This is the process where we convert data that has already been written out onto a stream as part of serialization into Java objects.


What is meaning Serialize in java?

Primary purpose of java serialization is to write an object into a stream, so that it can be transported through a network and that object can be rebuilt again. When there are two different parties involved, you need a protocol to rebuild the exact same object again. Java serialization API just provides you that. Other ways you can leverage the feature of serialization is, you can use it to perform a deep copy. Why I used 'primary purpose' in the above definition is, sometimes people use java serialization as a replacement for database. Just a placeholder where you can persist an object across sessions. This is not the primary purpose of java serialization. Sometimes, people say that java serialization is used for storing (to preserve the state) an object and retrieving it. They use it synonymously with database. This is a wrong perception for serialization.


How is Java persistence done?

Java persistence is implemented using serialization. Serialization is a technique in java using which the contents of a java object (A class instance) can be written into a flat file. This value can be unserialized or deserialized at a later point of time to create the object. Any class that implements the Serializable interface can be serialized.


What is use of serialization in java?

Serialization will turn a Java Object into a text string (representing it's contents) which can be persisted to a storage device or sent over a network. There is an opposite process of turning the text string representation back into an instanciated Object.


What are the Topics under Advanced Java?

Some topics under Advanced Java are: a. Exception Handling b. Threading/Multi-Threading c. Remote Method Invocation d. Serialization e. etc


What is serialization in Java?

Serialization is the ability to easily store the state of an Object in memory onto some long-term medium (on a hard drive, for example). Basically, the Serializable interface allows us to tell Java to turn our Object into a byte-stream. The Object could be a document that the user is working on, or a more complex data class which needs the ability to be saved to the hard drive. Using the Serializable interface (and related I/O methods), Java will do most of the work for us.


What is meaning of word persistence in java?

Persistence is the term used to refer to the situation where the objects data is stored even after the object is destroyed or the application is closed. Persistence is implemented using Serialization where the data of the object is serialized into flat files and stored into the system. These files can be de-serialized to form the objects by using de-serialization.


In Java what does the keyword transient do?

It flags a field as a field that should not be considered part of an object's persistent state. It marks a member variable not to be serialized when it is persisted to streams of bytes. (Using Serialization) When an object is transferred through the network, the object needs to be 'serialized'. Serialization converts the object state to bytes. Those bytes are sent over the network and the object is recreated from those bytes in the target machine. Member variables marked by the java transient keyword are not transferred, they are lost on purpose. Ex: When transmitting user authentication information, password fields are made transient in the models so that, they are not transmitted through the network.


Difference between advanced java n j2ee?

J2EE stands for Java 2 Enterprise Edition. It is used to create enterprise class web applications that can be used by large enterprises and corporations. Most websites of major companies are created using j2ee. Some of the technologies used in J2ee are: a. Struts b. Hibernate c. JSP d. Servlets e. Spring f. etc Whereas Advanced Java refers to the advanced topics of java that can be used in regular java programs. Some topics under Advanced Java are: a. Exception Handling b. Threading/Multi-Threading c. Remote Method Invocation d. Serialization e. etc


What is the difference between advanced java J2EE?

J2EE stands for Java 2 Enterprise Edition. It is used to create enterprise class web applications that can be used by large enterprises and corporations. Most websites of major companies are created using j2ee. Some of the technologies used in J2ee are: a. Struts b. Hibernate c. JSP d. Servlets e. Spring f. etc Whereas Advanced Java refers to the advanced topics of java that can be used in regular java programs. Some topics under Advanced Java are: a. Exception Handling b. Threading/Multi-Threading c. Remote Method Invocation d. Serialization e. etc


Is surbrec Nora the second out in Engligh?

No it's currently in serialization


What is serializable class in JAVA?

The serializable interface is used to perform the serialization action. Serialization is the process by which the contents of an object are written to any form of storage - say a flat file. This data stored in the flat file can be de-serialized at any time to create the object. Ex: public class Test implements Serializable { … //lots of code }