JavaRush /Java Blog /Random-ID /Format Serialisasi di Java

Format Serialisasi di Java

Dipublikasikan di grup Random-ID
Halo! Mari kita bicara tentang serialisasi di Java. Anda mungkin ingat bahwa kami sudah mengadakan kuliah tentang serialisasi. Itu benar :) Ini yang pertama Dan ini yang kedua Jika Anda tidak ingat betul cara kerja serialisasi, mengapa diperlukan, dan alat apa saja yang tersedia di Java, Anda dapat membaca sekilas ceramah ini. Kuliah hari ini akan bersifat teoretis, dan di dalamnya kita akan melihat lebih dekat format serialisasi. Format serialisasi di Java - 1Pertama, mari kita ingat apa itu serialisasi. Serialisasi adalah proses menyimpan keadaan suatu objek ke dalam urutan byte. Deserialisasi adalah proses merekonstruksi suatu objek dari byte-byte ini. Objek Java dapat dibuat serial dan ditransfer melalui jaringan (misalnya, ke komputer lain). Jadi, urutan byte yang sama dapat direpresentasikan dalam format yang berbeda. Anda sudah familiar dengan ini dari penggunaan komputer sehari-hari. Misalnya, e-book (atau dokumen teks sederhana) yang Anda baca dapat ditulis dalam berbagai format berbeda:
  • docx (format Microsoft Word);
  • pdf (format Adobe);
  • mobi (biasa digunakan di perangkat Amazon Kindle);
  • dan masih banyak lagi (ePub, djvu, fb2...).
Tampaknya tugasnya sama: menyajikan teks dalam bentuk yang dapat dibaca manusia. Tetapi orang-orang telah menemukan banyak sekali format. Bahkan tanpa merinci pekerjaan mereka, kita dapat berasumsi bahwa hal ini dilakukan karena suatu alasan. Masing-masing dari mereka mungkin memiliki kelebihan dan kekurangan tersendiri dibandingkan yang lain. Mungkin format serialisasi dibuat berdasarkan prinsip yang sama? Baiklah, tebakan yang bagus, pelajar! :) Memang begitu adanya. Faktanya adalah mengirimkan data melalui jarak jauh adalah hal yang agak rumit, dan ada banyak faktor di dalamnya. Siapa yang mengirimkan data? Di mana? Volume berapa? Apakah pihak penerima akan berupa orang atau mesin (yaitu apakah datanya dapat dibaca manusia)? Perangkat jenis apa yang akan membaca data? Tentu saja situasinya berbeda. Ini adalah satu hal ketika Anda perlu mentransfer gambar 500KB dari satu ponsel cerdas ke ponsel lainnya. Dan ini sangat berbeda ketika kita berbicara tentang 500 terabyte data bisnis yang perlu dikompresi seefisien mungkin dan pada saat yang sama ditransfer secepat mungkin. Mari kita lihat format serialisasi utama dan lihat kelebihan dan kekurangan masing-masing!

JSON

Notasi Objek JavaScript. Anda sudah sedikit mengenalnya! Kita membicarakannya di kuliah ini , dan kita melihat serialisasi di JSON di sini . Itu mendapat namanya karena suatu alasan. Objek Java yang dikonversi ke JSON sebenarnya terlihat persis seperti objek JavaScript. Anda tidak perlu mengetahui JavaScript untuk memahami arti objek kami:
{
   "title": "Война и мир",
   "author": "Лев Толстой",
   "year": 1869
}
Tidak perlu melewatkan satu objek pun. JSON juga bisa berisi array objek:
[
 {
   "title": "Война и мир",
   "author": "Лев Толстой",
   "year": 1869
 },

 {
   "title": "Бесы",
   "author": "Федор Достоевский",
   "year": 1872
 },

 {
   "title": "Чайка",
   "author": "Антон Чехов",
   "year": 1896
 }
]
Karena JSON adalah objek JavaScript, JSON mendukung format data JavaScript berikut:
  • string;
  • angka (angka);
  • benda (objek);
  • array (array);
  • nilai boolean (benar dan salah);
  • batal.
Apa kelebihan yang dimiliki JSON?
  1. Format yang dapat dibaca manusia. Ini jelas merupakan keuntungan jika pengguna akhir Anda adalah manusia. Misalnya, server Anda menyimpan database dengan jadwal penerbangan. Klien manusia meminta data dari database ini menggunakan aplikasi web sambil duduk di rumah di depan komputer. Karena Anda perlu menyediakan data dalam format yang dapat dia pahami, JSON adalah solusi yang bagus.

  2. Kesederhanaan. Bisa dibilang dasar :) Di atas kami memberikan contoh dua file JSON. Dan bahkan jika Anda belum pernah mendengar tentang keberadaan JavaScript (apalagi objek-objeknya), Anda dapat dengan mudah memahami jenis objek apa yang dijelaskan di sana.
    Seluruh dokumentasi JSON adalah satu halaman web dengan beberapa gambar.

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

