Home » What Is Serialization In Java?

What Is Serialization In Java?

What is Serialization in Java

Serialization in Java converts an object’s state into a byte stream; deserialization is the reverse process. Another way, serialization is converting a Java object into a static stream (sequence) of bytes that we can then preserve in a database or send over the internet. Deserialization is recreating the actual Java object in memory using the byte stream. This means is utilized to keep an object alive.

Before we go into serialization details, let’s look at a real-world example.

Assume you’re on the phone with a buddy via a cellular network. Your voice can be heard by a friend who is thousands of miles distant. You may also be aware that your voice is translated into electrical signals and subsequently transmitted via radio signals to a mobile tower. The tower later channels the electrical signal to the precise phone number you are connected with.

Your voice is converted many times before it reaches your companion on the other side. Similarly, when moving from one Java Virtual Machine to another, Java objects require serialization and deserialization.

Serialization Interface

The JVM grants the class that implements the Serializable Interface extra capabilities.

A class called “ObjectOutputStream” has a method called “writeObject.” This method is in charge of turning an item into a Byte stream. The class “ObjectInputStream” has a method called readObject (). This method turns a byte stream into a string.

Syntex

Syntex-1

Java.io. Serializable Interface

Serializable is an interface that allows data to be serialized (has no data member and method). It’s used to “mark” Java classes so that their objects can have specific capabilities.

  • The class whose object has to be persisted must implement the Serializable interface.
  • The java.io package is implemented by the String class and all wrapper classes.
  • By default, the interface is serializable.

Java’s ObjectOutputStream class

For writing objects into streams, this class is required. Only classes that implement the Serializable interface can be used as arguments in this class’s methods. The object is transformed into a byte stream using the methods in this class.

Constructor in Java

Let’s have a look at constructor function of this class-

Syntex-2

This function Object() creates a byte stream that writes to an Object stream.

Methods in Java

Now let us glance at the methods inside this class. This class mainly houses three methods.

  • public void flush() throws IOException {} – This method is accountable for flushing the output stream.
  • public final void writeObject(Object obj) throws IOException {} – responsible for writing the object to the ObjectOutputStream.
  • public void close() throws IOException {} – This method is useful for closing the current output stream.

Java’s ObjectInputStream class

This class aims to perform the exact opposite of what the ObjectOutputStream class accomplished. Instead, it turns the byte stream into objects that can be deserialized.

Constructor in class

Let’s have look at the constructor function of this class-

Syntex-3

This constructor is crucial because it produces an ObjectInputStream, which reads from the InputStream.

Methods in Java

  1. public final Object readObject() throws IOException, ClassNotFoundException{} – This method transforms the stream to an object. This means that the method reads the object from the incoming input stream.
  2. public void close() throws IOException {} – As the name recommends, this method has the function of closing the ObjectInputStream

What is the most reasonable way to serialize an object in Java?

Let’s move into how to serialize an object now that you know what serialization in Java is and all the important characteristics. For serialization, we have to use the ObjectOutputStream class’s writeObject() function, and for deserialization, the InputObjectStream class’s readObject() method is used.

1. The writeObject() method has the following syntax:
IO Exception is thrown by public final void writeObject(Object o).

2. The readObject() method has the following syntax:
final public presentation IOException, ClassNotFoundException is thrown by readObject().

To understand how to serialize an object in Java, consider the following example.

Serialize an Object in Java
Serialize an Object in Java 2

The Java platform offers a default method for the serialization of serializable objects. A (Java) class is a collection of instructions that describes how to do something.

What are the advantages of serialization in Java?

Advantages of Serialization in Java

Serialization has a lot of benefits. Some of its primary usefulness is as follows:

  • This is a Java functionality that comes standard. As a result, you won’t have to rely on third-party services to implement Serialization.
  • Serialization is used in almost all of the technology we use daily.
  • This concept is simple to grasp and customize.
  • It is adaptable to the requirements of the programmer.
  • This process is universal, and all developers are familiar with the concept.
  • Java can now do encryption, authentication, compression and secure Java computing.
  • It’s used to marshal soldiers (traveling the state of an object on the network) and to save or endure the state of an object that the JVM doesn’t bind.

Some important considerations to make during the Serialization of an object in Java

There are a few prerequisites for serializing an object. These are the conditions and considerations to assume when utilizing Java serialization.

  • There are no data members or methods in the serialization interface.
  • Only the serializable interface can be used to serialize an object.
  • If the parent class executes the Serializable interface, the child class is not needed.
  • Only non-static data members are saved during the serialization process; static or temporary data members are not saved.
  • A class’s fields must all be serializable; otherwise, the temporary keyword should be used
  • String and all wrapper classes are disabled by default.

Conclusion

Hence serialization in Java means transforming a Java object into a stream of bytes. When the end-user receives this stream of bytes, it is transformed into an object, which can be easily transported from one JVM to another. It’s worth noting that the byte stream is platform-agnostic. You can change a stream of bytes into an object and run it in any context once you have it.

Leave a Reply

Your email address will not be published.