Java Academy · Lektion

Moderne Alternativen: JSON und Protocol Buffers

Ersetzen Sie die Java-Serialisierung durch Jackson JSON und Protocol Buffers für portable und sichere Persistenz.

Lektion 4 von 413 Schritte

Moderne Alternativen: JSON und Protocol Buffers ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum die Java-Serialisierung ersetzen?

Die Java-Serialisierung ist auf die JVM beschränkt, aufgebläht, langsam und ein Sicherheitsrisiko. Moderne Anwendungen bevorzugen JSON (für Menschen lesbar und sprachunabhängig) oder Protocol Buffers (kompakt, schemaorientiert und schnell).

Jackson: Die De-facto-JSON-Bibliothek

Jacksons ObjectMapper wandelt Objekte in JSON-Zeichenfolgen um und zurück. Fügen Sie com.fasterxml.jackson.core:jackson-databind zu Ihrem Projekt hinzu.

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);

Jackson mit Annotations anpassen

Verwenden Sie @JsonProperty, @JsonIgnore, @JsonAlias und @JsonFormat, um die Serialisierung zu steuern, ohne die Feldnamen in Ihrem Modell zu ändern.

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

Jackson-Module: Unterstützung für Java Time

Registrieren Sie JavaTimeModule, um LocalDate, LocalDateTime und Instant korrekt zu serialisieren, anstatt ein JSON-Objekt voller Felder zu erhalten.

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 als schlanke Alternative

GSON von Google ist einfacher als Jackson: Für grundlegende Typen ist keine Konfiguration erforderlich, allerdings bietet es nicht die Vielfalt an Annotationsmöglichkeiten und die Leistung von Jackson bei großen Datenmengen.

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

Was sind Protocol Buffers?

Protocol Buffers (Protobuf) sind Googles binäres Serialisierungsformat. Sie definieren ein .proto-Schema, kompilieren es zu Java-Klassen und erhalten kompakte Nachrichten mit integrierter Versionierung.

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

Eine Protobuf-Nachricht kodieren

Generierte Klassen bieten eine Builder-API. Rufen Sie toByteArray() auf, um die binäre Nutzlast zu erhalten, und parseFrom(bytes), um sie zu dekodieren.

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

JSON vs. Protobuf: Abwägungen

JSON ist für Menschen lesbar und schemafrei; Protobuf ist 3–10-mal kleiner und schneller, erfordert aber ein Schema und Codegenerierung. Wählen Sie JSON für REST-APIs und Protobuf für interne Services mit hohem Durchsatz.

Schema-Evolution mit Protobuf

Protobuf-Felder werden nummeriert, nicht benannt. Sie können neue Felder sicher hinzufügen oder alte als veraltet markieren, ohne bestehende Clients zu beeinträchtigen – solange Sie Feldnummern niemals wiederverwenden.

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

Von der Java-Serialisierung migrieren

Ersetzen Sie Schreibpfade mit ObjectOutputStream durch ObjectMapper.writeValue() oder Protobufs writeTo(). Behalten Sie die alte Serialisierung nur für die Migration von Legacy-Daten bei.

Sicherheit: Keine Deserialisierungs-Gadgets

JSON und Protobuf rufen während der Deserialisierung keine beliebigen Konstruktoren oder Methoden auf. Dadurch werden Gadget-Chain-Angriffe verhindert, die bei der Java-Serialisierung häufig auftreten.

Kurze Überprüfung

Was ist ein wesentlicher Vorteil von Protocol Buffers gegenüber JSON?

Zusammenfassung

Ersetzen Sie die Java-Serialisierung durch Jackson JSON für REST und Lesbarkeit oder durch Protocol Buffers für leistungskritische Services. Beide sind sprachübergreifend, unterstützen die Schema-Evolution und sind von Grund auf sicher.

Kostenlos starten

Lerne Java mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
104
Lektionen
374

Häufig gestellte Fragen

Ist die Lektion „Moderne Alternativen: JSON und Protocol Buffers“ kostenlos?

Ja — der vollständige Text von „Moderne Alternativen: JSON und Protocol Buffers“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Moderne Alternativen: JSON und Protocol Buffers“?

Ersetzen Sie die Java-Serialisierung durch Jackson JSON und Protocol Buffers für portable und sichere Persistenz. Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Java Academy zu starten?

Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Moderne Alternativen: JSON und Protocol Buffers“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?

Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen der Java-Serialisierung
  2. transient-Felder und serialVersionUID
  3. Benutzerdefinierte Serialisierung: writeObject und readObject
  4. Moderne Alternativen: JSON und Protocol Buffers
← Zurück zu Java Academy