Java Academy · Ders

Modern Alternatifler: JSON ve Protocol Buffers

Taşınabilir ve güvenli kalıcılık için Java serileştirmesini Jackson JSON ve Protocol Buffers ile değiştirin.

4. ders / 413 adım

Modern Alternatifler: JSON ve Protocol Buffers, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Java Serileştirmesi Neden Değiştirilmeli?

Java serileştirmesi yalnızca JVM'e özgüdür, ayrıntılıdır, yavaştır ve güvenlik riski oluşturur. Modern uygulamalar JSON'u (insan tarafından okunabilir ve dilden bağımsız) veya Protocol Buffers'ı (sıkı, şema tabanlı ve hızlı) tercih eder.

Fiilî JSON Kütüphanesi: Jackson

Jackson'ın ObjectMapper'ı nesneleri JSON dizelerine ve tekrar nesnelere dönüştürür. Projenize com.fasterxml.jackson.core:jackson-databind ekleyin.

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'ı Ek Açıklamalarla Özelleştirme

Modelinizdeki alan adlarını değiştirmeden serileştirmeyi denetlemek için @JsonProperty, @JsonIgnore, @JsonAlias ve @JsonFormat kullanın.

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

Jackson Modülleri: Java Zamanı Desteği

Alanlarla dolu bir JSON nesnesi elde etmek yerine LocalDate, LocalDateTime ve Instant değerlerini doğru şekilde serileştirmek için JavaTimeModule kaydedin.

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"

Hafif Bir Alternatif Olarak GSON

Google'ın GSON'ı Jackson'dan daha basittir: temel türler için yapılandırma gerekmez; ancak ek açıklama zenginliği ve büyük ölçekte Jackson'ın performansını sunmaz.

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

Protocol Buffers Nedir?

Protocol Buffers (Protobuf), Google'ın ikili serileştirme biçimidir. Bir .proto şeması tanımlar, bunu Java sınıflarına derler ve yerleşik sürümleme özelliğine sahip, sıkı mesajlar elde edersiniz.

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

Bir Protobuf Mesajını Kodlama

Oluşturulan sınıflarda bir oluşturucu API'si bulunur. İkili yükü almak için toByteArray(), kodunu çözmek için parseFrom(bytes) çağrısını yapın.

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

JSON ve Protobuf Arasındaki Tercihler

JSON insan tarafından okunabilir ve şemasızdır; Protobuf ise 3–10 kat daha küçük ve hızlıdır, ancak bir şema ve kod oluşturma gerektirir. REST API'leri için JSON'u, yüksek aktarım hacimli dahili hizmetler için Protobuf'u seçin.

Protobuf ile Şema Gelişimi

Protobuf alanları adlandırılmaz, numaralandırılır. Mevcut istemcileri bozmadan yeni alanları güvenle ekleyebilir veya eski alanları kullanımdan kaldırabilirsiniz; yeter ki alan numaralarını hiçbir zaman yeniden kullanmayın.

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

Java Serileştirmesinden Geçiş

ObjectOutputStream yazma yollarını ObjectMapper.writeValue() veya Protobuf writeTo() ile değiştirin. Eski serileştirmeyi yalnızca eski verilerin geçişi için koruyun.

Güvenlik: Serileştirme Araç Zinciri Saldırılarına Karşı Koruma

JSON ve Protobuf, serileştirmeden çıkarma sırasında rastgele kurucuları veya yöntemleri çağırmaz; böylece Java serileştirmesini etkileyen araç zinciri saldırılarını ortadan kaldırır.

Hızlı Kontrol

Protocol Buffers'ın JSON'a göre önemli bir avantajı nedir?

Özet

REST ve okunabilirlik için Java serileştirmesini Jackson JSON ile, performansın kritik olduğu hizmetler içinse Protocol Buffers ile değiştirin. Her ikisi de diller arası çalışır, şemalarının geliştirilmesine izin verir ve tasarım gereği güvenlidir.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Java öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
104
Dersler
374

Sıkça Sorulan Sorular

“Modern Alternatifler: JSON ve Protocol Buffers” dersi ücretsiz mi?

Evet — “Modern Alternatifler: JSON ve Protocol Buffers” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“Modern Alternatifler: JSON ve Protocol Buffers” dersinde ne öğreneceğim?

Taşınabilir ve güvenli kalıcılık için Java serileştirmesini Jackson JSON ve Protocol Buffers ile değiştirin. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Modern Alternatifler: JSON ve Protocol Buffers” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Java Serileştirmesinin Temelleri
  2. transient Alanları ve serialVersionUID
  3. Özel Serileştirme: writeObject ve readObject
  4. Modern Alternatifler: JSON ve Protocol Buffers
← Java Academy Sayfasına Dön