What is Serialization? May be Star Trek analogy could help..

Standard

I recently played with XML serialization:

1

In super simple terms, (one of the) aim of serialization is to convert an object (not a class) that can be transported.

There are two processes that are attached to Serialization viz. deserializing and serializing AND to understand that – let’s draw an analogy with star trek:

Remember Transporter?

image

Source: http://en.wikipedia.org/wiki/Transporter_%28Star_Trek%29

Transporters convert a person or object or matter into an energy pattern –> then “beam” it to a target –> where it is reconverted into matter

In programmer’s world:

Serialization equals “convert a person or object or matter into an energy pattern”

Deserialization equals “where it is reconverted into matter”

Technical (accurate) Definition from Wikipedia:

In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored (for example, in a file or memory buffer, or transmitted across a network connection link) and “resurrected” later in the same or another computer environment

 Let’s Simplify that!

we need to serialize the object when 1) an object is to be sent over the network 2) state of an object is to be saved.

Moral of the story

To send an object via network, it is serialized.

After it’s received, to recover it, it is deserialized.

Now let’s get into action!

I am familiar with .Net framework– so I am going to share a demo code for XML serialization (serializing + deserializing) with you.

Here’s the class definition (person.cs). Just a simple object for demo purpose:

[code language=”css”]

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace XMLSerialization

{

class person

{

static void Main(string[] args)

{

}

public class person

{

private string _firstname, _lastname, _twitter;

public person()

{

_firstname = "";

_lastname = "";

_twitter = "";

}

public string firstname

{

get { return _firstname; }

set { _firstname = value; }

}

public string lastname

{

get { return _lastname; }

set { _lastname = value; }

}

public string twitter

{

get { return _twitter; }

set { _twitter = value; }

}

}

}

}
[/code]

Code for Serializing an object:

[code language=”css”]

class Program

{

static void Main(string[] args)

{

person personone = new person();

personone.firstname = "paras";

personone.lastname = "doshi";

personone.twitter = "@paras_doshi";

Console.WriteLine("serializing….");

XmlSerializer serializer = new XmlSerializer(typeof(person));

string path = ".\filename.xml";

FileStream fs = File.OpenWrite(path);

XmlTextWriter writer = new XmlTextWriter(fs,System.Text.Encoding.UTF8);

writer.Formatting = Formatting.Indented;

try

{

serializer.Serialize(writer, personone);

}

finally

{

writer.Close();

}

Console.WriteLine("Serialization: Done!");

}

}
[/code]

Code to deserialize an object:

[code language=”css”]

Console.WriteLine("Deserialization…..");

XmlSerializer serializer = new XmlSerializer(typeof(person));

string path = ".\filename.xml";

FileStream fs = File.OpenRead(path);

person deserializeperson;

try

{

deserializeperson = (person)serializer.Deserialize(fs);

}

finally

{

fs.Close();

}

Console.WriteLine("Person info:");

Console.WriteLine("First Name: {0}", deserializeperson.firstname);

Console.WriteLine("Last Name: {0}", deserializeperson.lastname);

Console.WriteLine("Twitter: {0}", deserializeperson.twitter);

[/code]

reference: http://msdn.microsoft.com/en-us/library/182eeyhh%28v=vs.71%29.aspx

BTW,
I hope that STAR TREK helped!

4 thoughts on “What is Serialization? May be Star Trek analogy could help..

  1. Risma

    Need your help with two qutseions. 1) Are all jvm implementations always confirming to the java serialization spec? ie. if I serialize a Java object in sun jvm, can I always be able to deserialize it in JRocket or IBM’s jvm providing the serialVersionUID is the same? 2) Will serialization form using java serializable mechanism consume more memory than using xml representation?Thanks.

    • Hi! Thank you for your question. However i am not familiar with serialization concepts in Java. So I am not in a position to answer that. I forwarded these questions to my couple of java friends i have – if i get their response, i’ll forward their response to your email id.

What do you think? Leave a comment below.