0Pricing
Java Academy · Aula

Alternativas Modernas: JSON e Protocol Buffers

Substitua a serialização de Java por JSON com Jackson e Protocol Buffers para uma persistência portátil e segura.

Alternativas Modernas: JSON e Protocol Buffers é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

Por que Substituir a Serialização de Java?

A serialização de Java é exclusiva da JVM, verbosa, lenta e um risco de segurança. Aplicações modernas preferem JSON, que é legível por humanos e independente de linguagem, ou Protocol Buffers, que são compactos, orientados por esquema e rápidos.

Jackson: a Biblioteca JSON de Fato

O Jackson ObjectMapper converte objetos em textos JSON e vice-versa. Adicione com.fasterxml.jackson.core:jackson-databind ao seu projeto.

ObjectMapper mapper = new ObjectMapper();
User user = new User("Alice", 30);
String json = mapper.writeValueAsString(user);
System.out.println(json); // {"name":"Alice","age":30}
User restored = mapper.readValue(json, User.class);

Personalizando o Jackson com Anotações

Use @JsonProperty, @JsonIgnore, @JsonAlias e @JsonFormat para controlar a serialização sem alterar os nomes dos campos no seu modelo.

public class Product {
    @JsonProperty("product_name")
    private String name;
    @JsonIgnore
    private String internalCode;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate releaseDate;
}

Módulos do Jackson: Suporte a Java Time

Registre JavaTimeModule para serializar LocalDate, LocalDateTime e Instant corretamente, em vez de obter um objeto JSON cheio de campos.

ObjectMapper mapper = new ObjectMapper()
    .registerModule(new JavaTimeModule())
    .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
String json = mapper.writeValueAsString(LocalDate.now());
System.out.println(json); // "2024-06-15"

GSON como Alternativa Leve

O GSON, do Google, é mais simples que o Jackson: não exige configuração para tipos básicos, mas não oferece a riqueza de anotações nem o desempenho do Jackson em grande escala.

Gson gson = new Gson();
String json = gson.toJson(new User("Bob", 25));
User user = gson.fromJson(json, User.class);

O que são Protocol Buffers?

Protocol Buffers (Protobuf) são o formato binário de serialização do Google. Você define um esquema .proto, compila-o em classes Java e obtém mensagens compactas com versionamento integrado.

// user.proto
syntax = "proto3";
message UserProto {
    string name = 1;
    int32  age  = 2;
}

Codificando uma Mensagem Protobuf

As classes geradas têm uma API de construção. Chame toByteArray() para obter a carga útil binária e parseFrom(bytes) para decodificá-la.

UserProto user = UserProto.newBuilder()
    .setName("Alice")
    .setAge(30)
    .build();
byte[] bytes = user.toByteArray();
UserProto restored = UserProto.parseFrom(bytes);
System.out.println(restored.getName());

Compromissos entre JSON e Protobuf

JSON é legível por humanos e não exige esquema; Protobuf é de 3 a 10 vezes menor e mais rápido, mas exige um esquema e geração de código. Escolha JSON para APIs REST e Protobuf para serviços internos de alto volume.

Evolução de Esquemas com Protobuf

Os campos do Protobuf são numerados, não nomeados. Você pode adicionar novos campos com segurança ou descontinuar campos antigos sem quebrar os clientes existentes — desde que nunca reutilize números de campos.

// v2 of user.proto — backwards compatible
message UserProto {
    string name  = 1;
    int32  age   = 2;
    string email = 3; // new in v2
}

Migrando da Serialização de Java

Substitua os caminhos de gravação de ObjectOutputStream por ObjectMapper.writeValue() ou writeTo() do Protobuf. Mantenha a serialização antiga apenas para a migração de dados legados.

Segurança: sem Gadgets de Desserialização

JSON e Protobuf não chamam construtores ou métodos arbitrários durante a desserialização, eliminando os ataques de cadeia de gadgets que afligem a serialização de Java.

Verificação Rápida

Qual é uma vantagem importante dos Protocol Buffers sobre JSON?

Recapitulação

Substitua a serialização de Java por JSON do Jackson para REST e legibilidade, ou por Protocol Buffers para serviços críticos em termos de desempenho. Ambos funcionam entre linguagens, permitem a evolução do esquema e são seguros por projeto.

Perguntas Frequentes

A aula “Alternativas Modernas: JSON e Protocol Buffers” é grátis?

Sim — o texto completo de “Alternativas Modernas: JSON e Protocol Buffers” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “Alternativas Modernas: JSON e Protocol Buffers”?

Substitua a serialização de Java por JSON com Jackson e Protocol Buffers para uma persistência portátil e segura. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Alternativas Modernas: JSON e Protocol Buffers”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos da Serialização em Java
  2. Campos transient e serialVersionUID
  3. Serialização Personalizada: writeObject e readObject
  4. Alternativas Modernas: JSON e Protocol Buffers
← Voltar para Java Academy