CodeGym /Java Blog /Acak /format serialisasi Java
John Squirrels
Level 41
San Francisco

format serialisasi Java

Dipublikasikan di grup Acak
Hai! Mari kita bicara tentang serialisasi. Anda mungkin ingat bahwa kita sudah mendapatkan pelajaran tentang serialisasi. Jadi kami melakukannya :) Ini yang pertama Dan ini yang kedua. Jika Anda tidak ingat dengan baik bagaimana serialisasi bekerja, mengapa serialisasi diperlukan, dan alat apa yang dimiliki Java untuk serialisasi, Anda dapat mengikuti pelajaran ini. Pelajaran hari ini adalah tentang teori. Kita akan melihat lebih dekat format serialisasi. Pertama, mari kita ingat apa itu serialisasi. Serialisasi adalah proses menyimpan keadaan objek dalam urutan byte. Deserialisasi adalah proses memulihkan objek dari byte ini. Objek Java dapat diserialkan dan dikirim melalui jaringan (misalnya, ke komputer lain). Urutan byte dapat direpresentasikan dalam format yang berbeda. Anda sudah familiar dengan konsep ini dari penggunaan komputer biasa. Misalnya, buku elektronik (atau dokumen teks sederhana) dapat ditulis dalam banyak format berbeda:
  • docx (format Microsoft Word);
  • pdf (format Adobe);
  • mobi (biasanya digunakan pada perangkat Amazon Kindle);
  • dan banyak lagi (ePub, djvu, fb2, dll.).
Dalam setiap kasus, tujuannya tampaknya sama: menghadirkan teks dalam bentuk yang dapat dibaca manusia. Namun, orang telah menemukan banyak format berbeda. Tanpa merinci pekerjaan mereka, kita dapat berasumsi bahwa mereka memiliki alasan yang bagus. Setiap format memiliki kelebihan dan kekurangannya sendiri dibandingkan dengan yang lain. Mungkin berbagai format serialisasi dibuat mengikuti prinsip yang sama ini? Tebakan yang bagus, siswa! :) Itu benar sekali. Kenyataannya adalah mengirim data melalui kabel (atau nirkabel) adalah bisnis yang rumit, dan melibatkan banyak faktor. Siapa yang mengirim data? Kemana? Volume berapa? Apakah penerimanya manusia atau komputer (yakni apakah datanya harus dapat dibaca oleh manusia)? Perangkat apa yang akan membaca data? Jelas, situasi ini berbeda. Mengirim gambar 500 KB dari satu smartphone ke smartphone lainnya adalah satu hal. Dan itu hal yang sama sekali berbeda jika kita berbicara tentang 500 terabyte data bisnis yang harus dikompresi secara optimal dan dikirim secepat mungkin. Mari berkenalan dengan format serialisasi utama dan mempertimbangkan kelebihan dan kekurangan masing-masing format!

JSON

Notasi Objek JavaScript. Anda sudah tahu sedikit tentang format ini! Kami membicarakannya di pelajaran ini , dan kami membahas serialisasi ke dalam JSON di sini . Itu mendapat namanya karena suatu alasan. Objek Java yang diubah menjadi JSON sebenarnya terlihat persis seperti objek di JavaScript. Anda tidak perlu mengetahui JavaScript untuk memahami objek kami:

{
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
}
Kami tidak terbatas untuk mengirimkan satu objek. Format JSON juga dapat mewakili array objek:

[
 {
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
 },

 {
   "title": "Demons",
   "author": "Fyodor Dostoyevsky",
   "year": 1872
 },

 {
   "title": "The Seagull",
   "author": "Anton Chekhov",
   "year": 1896
 }
]
Karena JSON mewakili objek JavaScript, JSON mendukung format data JavaScript berikut:
  • string;
  • angka;
  • benda;
  • array;
  • boolean (benar dan salah);
  • batal.
