CodeGym /Blog Jawa /Acak /Format serialisasi Jawa
John Squirrels
tingkat
San Francisco

Format serialisasi Jawa

Diterbitake ing grup
Hi! Ayo dadi pirembagan bab serialization. Sampeyan mbokmenawa elinga yen kita wis sinau babagan serialisasi. Lan kita iya :) Punika pisanan Lan iki kaloro. Yen sampeyan ora ngelingi uga carane serialization bisa, kok serialization dibutuhake, lan apa alat Jawa kanggo serialization, sampeyan bisa mbukak liwat pawulangan iki. Pawulangan dina iki bakal babagan teori. Kita bakal nliti format serialisasi. Pisanan, ayo ngelingi apa serialisasi. Serialisasi yaiku proses nyimpen kahanan obyek ing urutan bita. Deserialisasi yaiku proses mulihake obyek saka bita kasebut. A obyek Jawa bisa serialized lan dikirim liwat jaringan (contone, kanggo komputer liyane). Urutan bait bisa diwakili ing macem-macem format. Sampeyan ngerti konsep iki saka nggunakake komputer biasa. Contone, buku elektronik (utawa dokumen teks prasaja) bisa ditulis ing macem-macem format:
  • docx (format Microsoft Word);
  • pdf (format Adobe);
  • mobi (umume digunakake ing piranti Amazon Kindle);
  • lan akeh liyane (ePub, djvu, fb2, lsp).
Ing saben kasus, tujuane katon padha: nampilake teks ing wangun sing bisa diwaca manungsa. Isih, wong wis nemokake macem-macem format. Tanpa nerangake rincian karyane, kita bisa nganggep manawa dheweke duwe alasan sing apik. Saben format duwe kaluwihan lan cacat dhewe dibandhingake liyane. Mungkin macem-macem format serialisasi digawe miturut prinsip sing padha? Tebakan sing apik banget, siswa! :) Sing bener. Kasunyatane yaiku ngirim data liwat kabel (utawa kanthi nirkabel) minangka bisnis sing angel, lan ana akeh faktor. Sapa sing ngirim data? Ing ngendi? Volume apa? Apa panampa bakal dadi manungsa utawa komputer (yaiku data kudu bisa diwaca manungsa)? Piranti apa sing bakal maca data? Temenan, kahanan kasebut beda-beda. Iku salah siji bab kanggo ngirim gambar 500 KB saka siji smartphone liyane. Lan iku beda banget yen kita ngomong babagan 500 terabyte data bisnis sing kudu dikompres kanthi optimal lan dikirim kanthi cepet. Ayo dadi kenalan karo format serialisasi utama lan nimbang kaluwihan lan cacat saben wong!

JSON

Notasi Objek JavaScript. Sampeyan wis ngerti sethithik babagan format iki! Kita ngomong babagan iki ing wulangan iki , lan kita nutupi serialisasi menyang JSON ing kene . Iki entuk jenenge kanthi alasan. Objek Java sing diowahi dadi JSON katon persis kaya obyek ing JavaScript. Sampeyan ora perlu ngerti JavaScript kanggo ngerti obyek kita:

{
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
}
Kita ora diwatesi kanggo ngirim obyek siji. Format JSON uga bisa makili macem-macem obyek:

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

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

 {
   "title": "The Seagull",
   "author": "Anton Chekhov",
   "year": 1896
 }
]
Amarga JSON makili obyek JavaScript, iku ndhukung format data JavaScript ing ngisor iki:
  • senar;
  • angka;
  • obyek;
  • susunan;
  • booleans (bener lan salah);
  • null.
Apa keuntungan saka JSON?
  1. Format sing bisa diwaca manungsa. Iki minangka kauntungan sing jelas yen pangguna pungkasan sampeyan manungsa. Contone, umpamane server sampeyan duwe database kanthi jadwal penerbangan. Pelanggan manungsa, lungguh ing komputer ing omah, njaluk data saka database iki nggunakake aplikasi web. Amarga sampeyan kudu nyedhiyakake data kanthi format sing bisa dingerteni, JSON minangka solusi sing apik.

  2. Kesederhanaan. Iku super prasaja :) Ndhuwur, kita menehi conto rong file JSON. Lan sanajan sampeyan durung krungu babagan JavaScript (apa maneh obyek JavaScript), sampeyan bisa kanthi gampang ngerti jinis obyek sing diterangake ing kono.
    Kabeh dokumentasi JSON kalebu kaca web kanthi sawetara gambar.

  3. Panggunaan sing nyebar. JavaScript minangka basa front-end sing dominan, lan nduweni syarat dhewe. Nggunakake JSON iku kudu. Mulane, akeh layanan web nggunakake JSON minangka format ijol-ijolan data. Saben IDE modern ndhukung format JSON (kalebu IntelliJ IDEA). Akeh perpustakaan wis ditulis kanggo kabeh jinis basa pamrograman supaya bisa nggarap JSON.

Contone, sampeyan wis kerjo karo perpustakaan Jackson ing pawulangan ngendi kita sinau kanggo serialize obyek Jawa menyang JSON. Nanging saliyane Jackson, kita duwe, contone, GSON , sing minangka perpustakaan sing trep banget saka Google.

YAML

Wiwitane, YAML ngadeg kanggo "Basa Markup Liyane". Nalika diwiwiti, dipanggonke minangka pesaing XML. Saiki, kanthi suwene wektu, YAML wis dadi "YAML Ora Markup Language". Apa iku persis? Coba bayangake yen kita kudu nggawe 3 kelas kanggo makili karakter ing game komputer: Warrior, Mage, lan Thief. Dheweke bakal duwe karakteristik ing ngisor iki: kekuwatan, ketangkasan, ketahanan, sakumpulan senjata. Mangkene file YAML sing nggambarake 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 nduweni struktur wit: sawetara unsur dilebokake ing liyane. Kita bisa ngontrol nesting nggunakake sawetara spasi, sing digunakake kanggo nunjukake saben level. Apa kaluwihan saka format YAML?
  1. Bisa diwaca manungsa. Maneh, sanajan ndeleng file YAML tanpa katrangan, sampeyan bisa kanthi gampang ngerti obyek sing diterangake. YAML bisa diwaca manungsa, mula situs web yaml.org minangka file YAML biasa :)

  2. Kekompakan. Struktur file digawe nggunakake spasi: ora perlu nggunakake kurung utawa tanda petik.

  3. Dhukungan kanggo struktur data asli kanggo basa pamrograman. Kauntungan gedhe saka YAML tinimbang JSON lan akeh format liyane yaiku ndhukung macem-macem struktur data. Iki kalebu:

    • !!map
      Sakumpulan pasangan nilai kunci sing ora diurutake sing ora bisa duwe duplikat;

    • !!omap
      Urutan urutan pasangan kunci-nilai sing ora bisa duwe duplikat;

    • !!pasangan:
      Urutan pasangan nilai kunci sing bisa duwe duplikat;

    • !!set
      Urutan nilai sing ora padha karo siji liyane;

    • !!seq
      Urutan nilai sing kawenang-wenang;

    Sampeyan bakal ngerti sawetara struktur iki saka Jawa! :) Iki tegese macem-macem struktur data saka basa program bisa serialized menyang YAML.

  4. Kemampuan kanggo nggunakake jangkar lan alias

    Tandha iki ngidini sampeyan ngenali sawetara unsur ing file YAML, banjur deleng ing file liyane yen kedadeyan bola-bali. Anchor digawe nggunakake simbol & , lan alias digawe nggunakake * .

    Upaminipun kita duwe file njlentrehke buku dening Leo Tolstoy. Supaya ora nulis jeneng penulis kanggo saben buku, kita mung nggawe jangkar leo lan ngrujuk nganggo alias nalika kita butuh:

    
    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
    

    Nalika file iki diurai, Nilai "Leo Tolstoy" diganti ing panggonan tengen ngendi kita duwe alias kita.

  5. YAML bisa masang data ing format liyane. Contone, 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 liyane

XML

Format iki adhedhasar wit tag.

<book>
   <title>Harry Potter and the Philosopher’s Stone</title>
   <author>J. K. Rowling</author>
   <year>1997</year>
</book>
Saben unsur kasusun saka tag pambuka lan tutup (<> lan </>). Saben unsur bisa duwe unsur nested. XML minangka format umum sing padha karo JSON lan YAML (yen kita ngomong babagan proyek nyata). Kita duwe pawulangan kapisah babagan XML .

BSON (JSON biner)

Minangka jeneng kasebut, BSON meh padha karo JSON, nanging ora bisa diwaca manungsa lan nggunakake data binar. Akibaté, iku apik banget kanggo nyimpen lan nransfer gambar lan lampiran liyane. Kajaba iku, BSON ndhukung sawetara jinis data sing ora kasedhiya ing JSON. Contone, file BSON bisa kalebu tanggal (ing format milidetik) utawa malah potongan kode JavaScript. Basis data MongoDB NoSQL sing populer nyimpen informasi ing format BSON.

Protokol adhedhasar posisi

Ing sawetara kahanan, kita kudu nyuda drastis jumlah data sing dikirim (contone, yen kita duwe akeh data lan kudu ngurangi beban). Ing kahanan iki, kita bisa nggunakake protokol adhedhasar posisi, yaiku, ngirim nilai parameter tanpa jeneng paramèter kasebut.

"Leo Tolstoy" | "Anna Karenina" | 1873
Data ing format iki njupuk spasi kaping pirang-pirang kurang saka file JSON lengkap. Mesthi, ana format serialization liyane, nanging sampeyan ora perlu ngerti kabeh saiki :) Iku apik yen sampeyan menowo karo format standar industri saiki nalika ngembangaken aplikasi, lan elinga kaluwihan lan carane padha beda-beda saka siji. liyane. Lan kanthi iki, pelajaran kita wis rampung :) Aja lali ngrampungake sawetara tugas dina iki! Nganti wektu sabanjure! :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION