0Pricing
Java Academy · Pelajaran

Dasar-Dasar Serialisasi Java

Implementasikan Serializable, tulis objek ke stream dengan ObjectOutputStream, lalu baca kembali objek tersebut.

Dasar-Dasar Serialisasi Java adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Apa Itu Serialisasi Java?

Serialisasi mengubah status objek menjadi aliran byte agar dapat disimpan ke disk, dikirim melalui jaringan, atau disimpan dalam basis data. Deserialisasi membalikkan proses tersebut.

Interface Penanda Serializable

Untuk melakukan serialisasi pada sebuah kelas, implementasikan java.io.Serializable. Interface ini tidak memiliki metode — interface ini memberi sinyal kepada JVM bahwa instance kelas tersebut dapat diserialisasi.

import java.io.Serializable;
public class User implements Serializable {
    private String name;
    private int age;
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override public String toString() { return name + " / " + age; }
}

Menulis Objek dengan ObjectOutputStream

Bungkus FileOutputStream dalam ObjectOutputStream, lalu panggil writeObject() untuk melakukan serialisasi.

import java.io.*;
try (ObjectOutputStream oos = new ObjectOutputStream(
        new FileOutputStream("user.ser"))) {
    oos.writeObject(new User("Alice", 30));
    System.out.println("Serialized successfully");
}

Membaca Objek dengan ObjectInputStream

Bungkus FileInputStream dalam ObjectInputStream, lalu panggil readObject() untuk melakukan deserialisasi. Konversikan hasilnya ke tipe yang diharapkan.

import java.io.*;
try (ObjectInputStream ois = new ObjectInputStream(
        new FileInputStream("user.ser"))) {
    User u = (User) ois.readObject();
    System.out.println("Deserialized: " + u);
}

Menyerialisasi Graf Objek

Semua objek yang dirujuk oleh objek yang diserialisasi juga harus mengimplementasikan Serializable, atau NotSerializableException akan dilempar saat program berjalan.

public class Order implements Serializable {
    private User customer;   // User must be Serializable
    private List<String> items;
    public Order(User customer, List<String> items) {
        this.customer = customer;
        this.items = items;
    }
}

NotSerializableException

Jika ada bidang apa pun dalam graf objek yang tidak dapat diserialisasi dan tidak ditandai sebagai transient, Java akan melempar NotSerializableException saat penulisan.

// Thread is NOT Serializable
public class Task implements Serializable {
    private Thread worker; // throws NotSerializableException!
    // Fix: mark as transient
    private transient Thread worker2;
}

Graf Objek dan Referensi Bersama

Java melacak identitas objek selama serialisasi. Jika dua bidang merujuk ke objek yang sama, hanya satu salinan yang ditulis, dan kedua bidang menunjuk ke instans hasil deserialisasi yang sama.

Menyerialisasi Koleksi

Koleksi standar seperti ArrayList, HashMap, dan LinkedList sudah mengimplementasikan Serializable, sehingga koleksi tersebut dapat diserialisasi selama elemen-elemennya juga dapat diserialisasi.

List<String> names = new ArrayList<>(List.of("Alice", "Bob"));
try (ObjectOutputStream oos = new ObjectOutputStream(
        new FileOutputStream("names.ser"))) {
    oos.writeObject(names);
}

Pewarisan dan Serialisasi

Jika kelas induk mengimplementasikan Serializable, semua subkelasnya juga dapat diserialisasi. Jika kelas induk bertanda NOT dan tidak dapat diserialisasi, bidang milik kelas induk tidak disimpan; kelas induk harus memiliki konstruktor tanpa argumen agar dapat dideserialisasi.

Memverifikasi Aliran Bita

Aliran bita yang diserialisasi dimulai dengan bita khusus 0xACED 0x0005. Anda dapat memeriksanya dengan editor heksadesimal atau menguraikannya dengan alat SerialVer untuk memahami formatnya.

Peringatan Keamanan

Deserialisasi Java merupakan vektor serangan yang sudah dikenal. Jangan pernah mendeserialisasi data dari sumber yang tidak tepercaya tanpa validasi. Untuk data eksternal, lebih baik gunakan JSON, Protobuf, atau amplop bertanda tangan.

Pemeriksaan Singkat

Metode apa yang menserialisasi objek ke aliran?

Ringkasan

Serialisasi Java menggunakan ObjectOutputStream / ObjectInputStream. Kelas harus mengimplementasikan Serializable. Hindari menserialisasi data yang tidak tepercaya — untuk kode baru, lebih baik gunakan alternatif modern.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar-Dasar Serialisasi Java” gratis?

Ya — teks lengkap “Dasar-Dasar Serialisasi Java” 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 “Dasar-Dasar Serialisasi Java”?

Implementasikan Serializable, tulis objek ke stream dengan ObjectOutputStream, lalu baca kembali objek tersebut. 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 1 dari 4.

Berapa lama pelajaran “Dasar-Dasar Serialisasi Java” 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

  1. Dasar-Dasar Serialisasi Java
  2. Field transient dan serialVersionUID
  3. Serialisasi Kustom: writeObject dan readObject
  4. Alternatif Modern: JSON dan Protocol Buffers
← Kembali ke Java Academy