Apa manfaat JSON?
  1. Format yang dapat dibaca manusia. Ini adalah keuntungan yang jelas jika pengguna akhir Anda adalah manusia. Misalnya, server Anda memiliki database dengan jadwal penerbangan. Pelanggan manusia, duduk di depan komputernya di rumah, meminta data dari database ini menggunakan aplikasi web. Karena Anda perlu menyediakan data dalam format yang dapat dia pahami, JSON adalah solusi yang bagus.

  2. Kesederhanaan. Ini sangat sederhana :) Di atas, kami memberikan contoh dua file JSON. Dan bahkan jika Anda belum pernah mendengar tentang JavaScript (apalagi objek JavaScript), Anda dapat dengan mudah memahami jenis objek yang dijelaskan di sana.
    Seluruh dokumentasi JSON terdiri dari halaman web dengan beberapa gambar.

  3. Penggunaan luas. JavaScript adalah bahasa front-end yang dominan, dan memiliki persyaratannya sendiri. Menggunakan JSON adalah suatu keharusan. Oleh karena itu, sejumlah besar layanan web menggunakan JSON sebagai format pertukaran data. Setiap IDE modern mendukung format JSON (termasuk IntelliJ IDEA). Banyak perpustakaan telah ditulis untuk semua jenis bahasa pemrograman untuk memungkinkan bekerja dengan JSON.

Misalnya, Anda telah bekerja dengan perpustakaan Jackson dalam pelajaran di mana kita belajar membuat serialisasi objek Java menjadi JSON. Namun selain Jackson, kami memiliki, misalnya, GSON , yang merupakan perpustakaan yang sangat nyaman dari Google.

YAML

Awalnya, YAML adalah singkatan dari "Yet Another Markup Language". Ketika dimulai, itu diposisikan sebagai pesaing XML. Sekarang, dengan berlalunya waktu, YAML berarti "YAML Bukan Bahasa Markup". Apa itu sebenarnya? Bayangkan kita perlu membuat 3 kelas untuk mewakili karakter dalam game komputer: Warrior, Mage, dan Thief. Mereka akan memiliki ciri-ciri sebagai berikut: kekuatan, kelincahan, daya tahan, seperangkat senjata. Berikut tampilan file YAML yang mendeskripsikan kelas kita:

classes:
 class-1:
   title: Warrior
   power: 8
   agility: 4
   stamina: 7
   weapons:
     - sword
     - spear
    
 class-2:
   title: Mage
   power: 5
   agility: 7
   stamina: 5
   weapons:
     - magic staff

 class-3:
   title: Thief
   power: 6
   agility: 6
   stamina: 5
   weapons:
     - dagger
     - poison
