Alternatif Modern: JSON dan Protocol Buffers
Gantikan serialisasi Java dengan JSON Jackson dan Protocol Buffers untuk persistensi yang portabel dan aman.
Alternatif Modern: JSON dan Protocol Buffers adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Mengapa Mengganti Serialisasi Java?
Serialisasi Java hanya dapat digunakan di JVM, bertele-tele, lambat, dan menimbulkan risiko keamanan. Aplikasi modern lebih memilih JSON (dapat dibaca manusia dan tidak bergantung pada bahasa) atau Protocol Buffers (ringkas, berbasis skema, dan cepat).
Jackson: Pustaka JSON De Facto
ObjectMapper milik Jackson mengubah objek menjadi string JSON dan sebaliknya. Tambahkan com.fasterxml.jackson.core:jackson-databind ke proyek Anda.
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);Menyesuaikan Jackson dengan Anotasi
Gunakan @JsonProperty, @JsonIgnore, @JsonAlias, dan @JsonFormat untuk mengendalikan serialisasi tanpa mengubah nama bidang dalam model Anda.
public class Product {
@JsonProperty("product_name")
private String name;
@JsonIgnore
private String internalCode;
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate releaseDate;
}Modul Jackson: Dukungan Waktu Java
Daftarkan JavaTimeModule untuk menserialisasi LocalDate, LocalDateTime, dan Instant dengan benar, alih-alih mendapatkan objek JSON yang penuh dengan bidang.
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 sebagai Alternatif Ringan
GSON dari Google lebih sederhana daripada Jackson: tidak memerlukan konfigurasi untuk tipe dasar, tetapi kekayaan anotasi dan kinerjanya pada skala besar tidak sebaik Jackson.
Gson gson = new Gson();
String json = gson.toJson(new User("Bob", 25));
User user = gson.fromJson(json, User.class);Apa Itu Protocol Buffers?
Protocol Buffers (Protobuf) adalah format serialisasi biner dari Google. Anda mendefinisikan skema .proto, mengompilasinya menjadi kelas Java, lalu mendapatkan pesan ringkas dengan pembuatan versi bawaan.
// user.proto
syntax = "proto3";
message UserProto {
string name = 1;
int32 age = 2;
}Menyandikan Pesan Protobuf
Kelas yang dihasilkan memiliki API pembangun. Panggil toByteArray() untuk mendapatkan muatan biner dan parseFrom(bytes) untuk mendekodekannya.
UserProto user = UserProto.newBuilder()
.setName("Alice")
.setAge(30)
.build();
byte[] bytes = user.toByteArray();
UserProto restored = UserProto.parseFrom(bytes);
System.out.println(restored.getName());Perbandingan JSON dan Protobuf
JSON dapat dibaca manusia dan tidak memiliki skema; Protobuf berukuran 3–10× lebih kecil dan lebih cepat, tetapi memerlukan skema serta pembuatan kode. Pilih JSON untuk API REST dan Protobuf untuk layanan internal dengan laju tinggi.
Evolusi Skema dengan Protobuf
Bidang Protobuf diberi nomor, bukan nama. Anda dapat menambahkan bidang baru atau menandai bidang lama sebagai tidak digunakan lagi dengan aman tanpa merusak klien yang ada — selama Anda tidak pernah menggunakan kembali nomor bidang.
// v2 of user.proto — backwards compatible
message UserProto {
string name = 1;
int32 age = 2;
string email = 3; // new in v2
}Bermigrasi dari Serialisasi Java
Ganti jalur penulisan ObjectOutputStream dengan ObjectMapper.writeValue() atau writeTo() milik Protobuf. Pertahankan serialisasi lama hanya untuk migrasi data lama.
Keamanan: Tanpa Gadget Deserialisasi
JSON dan Protobuf tidak memanggil konstruktor atau metode sembarang selama deserialisasi, sehingga menghilangkan serangan rantai gadget yang sering menjangkiti serialisasi Java.
Pemeriksaan Singkat
Apa keunggulan utama Protocol Buffers dibandingkan JSON?
Ringkasan
Ganti serialisasi Java dengan JSON Jackson untuk REST dan keterbacaan, atau dengan Protocol Buffers untuk layanan yang kritis terhadap kinerja. Keduanya lintas bahasa, mendukung evolusi skema, dan aman sejak perancangan.
Belajar Java dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Alternatif Modern: JSON dan Protocol Buffers” gratis?
Ya — teks lengkap “Alternatif Modern: JSON dan Protocol Buffers” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Alternatif Modern: JSON dan Protocol Buffers”?
Gantikan serialisasi Java dengan JSON Jackson dan Protocol Buffers untuk persistensi yang portabel dan aman. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Alternatif Modern: JSON dan Protocol Buffers” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Serialisasi Java
- Field transient dan serialVersionUID
- Serialisasi Kustom: writeObject dan readObject
- Alternatif Modern: JSON dan Protocol Buffers