CodeGym
Promoção
Aprendizagem
Cursos
Tarefas
Pesquisas & Questionários
Jogos
Ajuda
Cronograma
Comunidade
Usuários
Fórum
Chat
Artigos
Histórias de sucesso
Atividade
Avaliações
Assinaturas
Tema claro

Aulas

  • Avaliações
  • Sobre nós
Iniciar
Comece a aprender
Comece a aprender agora
  • Meu progresso
  • Cursos
  • Mapa da Missão
  • Aulas
  • Externalizable: ajuste fino da serialização

    JAVA 25 SELF
    Nível 43,Aula 2
    Expandindo a serialização básica em Java: quando a automação do Serializable não é suficiente, entra em cena o contrato manual Externalizable com os métodos writeExternal/ readExternal. Na aula, explicamos como controlar totalmente o formato dos dados, reduzir o tamanho dos arquivos e manter a compatibilidade com versões anteriores, comparamos com os fluxos ObjectOutputStream/ ObjectInputStream, mostramos exemplos, prós/contras e erros típicos (construtor public sem parâmetros obrigatório, ordem de escrita/leitura etc.).
    Disponível
  • Ajustando o comportamento da serialização: métodos personalizados

    JAVA 25 SELF
    Nível 43,Aula 3
    Nesta aula, veremos como influenciar o processo de serialização e desserialização em Java com os métodos writeReplace e readResolve: por que substituir um objeto por um proxy, como preservar um singleton, o que fazer com objetos imutáveis e como isso se relaciona com writeObject/ readObject. Prática passo a passo, um diagrama de fluxo das operações e análise de erros típicos.
    Disponível
  • Segurança da serialização: práticas recomendadas

    JAVA 25 SELF
    Nível 43,Aula 4
    Guia prático de serialização segura em Java: por que a desserialização de fontes não confiáveis é perigosa, como se proteger com ObjectInputFilter, a palavra‑chave transient, serialVersionUID explícito, verificação de tipos com instanceof e formatos alternativos de troca (JSON/Proto). Dentro — exemplos de código ilustrativos, filtragem de classes permitidas e análise de erros típicos.
    Disponível
  • Serialização de objetos aninhados: particularidades

    JAVA 25 SELF
    Nível 44,Aula 0
    Nesta aula, analisamos como o Java realiza a serialização profunda de um grafo de objetos: o que acontece com campos de referência, por que todos os objetos aninhados devem implementar Serializable, como evitar NotSerializableException e em quais casos o modificador transient ajuda. Com exemplos, mostraremos a serialização/desserialização de objetos com aninhamento, coleções e referências cíclicas, além de discutir erros típicos relacionados a serialVersionUID e a grafos grandes de objetos.
    Disponível
  • Objetos aninhados e hierárquicos: serialização de grafos

    JAVA 25 SELF
    Nível 44,Aula 1
    Como o Java serializa estruturas de dados complexas: de coleções aninhadas e hierarquias de herança a grafos cíclicos de objetos. Vamos entender por que funciona a serialização Map<String, List<Book>>, como os tipos reais dos descendentes são preservados em List<Animal>, o que o mecanismo de referências faz em caso de ciclos e quais são as armadilhas comuns. Vamos falar sobre o papel de ObjectOutputStream/ ObjectInputStream, os métodos writeObject/ readObject, o campo serialVersionUID e o modificador transient.
    Disponível
  • O problema de referências cíclicas: detecção e tratamento

    JAVA 25 SELF
    Nível 44,Aula 2
    Analisamos o que são referências cíclicas em grafos de objetos, por que elas são perigosas para a serialização e como lidar com elas. Mostramos como os streams padrão do Java — ObjectOutputStream/ ObjectInputStream — rastreiam automaticamente os objetos já vistos e gravam referências (handles), prevenindo StackOverflowError. Abordamos as armadilhas da serialização customizada ( writeObject/ readObject, defaultWriteObject/ defaultReadObject) e também estratégias para contornar ciclos em JSON: anotações @JsonIdentityInfo, @JsonBackReference/ @JsonManagedReference, exclusão de campos via transient e uso de identificadores.
    Disponível
  • Identidade de objetos na serialização binária

    JAVA 25 SELF
    Nível 44,Aula 3
    Como o Java preserva e restaura a identidade dos objetos na serialização binária: por que a equivalência via a. equals( b) não é o mesmo que identidade ( a == b), como ObjectOutputStream/ ObjectInputStream rastreiam o grafo de objetos e gravam “referências repetidas” em vez de duplicatas, por que isso funciona corretamente com ciclos e como os métodos writeReplace() e readResolve() podem afetar a identidade resultante. Análise com exemplos: ciclos, referências compartilhadas, prática e erros comuns.
    Disponível
  • Análise dos erros mais comuns na serialização de coleções

    JAVA 25 SELF
    Nível 44,Aula 4
    Nesta aula, analisamos os problemas mais frequentes na serialização de coleções: desde java.io.NotSerializableException (quando os elementos não implementam Serializable) e armadilhas de genéricos com ClassCastException até incompatibilidade de versões de classes via serialVersionUID. Falaremos sobre nuances de coleções imutáveis ( List.of(), Set.of(), Map.of()), comportamento dos campos transient/ static, além de desempenho e tamanho de arquivos, onde ajudam gravação em streaming e compactação ( GZIPOutputStream). Você receberá conselhos práticos, exemplos de código e recomendações para desserialização segura ( readObject/ writeObject).
    Disponível
  • Problemas da serialização binária: segurança, compatibilidade

    JAVA 25 SELF
    Nível 45,Aula 0
    Nesta aula, analisamos os riscos da serialização binária em Java: por que a desserialização de fontes não confiáveis é perigosa (cadeias “gadget chain”, RCE), quais riscos trazem métodos especiais como readObject e readResolve, e como se proteger (lista de permissões — whitelisting, abandono em favor de JSON/ XML, bibliotecas seguras como Jackson). Examinaremos em detalhe a compatibilidade entre versões de classes e o papel do campo serialVersionUID, o comportamento em InvalidClassException, as restrições de transient/ static, desempenho, além de boas práticas e erros comuns.
    Disponível
  • Serialização de coleções com generics: particularidades

    JAVA 25 SELF
    Nível 45,Aula 1
    Vamos analisar como o apagamento de tipos ( type erasure) afeta a serialização de coleções com generics: por que, em tempo de execução, List<String> e List<Integer> são o mesmo ArrayList, o que exatamente é gravado e lido via ObjectOutputStream/ ObjectInputStream, de onde vêm ClassCastException e os avisos de casts unchecked. Mostraremos exemplos com coleções aninhadas, Map/ Set, mencionaremos Gson/ Jackson e formularemos práticas de desserialização segura.
    Disponível
  • Compatibilidade e compatibilidade retroativa (backward compatibility) na serialização

    JAVA 25 SELF
    Nível 45,Aula 2
    Analisamos como evoluir classes serializáveis sem quebrar os dados: por que fixar o serialVersionUID, como a JVM verifica a compatibilidade, quais mudanças são seguras (adição/remoção de campos) e quais são críticas (troca de tipo, mover a classe para outro pacote). Mostramos o papel de transient/ static, técnicas de serialização customizada via writeObject/ readObject, a diferença entre serialização binária e XML/JSON, estratégias para garantir compatibilidade e erros típicos (por exemplo, InvalidClassException).
    Disponível
  • Migração e versionamento de dados serializados

    JAVA 25 SELF
    Nível 45,Aula 3
    Como evoluir com segurança classes serializáveis em produção: o que acontece ao alterar campos e tipos, como funciona a versão da classe via serialVersionUID, quando mudá-la e quando mantê-la, como aplicar migração “preguiçosa” via readObject/ readFields e conversão “in-place”, e quais são as técnicas avançadas como ObjectInputStream.readClassDescriptor(). Vamos analisar um cenário prático completo com duas versões da classe e erros típicos, incluindo armadilhas de InvalidClassException.
    Disponível
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 30
Aprender
  • Cadastro
  • Curso de Java
  • Ajuda com Tarefas
  • Preços
  • Sintaxe Java
Comunidade
  • Usuários
  • Artigos
  • Fórum
  • Chat
  • Histórias de sucesso
  • Atividade
  • Programa de afiliados
Empresa
  • Sobre nós
  • Contatos
  • Avaliações
  • Sala de imprensa
  • CodeGym for EDU
  • Perguntas frequentes
  • Suporte
CodeGymCodeGym é um curso online para aprender programação Java do zero. Este curso é uma maneira perfeita de dominar Java para iniciantes. Contém mais de 1.200 tarefas com verificação instantânea e um escopo essencial da teoria dos fundamentos de Java. Para ajudar você a ter sucesso nos estudos, implementamos um conjunto de recursos motivacionais: questionários, projetos de programação, conteúdo sobre aprendizagem eficiente e carreira de desenvolvedor Java.
Siga-nos
Idioma da interface
English Deutsch Español हिन्दी Français
Português
Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programadores se formam, não nascem" © 2026 CodeGym
MastercardVisa
"Programadores se formam, não nascem" © 2026 CodeGym