Misalnya, Anda sudah bekerja dengan perpustakaan Jackson dalam kuliah di mana kita belajar membuat serialisasi objek Java ke dalam JSON. Namun selain Jackson, misalnya, ada GSON - perpustakaan yang sangat nyaman dari Google.

YAML

Pada awal keberadaannya, ini adalah singkatan dari Yet Another Markup Language - “bahasa markup lain.” Pada saat itu diposisikan sebagai pesaing XML. Sekarang, seiring berjalannya waktu, itu adalah singkatan dari “YAML Ain't Markup Language” (“YAML bukan bahasa markup”). Seperti apa dia? Bayangkan kita perlu membuat 3 kelas karakter untuk permainan komputer kita: Warrior, Mage dan Thief. Mereka akan memiliki ciri-ciri sebagai berikut: kekuatan, kelincahan, daya tahan, dan seperangkat senjata. Seperti inilah tampilan file YAML kami dengan deskripsi kelas:
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 dalam elemen lainnya. Kita dapat mengontrol penumpukan dengan menggunakan sejumlah spasi untuk menunjukkan setiap level. Apa kelebihan format YAML?
  1. Dapat dibaca manusia. Sekali lagi, meskipun Anda melihat file yaml tanpa deskripsi, Anda dapat dengan mudah memahami objek apa yang dijelaskan di sana. YAML adalah seberapa baik keterbacaan manusia sehingga halaman utama yaml.org adalah file yaml biasa :)

  2. Kekompakan. Struktur file dibentuk dengan spasi: tidak perlu menggunakan tanda kurung atau tanda kutip.

  3. Dukungan untuk struktur data asli bahasa pemrograman. Keuntungan besar YAML dibandingkan JSON dan banyak format lainnya adalah ia mendukung struktur data yang berbeda. Diantara mereka:

    • !!map
      Kumpulan pasangan kunci:nilai yang tidak berurutan tanpa kemungkinan duplikat;

    • !!omap
      Urutan pasangan kunci:nilai yang berurutan tanpa kemungkinan duplikat;

    • !!pairs:
      Urutan pasangan kunci:nilai dengan kemungkinan duplikat;

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

    • !!seq
      Urutan nilai arbitrer;

    Beberapa struktur berikut mungkin sudah tidak asing lagi bagi Anda dari Jawa! :) Berkat fitur ini, Anda dapat membuat serial berbagai struktur data dari bahasa pemrograman ke dalam format YAML.

  4. Kemampuan untuk menggunakan jangkar dan alias

    Terjemahan dari kata "anchor" dan "alias" - "anchor" dan "pseudonym". Pada prinsipnya, ini menjelaskan esensi istilah-istilah ini di YAML dengan cukup akurat.

    Mereka memungkinkan Anda mengidentifikasi elemen dalam file yaml, dan merujuknya ke seluruh file jika elemen tersebut muncul berulang kali. Jangkar dibuat menggunakan simbol &dan alias dibuat menggunakan *.

    Katakanlah kita memiliki file dengan deskripsi buku Leo Tolstoy. Untuk menghindari penulisan nama penulis secara manual setiap saat, 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 kita membaca file ini dengan parser tertentu, nilai "Leo Tolstoy" akan diganti di tempat yang tepat menggantikan alias kita.

  5. Anda dapat menyematkan data dalam format lain di YAML. 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 apa yang disebut 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 tidak kalah dengan JSON dan YAML (jika kita berbicara tentang penggunaan dalam proyek nyata). Kami memiliki kuliah terpisah tentang XML .

BSON (biner JSON)

Seperti namanya, ini sangat mirip dengan JSON, tetapi tidak dapat dibaca manusia dan beroperasi pada data dalam format biner. Hal ini membuatnya sangat nyaman untuk menyimpan dan mentransfer gambar dan lampiran lainnya. Selain itu, BSON mendukung beberapa tipe data yang tidak tersedia di JSON. Misalnya, Anda dapat menulis tanggal (dalam format milidetik) atau bahkan sepotong kode JavaScript ke dalam file BSON. Basis data NoSQL yang populer, MongoDB, menyimpan informasi dalam format BSON.

Protokol berdasarkan posisi

Dalam beberapa situasi, kita perlu mengurangi jumlah data yang ditransfer secara drastis (misalnya, jika ada banyak data dan kita perlu mengurangi bebannya). Dalam situasi ini, kita dapat menggunakan protokol berbasis posisi , yaitu meneruskan nilai parameter tanpa nama parameter itu sendiri.
"Leo Tolstoy" | "Anna Karenina" | 1873
Data dalam format ini memakan lebih sedikit ruang dibandingkan file JSON lengkap. Tentu saja, ada format serialisasi lainnya, tetapi Anda tidak perlu mengetahui semuanya sekarang :) Ada baiknya Anda memahami format yang sekarang menjadi standar industri untuk pengembangan aplikasi, dan mengingat kelebihan dan perbedaannya satu sama lain. . Dan kuliah kita telah berakhir :) Jangan lupa selesaikan beberapa soal hari ini! Sampai jumpa lagi! :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION