O que é serialização/serialization?

Thais Alencar
2 min readFeb 20, 2019

--

É um processo para converter uma estrutura de dados ou um objeto em um formato que possa ser armazenado ou transferido.

O processo de serialização é independente da aplicação, um dado serializado em uma plataforma deve poder ser deserializada por qualquer outra. Visando garantir a comunicação entre aplicações.

http://www.corejavaguru.com/java/serialization/interview-questions-1.php

Mas porque precisamos disso?

Imagine que você tenha uma aplicação Java e queira transferir um objeto via rede, por exemplo fazendo um post para uma aplicação em Noje.js. O problema está no fato de a rede, o socket ou qualquer outro pipe de transporte que é não-tipado não sabe o que é um objeto Java, assim como uma aplicação em Node.js não sabe, e assim não podendo envia-lo ou recebe-lo.

Imagine também querer armazenar uma estrutura da sua aplicação em um arquivo de texto ou no banco de dados, você necessita serializar-lá para permitir que sejam compreendidas e armazenadas.

Assim, é necessário a serialização, para converter nosso objeto ou estrutura de dados em uma stream de bytes que podem ser trafegado através da rede, pode ser entendido por qualquer aplicação ou armazenado em um banco de dados.

Quais os formatos de serialização?

Inicialmente, quando a capacidade de armazenamento das máquinas e transferência de dados na rede era baixo, a serialização era feita convertendo os objetos/estruturas de dados para stream de bytes, byte-stream-based encoding.

Com o avanço tecnológico, permitiu-se o uso de um padrão não tão compacto , quanto um simples streams de bytes, surgindo a proposta de se padronizar o uso para XML, um text-based encoding, que tem a vantagem de ser compreensível a humanos, pode ser aberto em leitor de texto simples e cumprir o propósito de ser entendível pelo programas, independente de sua linguagem. Depois sugiram alternativas mais leves e de leitura mais amigáveis para humanos como JSON, que hoje é o mais utilizado, e o YAML.

Este artigo sintetiza algo que aprendi e decidi escrever sobre, com os objetivos de:

# Fixar o conhecimento adquirido

# Compartilhar informação

# Permitir que o meu “eu do futuro” revise mais facilmente essa informação

Gostaria de acresentar/corrigir algo? Ótimo! Fala aí.

--

--

Thais Alencar

I love code, movies and books. Interested in topics related to technology and personal growth. Eventually, I write to share and establish knowledge.