Serialização e deserialização em Java - Parte 2
Este artigo apresenta uma comparação entre três alternativas para a serialização e deserialização de objetos Java. As opções comparadas são a serialização binária, o uso de arquivos no formato XML e o armazenamento no banco de dados MySQL.
Em que situação o tema é útil:
O tema é útil para desenvolvedores que procuram mais informações sobre qual abordagem de serialização utilizar incluindo detalhes como tempo de execução para serialização/deserialização, tamanho dos objetos, capacidade para interoperabilidade e presença de recursos adicionais.
Resumo DevMan:
A serialização e deserialização de objetos em Java é útil em diversos contextos como jogos, aplicações distribuídas, servidores de cache e no mapeamento objeto-relacional (ORM). Este artigo apresenta uma comparação técnica entre as opções de serialização e deserialização de objetos Java que utilizam o formato binário, o formato XML e o armazenamento de objetos dentro do banco de dados MySQL. A comparação leva em consideração tempos de execução, tamanho de objetos, interoperabilidade e recursos adicionais.
A linguagem de programação Java é fortemente baseada nos conceitos definidos no paradigma de orientação a objetos. Isso quer dizer que é comum manipular campos, métodos, variáveis e outros elementos por meio de instâncias das classes que são armazenadas em variáveis e que permitem o acesso às funcionalidades proporcionadas por uma classe.
A manipulação dos objetos em Java utiliza como cenário a memória para o armazenamento das variáveis enquanto a aplicação está sendo executada. Porém, existem diversas situações onde é necessário realizar a persistência dos objetos, ou seja, armazená-los em outro local que não seja a memória para depois resgatá-los e colocá-los de volta na memória, onde podem ser manipulados.
Esta operação de persistência de objetos em locais que não sejam a memória recebe o nome de serialização. Já a operação inversa, ou seja, a leitura dos objetos e posterior colocação em memória é chamada de deserialização. Atualmente existem diversas técnicas, padrões, bibliotecas, frameworks e soluções para auxiliar o desenvolvedor Java a serializar e deserializar seus objetos de maneira simples, rápida e com diversas funcionalidades agregadas.
Este artigo apresentará uma comparação técnica entre as abordagens que permitem a serialização de objetos Java em arquivos binários e no formato XML armazenados no sistema de arquivos do computador, e também abordará a serialização binária de objetos armazenada em um banco de dados relacional. A comparação indicará os tempos de serialização/deserialização, características das abordagens e detalhes técnicos que podem auxiliar o desenvolvedor quando for necessário tomar uma decisão em relação à maneira e ao local de persistência dos seus objetos. Com base no que foi apresentado neste artigo o leitor terá uma visão geral de como implementar a serialização e a deserialização de objetos simples, tanto em arquivos como em um banco de dados.
Nesta primeira parte veremos o que é a serialização e deserialização de objetos e os detalhes do ambiente de testes e do conjunto de dados utilizado para a comparação entre as abordagens escolhidas.
Serialização e Deserialização de dados
Antes de começar a compreender os detalhes técnicos envolvidos na serialização de objetos em Java, é importante saber quais são os principais cenários de utilização deste recurso e o que ele proporciona para o desenvolvedor quando ele estiver considerando os requisitos e funcionalidades da aplicação. Veremos aplicações que envolvem interoperabilidade, servidores de cache, mapeamento objeto-relacional, persistência de estado em jogos e aplicações colaborativas.
A utilização de objetos implica na criação de um elemento da linguagem de programação que terá comportamento, representado pelos métodos, e características, representadas pelos campos que geralmente são acessados por meio de métodos públicos getters e setters. As características armazenam dados de acordo com os tipos de dados existentes no Java e também de acordo com os tipos de dados criados pelo usuário. Em muitas situações é preciso realizar a troca destes dados entre aplicações heterogêneas (não desenvolvidas em Java) ou homogêneas (desenvolvidas na plataforma Java). Esta interoperabilidade é uma das principais motivações para a persistência de objetos em Java através da serialização/deserialização. Por exemplo: um sistema financeiro externo pode exigir que, em um determinado momento, todos os dados armazenados nos objetos de uma aplicação em Java que está sendo executada sejam enviados para uma auditoria. Outro exemplo inclui a comunicação por meio de componentes como Web Services, que devido ao seu baixo acoplamento e uso de protocolos abertos como SOAP, exige algum tipo de serialização/deserialização de objetos para a troca de informações entre sistemas diferentes.
Recentemente o uso de servidores de cache, como o Memcached, por exemplo, tem ganhado cada vez mais espaço, principalmente em aplicações Web. O objetivo destes servidores é utilizar técnicas de cache para tornar mais rápido o acesso a objetos já criados. Neste cenário o recurso de serialização/deserialização assume um papel importante, pois o núcleo destes servidores depende diretamente de como a serialização/deserialização é empregada.
Outro exemplo comum de serialização envolve o uso de aplicações que fazem o mapeamento entre o modelo de classes de uma aplicação Java e o modelo de dados armazenado em um banco de dados. Geralmente a implementação e uso deste mapeamento é conhecido pela sigla ORM (Object-Relational Mapping), e sua implementação é facilitada por frameworks como Hibernate e Spring. Estes frameworks utilizam os conceitos de serialização/deserialização internamente, de forma a encapsular os detalhes envolvidos na persistência das informações.
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.