File YAML memiliki struktur pohon: beberapa elemen bersarang di elemen lainnya. Kami dapat mengontrol sarang menggunakan sejumlah ruang, yang kami gunakan untuk menunjukkan setiap level. Apa keuntungan dari format YAML?
  1. Bisa dibaca manusia. Sekali lagi, bahkan melihat file YAML tanpa deskripsi, Anda dapat dengan mudah memahami objek yang dideskripsikannya. YAML sangat mudah dibaca sehingga situs web yaml.org adalah file YAML biasa :)

  2. Kekompakan. Struktur file dibuat menggunakan spasi: tidak perlu menggunakan tanda kurung atau tanda petik.

  3. Dukungan untuk struktur data asli untuk bahasa pemrograman. Keuntungan besar YAML dibandingkan JSON dan banyak format lainnya adalah mendukung berbagai struktur data. Mereka termasuk:

    • !!map
      Kumpulan key-value pair yang tidak terurut yang tidak boleh memiliki duplikat;

    • !!omap
      Urutan berurutan dari pasangan kunci-nilai yang tidak dapat memiliki duplikat;

    • !!pairs:
      Urutan urutan pasangan kunci-nilai yang dapat memiliki duplikat;

    • !!set
      Urutan nilai yang tidak terurut yang tidak sama satu sama lain;

    • !!seq
      Urutan nilai arbitrer;

    Anda akan mengenali beberapa struktur ini dari Java! :) Artinya, berbagai struktur data dari bahasa pemrograman dapat diserialkan ke dalam YAML.

  4. Kemampuan untuk menggunakan jangkar dan alias

    Penanda ini memungkinkan Anda untuk mengidentifikasi beberapa elemen dalam file YAML, dan kemudian merujuknya di seluruh file jika terjadi berulang kali. Jangkar dibuat menggunakan simbol & , dan alias dibuat menggunakan * .

    Misalkan kita memiliki file yang mendeskripsikan buku-buku karya Leo Tolstoy. Untuk menghindari penulisan nama penulis untuk setiap buku, kita cukup membuat jangkar leo dan merujuknya menggunakan alias saat kita membutuhkannya:

    
    books:
     book-1:
       title: War and Peace
       author: &leo Leo Tolstoy
       year: 1869
    
     book-2:
       title: Anna Karenina
       author: *leo
       year: 1873
    
     book-3:
       title: Family Happiness
       author: *leo
       year: 1859
    

    Saat file ini diuraikan, nilai "Leo Tolstoy" diganti di tempat yang tepat di mana kita memiliki alias.

  5. YAML dapat menyematkan data dalam format lain. Misalnya, JSON:

    
    books: [
            {
              "title": "War and Peace",
              "author": "Leo Tolstoy",
              "year": 1869
            },
    
            {
              "title": "Anna Karenina",
              "author": "Leo Tolstoy",
              "year": 1873
            },
    
            {
              "title": "Family Happiness",
              "author": "Leo Tolstoy",
              "year": 1859
            }
          ]
    

Format serialisasi lainnya

XML

Format ini didasarkan pada pohon tag.

<book>
   <title>Harry Potter and the Philosopher’s Stone</title>
   <author>J. K. Rowling</author>
   <year>1997</year>
</book>
Setiap elemen terdiri dari tag pembuka dan penutup (<> dan </>). Setiap elemen dapat memiliki elemen bersarang. XML adalah format umum yang sama bagusnya dengan JSON dan YAML (jika kita berbicara tentang proyek nyata). Kami memiliki pelajaran terpisah tentang XML .

BSON (JSON biner)

Sesuai dengan namanya, BSON sangat mirip dengan JSON, tetapi tidak dapat dibaca oleh manusia dan menggunakan data biner. Hasilnya, sangat bagus untuk menyimpan dan mentransfer gambar dan lampiran lainnya. Selain itu, BSON mendukung beberapa tipe data yang tidak tersedia di JSON. Misalnya, file BSON dapat menyertakan tanggal (dalam format milidetik) atau bahkan sepotong kode JavaScript. Basis data MongoDB NoSQL yang populer menyimpan informasi dalam format BSON.

Protokol berbasis posisi

Dalam beberapa situasi, kita perlu mengurangi jumlah data yang dikirim secara drastis (misalnya, jika kita memiliki banyak data dan perlu mengurangi beban). Dalam situasi ini, kita dapat menggunakan protokol berbasis posisi, yaitu mengirimkan nilai parameter tanpa nama parameter itu sendiri.

"Leo Tolstoy" | "Anna Karenina" | 1873
Data dalam format ini membutuhkan ruang beberapa kali lebih sedikit daripada file JSON lengkap. Tentu saja, ada format serialisasi lain, tetapi Anda tidak perlu mengetahui semuanya sekarang :) Ada baiknya jika Anda sudah familiar dengan format standar industri saat mengembangkan aplikasi, dan mengingat kelebihannya dan perbedaannya satu sama lain. lain. Dan dengan ini, pelajaran kita akan berakhir :) Jangan lupa selesaikan beberapa tugas hari ini! Sampai Lain waktu! :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION