Artikel ditulis pada bulan September 2017
JSON telah mengambil alih dunia. Jika saat ini ada dua aplikasi yang saling berkomunikasi melalui Internet, maka kemungkinan besar mereka melakukannya menggunakan JSON. Standar ini diterima oleh semua pemain utama: dari sepuluh API Web paling populer, yang dikembangkan terutama oleh perusahaan besar seperti Google, Facebook dan Twitter,
hanya satu API yang mentransfer data dalam XML, bukan JSON. Misalnya, Twitter mendukung XML hingga 2013, ketika merilis versi baru API secara eksklusif di JSON. Di antara pengembang lain, JSON juga populer: menurut Stack Overflow,
lebih banyak pertanyaan yang diajukan tentang JSON daripada tentang format pertukaran data lainnya .
XML masih hidup dan banyak digunakan. Misalnya, dalam format web SVG, RSS dan Atom. Jika penulis aplikasi Android ingin menyatakan bahwa ia memerlukan izin dari pengguna, ia melakukan ini dalam manifes aplikasi yang ditulis dalam XML. Dan XML bukan satu-satunya alternatif JSON: beberapa pengembang memilih untuk Google YAML atau Protokol Buffer. Tetapi format-format ini jauh dari sepopuler JSON, yang sekarang telah menjadi standar de facto untuk bertukar data antar program melalui Internet.
Dominasi JSON luar biasa, sejak tahun 2005 semua orang mendiskusikan potensi "JavaScript dan XML asinkron" daripada "asinkron JavaScript dan JSON". Tentu saja, ada kemungkinan bahwa ini tidak mengatakan apa-apa tentang popularitas relatif dari dua format, hanya AJAX yang tampaknya menjadi singkatan yang lebih menarik daripada AJAJ. Tetapi meskipun pada tahun 2005 beberapa orang sudah menggunakan JSON alih-alih XML (beberapa sebenarnya), Anda masih bertanya-tanya bagaimana XML bisa jatuh begitu tajam sehingga satu dekade kemudian, frasa “Asynchronous JavaScript and XML” menyebabkan senyum ironis. Apa yang terjadi selama dekade ini? Bagaimana JSON mengganti XML di banyak aplikasi? Dan siapa yang menemukan format data ini, yang bergantung pada insinyur dan sistem di seluruh dunia?
Kelahiran JSON
Pesan JSON pertama dikirim pada April 2001 dari komputer di garasi dekat San Francisco. Sejarah telah mempertahankan nama-nama mereka yang terlibat dalam acara tersebut: Douglas Crockford dan Chip Morningstar, salah satu pendiri perusahaan konsultan teknologi, State Software.
Keduanya telah mengembangkan aplikasi AJAX jauh sebelum istilah AJAX muncul. Tetapi dukungan aplikasi di browser tidak terlalu baik. Mereka ingin mentransfer data ke aplikasi mereka setelah pemuatan awal halaman, tetapi tidak menemukan cara yang akan bekerja di semua browser.
Sulit dipercaya hari ini, tetapi Internet Explorer adalah browser paling canggih pada tahun 2001. Sejak 1999, Internet Explorer 5 telah mendukung bentuk awal XMLHttpRequest melalui ActiveX. Crockford dan Morningstar dapat menggunakan teknologi ini untuk mengambil data dalam aplikasi, tetapi itu tidak berfungsi di Netscape 4. Jadi, saya harus mencari format berbeda yang berfungsi di kedua browser.
Pesan JSON pertama terlihat seperti ini:
<html><head><script> document.domain = 'fudco'; parent.session.receive( { to: "session", do: "test", text: "Hello world" } ) </script></head></html>
Hanya sebagian kecil dari pesan yang menyerupai JSON seperti yang kita kenal sekarang. Pesan itu sendiri sebenarnya adalah dokumen HTML dengan beberapa baris JavaScript. Bagian seperti JSON hanyalah literal JavaScript untuk fungsi
receive()
.
Crockford dan Morningstar memutuskan untuk menyalahgunakan bingkai HTML untuk mengirim data. Untuk bingkai, Anda dapat menentukan URL yang mengembalikan dokumen HTML yang mirip dengan yang di atas. Ketika HTML diterima, JavaScript diluncurkan dan mengembalikan literal ke aplikasi. Ini berfungsi dengan syarat bahwa perlindungan browser dengan hati-hati dielakkan untuk mencegah anak dari mengakses jendela induk: seperti yang Anda lihat, Crockford dan Morningstar secara eksplisit mengatur domain dokumen. Teknik ini kadang-kadang disebut bingkai tersembunyi;
sering digunakan pada akhir 90-an sebelum XMLHttpRequest normal .
Apa yang mengejutkan tentang posting JSON pertama adalah bahwa sama sekali tidak jelas bahwa ini adalah penggunaan pertama dari jenis format data baru. Ini hanya JavaScript! Faktanya, ide menggunakan JavaScript sedemikian sederhana sehingga Crockford sendiri percaya bahwa dia bukan yang pertama melakukannya - dia mengklaim bahwa seseorang di Netscape menggunakan literal array JavaScript untuk mengirimkan informasi
pada tahun 1996 . Posting dalam JavaScript biasa tidak memerlukan penguraian khusus. Semuanya dilakukan oleh penerjemah JavaScript.
Bahkan, pesan JSON pertama dalam sejarah memiliki masalah dengan penerjemah. JavaScript menyimpan banyak kata - 64 kata dicadangkan dalam ECMAScript 6 - dan Crockford dan Morningstar tanpa sadar menggunakannya dalam pesan mereka: yaitu, kata yang dipesan
do
sebagai kunci. Karena JavaScript memiliki begitu banyak kata yang disimpan, Crockford memutuskan untuk tidak menghindarinya, tetapi cukup mengutip semua kunci JSON. Kunci yang dikutip dianggap oleh penerjemah JavaScript sebagai string, sehingga Anda dapat menggunakan kata-kata yang dipesan dengan aman. Inilah sebabnya mengapa kunci JSON masih dikutip.
Crockford dan Morningstar menyadari bahwa metode baru dapat digunakan dalam semua jenis aplikasi. Mereka ingin memanggil format JSML (JavaScript Markup Language), tetapi ternyata singkatan itu sudah sibuk dengan sesuatu yang disebut Java Speech Markup Language. Oleh karena itu, kami memilih Notasi Objek Javascript, yaitu JSON. Mereka mulai menawarkan format kepada pelanggan mereka, tetapi segera menjadi jelas bahwa mereka tidak mengambil risiko menggunakan teknologi yang tidak dikenal tanpa spesifikasi resmi. Jadi Crockford memutuskan untuk menulisnya.
Pada tahun 2002, Crockford membeli domain
JSON.org , menerbitkan sintaks JSON, dan contoh implementasi parser. Situs web ini masih berfungsi, meskipun sekarang menunjukkan tautan ke standar JSON ECMA yang diadopsi pada 2013. Selain meluncurkan situs, Crockford hampir tidak melakukan apa pun untuk mempromosikan JSON, tetapi segera ada implementasi parser JSON dalam berbagai bahasa pemrograman. Awalnya, JSON jelas terkait dengan JavaScript, tetapi kemudian menjadi jelas bahwa itu sangat cocok untuk bertukar data antara pasangan bahasa yang sewenang-wenang.
AJAX salah
JSON mendapat dorongan besar di tahun 2005. Kemudian seorang desainer dan pengembang bernama Jesse James Garrett menciptakan istilah AJAX dalam
artikelnya . Dia mencoba untuk menekankan bahwa AJAX bukan hanya satu teknologi baru, tetapi "beberapa dengan caranya sendiri teknologi yang baik dikombinasikan dengan cara-cara baru yang kuat." Garrett menyebut AJAX pendekatan baru untuk pengembangan aplikasi web. Dalam sebuah posting blog, ia menjelaskan bagaimana pengembang dapat menggunakan JavaScript dan XMLHttpRequest untuk membuat aplikasi yang lebih interaktif. Dia menyebut Gmail dan Flickr contoh situs yang mengandalkan metode AJAX.
Tentu saja, "X" dalam AJAX berarti XML. Tetapi dalam pertanyaan dan jawaban berikutnya, Garrett menyebut JSON alternatif yang bisa diterima. Dia menulis bahwa "XML adalah alat pertukaran data yang paling fungsional untuk klien AJAX, tetapi efek yang sama dapat dicapai dengan menggunakan Notasi Objek Javascript atau format penataan data serupa."
Para pengembang benar-benar menemukan bahwa mereka dapat dengan mudah menggunakan JSON untuk membuat aplikasi AJAX, dan banyak yang memilihnya daripada XML. Ironisnya, minat terhadap AJAX telah menyebabkan ledakan popularitas JSON. Sekitar waktu ini, JSON menarik perhatian blogosphere.
Pada tahun 2006, Dave Weiner, seorang blogger yang produktif dan pembuat sejumlah teknologi XML, seperti RSS dan XML-RPC,
mengeluh bahwa JSON menciptakan kembali XML tanpa alasan yang jelas:
“Tentu saja, saya dapat menulis prosedur untuk mem-parsing [JSON], tetapi lihat seberapa jauh mereka dalam menciptakan kembali teknologi: untuk beberapa alasan, XML tidak cukup baik untuk mereka (saya heran mengapa). Siapa yang menciptakan parodi ini? Ayo cari pohon dan gantung pria. Sekarang juga. "
Sangat mudah untuk memahami kekecewaan Weiner. XML tidak pernah dicintai secara khusus. Bahkan Weiner sendiri
mengatakan dia tidak suka XML . Tetapi XML dirancang sebagai sistem universal untuk aplikasi apa pun yang dapat Anda bayangkan. XML sebenarnya adalah bahasa logam yang memungkinkan Anda menentukan bahasa domain untuk aplikasi individual - misalnya, RSS dan SOAP. Weiner percaya bahwa penting untuk membangun konsensus untuk semua manfaat yang diberikan oleh format pertukaran umum. Menurutnya, fleksibilitas XML mampu memenuhi segala kebutuhan. Namun JSON adalah format yang tidak menawarkan kelebihan dibandingkan XML, dengan pengecualian penghapusan sampah, yang menjadikan XML sangat fleksibel.
Crockford melihat posting blog Weiner dan berkomentar. Menanggapi tuduhan bahwa JSON menciptakan kembali XML, Crockford menulis:
" Menemukan kembali
roda itu baik karena Anda dapat membuatnya bulat .
"JSON vs XML
Pada 2014, JSON secara resmi diakui sebagai standar ECMA dan RFC. Dia mendapatkan tipe MIME-nya. JSON telah memasuki liga besar.
Mengapa JSON menjadi jauh lebih populer daripada XML?
Di
JSON.org, Crockford mencantumkan beberapa
manfaat JSON atas XML . Dia menulis bahwa JSON lebih mudah dipahami oleh orang dan mesin, karena sintaksnya minimal dan strukturnya dapat diprediksi. Blogger lain
menyebutkan verbositas XML dan "pajak tag". Setiap tag pembuka dalam XML harus memiliki tag penutup, yang berarti banyak informasi yang berlebihan. Ini membuat XML jauh lebih besar daripada dokumen JSON yang setara, tetapi yang lebih penting, karena ini, dokumen XML lebih sulit dibaca.
Crockford
menyebut keuntungan besar lain dari JSON: bahwa JSON awalnya dirancang sebagai format untuk bertukar informasi terstruktur antar program. Meskipun XML digunakan untuk tujuan yang sama, pada awalnya dikembangkan sebagai bahasa markup dokumen. Itu tumbuh dari SGML (Standard Generalized Markup Language), yang, pada gilirannya, berevolusi dari bahasa markup Scribe, yang ditujukan untuk teks markup, seperti LaTeX. Dalam XML, di dalam tag, mungkin ada yang disebut "konten campuran," yaitu, teks dengan tag tertanam di sekitar kata atau frasa. Itu menyerupai editor yang menandai naskah dengan penanda merah atau biru, semacam metafora untuk bahasa markup. JSON, di sisi lain, tidak mendukung analog yang tepat dari konten campuran, yang berarti menyederhanakan struktur. Dokumen tersebut paling baik direpresentasikan dalam bentuk pohon, tetapi mengabaikan gagasan dokumen tersebut, Crockford mampu membatasi JSON ke kamus dan array elemen yang akrab yang digunakan oleh semua programmer untuk membuat program mereka.
Akhirnya, tebakan saya sendiri adalah bahwa orang tidak suka kompleksitas XML, dan itu benar-benar karena keragamannya. Pada pandangan pertama, sulit untuk membedakan antara XML itu sendiri dan sub-bahasanya, seperti RSS, ATOM, SOAP, atau SVG. Baris pertama dari dokumen XML biasa menetapkan versi XML, dan kemudian subbahasa tertentu yang harus cocok dengan dokumen XML. Ini adalah banyak pilihan dibandingkan dengan JSON, yang sangat sederhana sehingga tidak ada versi baru dari spesifikasi JSON yang akan ditulis. Pengembang XML, dalam upaya untuk membuat format pertukaran data tunggal untuk semuanya, menjadi korban perangkap programmer klasik: komplikasi teknis yang berlebihan. XML sangat umum sehingga sulit digunakan untuk sesuatu yang sederhana.
Pada tahun 2000, sebuah kampanye mulai membawa HTML sesuai dengan standar XML. Menerbitkan spesifikasi untuk HTML yang sesuai dengan XML, yang kemudian dikenal sebagai XHTML. Beberapa pembuat browser segera mulai mendukung standar baru, tetapi dengan cepat menjadi jelas bahwa masyarakat umum yang bekerja dengan HTML tidak ingin mengubah kebiasaan mereka. Standar baru ini membutuhkan validasi XHTML yang lebih ketat daripada kebiasaan untuk HTML, tetapi terlalu banyak situs bergantung pada aturan HTML gratis. Pada 2009, para aktivis telah berhenti mencoba untuk menulis XHTML versi kedua ketika menjadi jelas bahwa masa depan terletak pada standar HTML5, yang tidak memerlukan kepatuhan XML.
Jika upaya XHTML berhasil, maka mungkin XML akan menjadi format data umum, seperti yang diharapkan pengembangnya. Bayangkan sebuah dunia di mana dokumen HTML dan respons API memiliki struktur yang persis sama. Di dunia seperti itu, JSON mungkin tidak sepopuler sekarang ini. Tapi saya menganggap kegagalan XHTML semacam kekalahan moral bagi kubu XML. Jika XML tidak membantu HTML, mungkin ada alat yang lebih baik untuk aplikasi lain. Di dunia nyata, mudah untuk memahami mengapa format JSON yang sederhana dan sangat terspesialisasi sangat sukses.