BAB II DASAR TEORI Bab ini berisi dasar teori yang berhubungan dengan perancangan aplikasi antara lain mengenai android, PHP, database, dan web services. 2.1. Android Android adalah sekelompok perangkat lunak yang terdiri tidak hanya sistem operasi saja tetapi juga middleware dan aplikasi kunci [5]. Android pada awalnya dikembangkan oleh Android, Inc dan kemudian dibeli oleh Google, Inc pada tahun 2005. Sistem operasi ini dirilis secara resmi pada tahun 2007, bersamaan dengan didirikannya Open Handset Alliance, konsorsium dari berbagai perusahaan perangkat keras, perangkat lunak, dan telekomunikasi yang bertujuan untuk memajukan standar terbuka perangkat seluler. Platform Android disediakan melalui lisensi open source di bawah GNU, General Public License Versi 2 (GPLv2). 2.1.1. Arsitektur Android Secara garis besar arsitektur android dapat dijelaskan sebagai berikut: Layer Applications dan Widgets Layer ini berhubungan dengan aplikasi-aplikasi inti yang berjalan pada sistem operasi Android. Aplikasi – aplikasi inti ini seperti email, program SMS, kontak, kalender, browser, dan lain-lain. Semua aplikasi tersebut dibuat dengan menggunakan bahasa Java. Layer Applications Frameworks Applications Framework merupakan layer dimana para pembuat aplikasi menggunakan komponen-komponen yang ada di sini untuk membuat aplikasi mereka. Beberapa contoh komponen yang termasuk di dalam Applications Framework adalah Views, Content Provider, Resource Manager, Notification Manager, Activity Manager. Layer Libraries Android dilengkapi dengan beberapa paket pustaka yang terdapat pada C/C++ dengan standar Barkeley Software Distribution hanya setengah dari aslinya untuk tertanam pada Linux Kernel. Beberapa pustaka inti tersebut adalah sebagai berikut: - Media Libraries: Pustaka yang mendukung pemutaran dan perekaman berbagai macam format audio dan video. - Surfaces Manager: Mengelola akses ke subsistem layar dan menggabungkan secara halus lapisan grafis 2 dimensi dan 3 dimensi dari berbagai aplikasi. - Graphic Libraries: Pustaka untuk menjalankan tampilan. Di dalamnya terdapat SGL dan OPENGL untuk tampilan 2D dan 3D. - System C library: Pustaka sistem library C (libc) yang disesuaikan untuk perangkat embedded berbasis Linux. - SQLite: Mesin relational database yang ringan yang dapat digunakan oleh berbagai aplikasi. SSL dan Webkit: Pustaka untuk browser dan keamanan internet. Android Run Time Android Run Time merupakan layer yang membuat aplikasi android bisa dijalankan. Pada layer ini dibagi menjadi dua bagian yaitu: - Dalvik Virtual Machine : Sebuah mesin virtual berbasis register yang dioptimalkan untuk menjalankan fungsi-fungsi pada Android secara efisien. Dalvik VM menjalankan file Dalvik dalam format (.dex) dimana dioptimasi untuk penggunaan memori dengan minimal. Dalvik VM menjalankan class yang telah dikompilasi oleh kompiler Java dimana telah ditransformasi menjadi format (.dex). Dalvik VM ini bergantung pada kernel Linux untuk fungsi dasar seperti threading dan manajemen memori tingkat rendah. - Core Libraries : Aplikasi Android dibangun dalam bahasa Java, sementara Dalvik sebagai virtual mesinnya bukan Virtual Machine Java, sehingga diperlukan sebuah libraries yang berfungsi untuk menerjemahkan bahasa java/c dimana ditangani oleh Core Libraries. Linux Kernel Linux Kernel merupakan layer tempat keberadaan inti dari sistem operasi android. Layer ini berisi file-file sistem yang mengatur system processing, memory, resource, drivers, dan sistem android lainnya. Hal inilah yang membuat file sistem pada Android mirip dengan file sistem pada sistem operasi berbasis Linux. Kernel yang digunakan adalah kernel Linux versi 2.6, dan versi 3.x pada Android versi 4.0 ke atas. Arsitektur Android dapat dilihat pada Gambar 2.1. Gambar 2.1 Arsitektur Android [5] 2.1.2. Android SDK Android Software Development Kit (SDK) adalah sepaket alat pengembang yang digunakan untuk mengembangkan aplikasi pada platform Android dan menggunakan bahasa pemrograman Java. Android SDK dapat diunduh secara gratis dari situs resmi di http://www.developer.Android.com. Untuk menggunakan Android SDK dibutuhkan sebuah Integrated Development Environment (IDE) yaitu sebuah software pengembangan aplikasi dimana harus dilengkapi dengan Java Development Kit (JDK5 atau JDK6). IDE yang populer digunakan untuk mengembangkan aplikasi Android adalah Eclipse dan sudah mendapat dukungan langsung dari Google. Khusus pada Eclipse disediakan plugin khusus yaitu Android Development Tools (ADT) yang dirancang khusus untuk Eclipse. ADT mempermudah pengembang dalam membuat project aplikasi Android, membuat user interface aplikasi, dan melakukan debugging aplikasi. SDK Android dilengkapi juga dengan Android Virtual Device (AVD) yaitu emulator untuk menjalankan aplikasi yang dikembangkan. Android SDK juga mempunyai API level yang dapat dipilih sesuai dengan kebutuhan pengembang. API level akan mempengaruhi fasilitas yang bisa digunakan oleh android. Adapun versi-versi API level platform yang telah dirilis dapat dilihat pada tabel 2.1 [6]. Tabel 2.1. Versi Platform Android Versi Platform Android 5.1 Android 5.0 Android 4.4W Android 4.4 Android 4.3 Android 4.2 Android 4.1 Android 4.0.4 Android 4.0, 4.0.1, 4.0.2 Android 3.2 Android 3.1.x Android 3.0.x Android 2.3.3, 2.3.4 Android 2.3, 2.3.1, 2.3.2 Android 2.2.x Android 2.1.x Android 2.0.1 Android 2.0 Android 1.6 Android 1.5 API Level 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 Kode Versi LOLLIPOP LOLLIPOP_MR1 KITKAT_WATCH KITKAT JELLY_BEAN_MR2 JELLY_BEAN_MR1 JELLY_BEAN ICE_CREAM_SANDWICH_MR1 ICE_CREAM_SANDWICH HONEYCOMB_MR2 HONEYCOMB_MR1 HONEYCOMB GINGERBREAD_MR1 GINGERBREAD FROYO ECLAIR_MR1 ECLAIR_0_1 ECLAIR DONUT CUPCAKE Android 1.1 Android 1.0 2 1 BASE_1_1 BASE 2.1.3. Komponen Dasar Android Komponen aplikasi pada Android terdiri dari empat jenis komponen utama, yaitu : Activities Activities merupakan potongan kode executable yang menyajikan User Interface (UI) dimulai oleh pengguna maupun sistem operasi dan berjalan selama diperlukan. Activity biasanya sesuai dengan tampilan layar, masing-masing activity menunjukkan satu layar untuk pengguna. Activity yang tidak aktif dijalankan dapat dimatikan oleh sistem operasi untuk menghemat memori. Services Service tidak mempunyai GUI, melainkan dirancang untuk terus berjalan, jika diperlukan, independen dari aktivitas apapun. Contoh dari service adalah MP3 player yang akan terus memainkan file MP3 sesuai urutan file, walaupun pengguna menggunakan aplikasi lain. Content Providers Content Provider diciptakan untuk berbagi data dengan activity lain atau service . Sebuah Content Provider menggunakan antarmuka standar dalam bentuk URI untuk memenuhi permintaan data dari aplikasi lain Broadcast Receivers Broadcast Receiver merupakan komponen yang menerima dan bereaksi untuk menyiarkan pengumuman. Banyak siaran berasal dalam kode sistem, misalnya kartu SD sudah terpasang, sebuah pesan SMS datang, peringatan baterai lemah, dan lainlain. Aplikasi juga dapat melakukan siaran misalnya untuk membiarkan aplikasi lain tahu bahwa beberapa data telah diunduh ke perangkat dan tersedia sehingga dapat digunakan. 2.1.4. Daur Hidup Activity Activity dalam sistem dikelola sebagai activity stack. Ketika suatu activity dijalankan, activity tersebut diletakkan di stack paling atas dan menjadi activity yang berjalan. Activity sebelumnya akan berada dibawahnya di stack tersebut, dan tidak akan berpindah ke atas sampai keluar activity yang baru. Activity mempunyai empat keadaan [7]: Active/running, jika activity berada pada posisi atas stack. Pause, jika sebuah activity tidak dipakai pada suatu saat tertentu, namun masih terlihat. Ketika activity baru yang ditangani oleh sistem activity yang lama disebut pause dan masih berada di memori, bisa jadi suatu activity yang sudah keadaan pause tidak ada di memori karena keterbatasan memori Stopped, jika sebuah activity digantikan sepenuhnya oleh activity yang lain. Activity yang mengalami keadaan ini masih mempertahankan semua informasinya akan tetapi sudah tidak lagi dilihat oleh user maka jendela tersebut disembunyikan dan dapat dihilangkan oleh sistem ketika memori diperlukan untuk activity lain. Restart, jika activity pause atau stopped, sistem dapat men-drop activity ini dari sistem memori. Ketika user membutuhkan activity tersebut, activity akan kembali pada keadaan awal, artinya activity tersebut mengalami proses restart. Daur hidup activity Android bisa dilihat pada Gambar 2.2. Gambar 2.2 Daur Hidup Activity Secara umum dapat dijelaskan bahwa perulangan yang mungkin dialami oleh activity ada tiga, yaitu: entire lifetime yaitu activity yang terjadi mulai dari onCreate() sampai dengan onDestroy(). Biasanya activity ini akan dibuat setup global ketika mendefinisikannya. visible lifetime yaitu activity yang terjadi mulai dari onCreate() sampai dengan onStop(). foreground lifetime yaitu activity yang terjadi di antara onResume() dan onPause(). Untuk penjelasan fungsi callback pada daur hidup activity dapat dilihat pada tabel 2.2. Tabel 2.2. Method Callback Daur Hidup Activity[9] Method onCreate() onRestart() onStart() onResume() onPause() Deskripsi Dipanggil ketika activity pertama kali diciptakan. Pada method ini juga diinisialisasikan set up static seperti view, list data, dll. Selalu diikuti dengan onStart() Dipanggil setelah activity berhenti/ onStop() dan melakukan proses start lagi. Selalu diikuti dengan onStart() Dipanggil sebelum activity dapat dilihat oleh user. Diikuti dengan onResume() jika activity berjalan pada bagian depan (foreground) atau diikuti dengan onStop jika activity akan dihentikan. Dipanggil sebelum activity akan berinteraksi dengan user. Pada bagian ini activity berada pada stack paling atas. Selalu diikuti dengan onPause() Dipanggil ketika activity akan melanjutkan activity lain. Method ini tidak akan menyimpan data pada sistem, menghentikan proses yang menggunakan CPU. Diikuti dengan onResume() jika activity Killable Next Tidak onStart() Tidak onStart() Tidak onResume() onStop() Tidak onPause() Ya onResume() onStop() onStop() onDestroy() akan digunakan kembali oleh user atau diikuti dengan onStop jika activity tidak akan digunakan lagi oleh user. Dipanggil ketika activity tidak Ya digunakan atau terlihat oleh user. Diikuti dengan onRestart() jika activity akan digunakan kembali oleh user atau onDestroy() jika activity tidak lagi dibutuhkan Dipanggil ketika activity tidak lagi Ya dibutuhkan. onRestart() onDestroy() - 2.2. PHP: Hypertext Preprocessor PHP atau Hypertext Preprocessor adalah bahasa pemrograman sisi server yang didesain untuk pengembangan web dan juga digunakan sebagai bahasa pemrograman untuk tujuan umum. PHP dapat disisipkan ke dalam HTML. Sintaks PHP dikembangkan dengan mengacu pada bahasa C, Java, dan Perl. PHP digunakan untuk membangun sebuah situs web yang dinamis. PHP bersifat open source dan didistribusikan di bawah PHP License. PHP dapat dijalankan di berbagai sistem operasi seperti Linux, varian dari Unix, Windows, dan juga Mac OS. PHP juga dapat dijalankan pada berbagai web server seperti Apache atau IIS. PHP mendukung penggunaan database baik itu dari ekstensi yang disediakan oleh vendor database seperti MySQL, Microsoft SQL Server, PostgreSQL dan SQLite, atau dapat juga menggunakan abstraction layer seperti PDO, ODBC, DBA dan dbx. PHP bersifat server-side scripting, maka PHP harus dijalankan pada sebuah web server. Apache HTTP Server merupakan salah satu web server yang paling banyak digunakan karena memiliki fitur-fitur yang canggih seperti pesan kesalahan yang dapat dimodifikasi sendiri, autentikasi berbasis database, dan penggunaan GUI untuk mempermudah penanganan server. PHP dikembangkan menjadi lebih mudah digunakan dengan adanya framework. Salah satu framework yang terkenal adalah framework Codeigniter. Codeigniter menggunakan arsitektur Model-View-Controller. 2.2.1. Model-View-Controller (MVC) MVC adalah sebuah arsitektur perangkat lunak yang terbagi menjadi tiga bagian yang saling berhubungan yaitu manipulasi data (model), antarmuka pengguna (view), dan bagian yang menjadi kontrol (controller) dalam aplikasi [9]. Struktur dari MVC dapat dilihat pada Gambar 2.3. Gambar 2.3 Struktur MVC Penjelasan dari struktur MVC adalah sebagai berikut [10] Model Model adalah komponen pada MVC yang menampung data berdasarkan perintah dari controller dan ditampilkan di view. View View adalah komponen pada MVC yang menghasilkan presentasi ke pengguna berdasarkan perubahan dalam model. Controller Controller adalah komponen pada MVC yang dapat memberi perintah ke model maupun view. Controller menerima permintaan dari user untuk menampilkan halaman web tertentu melalui View, dan memproses inputan dari user dan menyimpannya pada database melalui Model. 2.2.2. Codeigniter Codeigniter adalah sebuah framework yang dikembangkan oleh EllisLab, Inc. dimana menyediakan toolkit untuk membangun website dengan menggunakan PHP. Framework secara sederhana dapat diartikan sebagai kumpulan fungsi-fungsi/ prosedurprosedur dan class-class yang sudah siap digunakan sehingga lebih mempermudah dan mempercepat dalam proses mengembangkan aplikasi. Codeigniter didistribusikan dengan bebas dibawah lisensi open source dari Apache/BSD. Codeigniter menggunakan pendekatan arsitektur Model-View-Controller. Proses aliran kerja pada codeigniter dapat dilihat pada Gambar 2.4. Gambar 2.4 Proses Kerja Codeigniter [11] Penjelasan proses kerja Codeigniter sebagai berikut [11]: Index.php berfungsi sebagai file pertama yang akan dibaca oleh program. Router akan memeriksa HTTP request untuk menentukan hal apa yang harus dilakukan oleh program. Cache file akan membuat sebuah website dapat dibuka dengan lebih cepat. Apabila dalam program sudah terdapat cache file maka file tersebut akan langsung dikirim ke browser. Cache file dapat melewati proses yang sebenarnya harus dilakukan oleh program Codeigniter. Security akan menyaring HTTP request dan data yang di submit oleh user sebelum file controller di load keseluruhan. Controller akan membuka file model, core libraries, helper, dan semua resources yang dibutuhkan dalam program tersebut. Proses terakhir, membaca semua program yang ada di dalam view file dan mengirimkannya ke browser supaya dapat dilihat oleh user. Apabila file view sudah ada yang di-cache maka file view baru yang belum ter-cache akan mengupdate file view yang sudah ada. 2.3. Database Database atau basis data adalah kumpulan potongan informasi yang terorganisir dan digunakan pada komputer [12]. Sebuah database memerlukan sistem untuk memasukkan, mengubah, menghapus dan memperoleh data yang disebut dengan Database Management System (DBMS). DBMS akan menentukan bagaimana data diatur, disimpan, diubah, dan diambil kembali. DBMS juga menerapkan mekanisme pengamanan data, pemakaian data secara bersama-sama oleh beberapa aplikasi, dan menjaga kehandalan data. Saat ini database juga sudah menerapkan model relasional dimana menyajikan data pada pengguna dalam bentuk relasional (ditampilkan dalam bentuk tabular, sebagai koleksi dari tabel dimana setiap tabel berisi sekumpulan baris dan kolom), dan menyediakan operator relasional untuk memanipulasi data dalam bentuk tabular. Sistem yang mengatur database relasional disebut dengan Relational Database Management System (RDBMS). RDBMS menggunakan bahasa khusus untuk mengakses atau melakukan manipulasi data yang dikenal dengan nama Structured Query Language (SQL). Contoh RDBMS yang digunakan pada skripsi ini adalah MySQL. 2.3.1. MySQL MySQL adalah sebuah sistem manajemen database relasional yang dikembangkan, didistribusikan, dan didukung oleh Oracle Corporation [13]. MySQL banyak digunakan sebagai database untuk aplikasi web dan sudah menjadi satu pada saat menginstall AMP paket. MySQL diciptakan dengan menggunakan bahasa C dan C++ dan mampu bekerja pada berbagai macam sistem operasi baik itu Windows, Linux, maupun MacOS. Banyak juga bahasa pemograman seperti Java, Perl, PHP, Python, ASP dan lain sebagainya yang telah menyediakan API dan library untuk dapat mengakses MySQL. Untuk melakukan administrasi data pada MySQL, dapat menggunakan modul dalam bentuk console dengan menggunakan perintah mysql atau mysqladmin. Terdapat juga terdapat perangkat lunak GUI seperti MySQL Workbench yang disediakan secara resmi oleh MySQL, dan juga perangkat lunak GUI lain yang disediakan oleh pihak ketiga. Selain itu juga terdapat perangkat lunak gratis berbasis web yang populer yaitu phpMyAdmin. 2.4. Web Service Web service adalah sistem perangkat lunak yang dirancang untuk mendukung interoperable interaksi mesin-ke-mesin melalui jaringan [14]. Web service menyediakan fungsi pada alamat jaringan melalui web yang selalu ada seperti pada konsep dari utility computing. Menurut W3C, web service didefinisikan sebagai suatu sistem perangkat lunak yang bertujuan untuk mendukung interaksi dan interoperabilitas antar mesin dalam sebuah jaringan. Web service mempunyai sebuah interface yang didefinisikan dalam suatu format machine-processible seperti schema ataupun Web service Description Language (WSDL). Sistem lain berinteraksi dengan web service melalui sebuah interface menggunakan pesan melalui HTTP dan format pertukaran data baik itu XML maupun JSON. Web service tidak mengembalikan interface yang dapat langsung dikonsumsi oleh user atau dalam kata lain tidak mengembalikan layanan dalam bentuk kode-kode HTML, tetapi web service mengembalikan layanan berupa format XML ataupun JSON yang berorientasi pada data dan tidak dapat dikonsumsi secara langsung oleh user. Web service juga bertujuan untuk meningkatkan kolaborasi antara perusahaan dan pemrogram yang memungkinkan sebuah fungsi dalam web service dapat digunakan di aplikasi lain tanpa perlu mengetahui isi program di dalamnya. Web service berjalan di port 80 yang merupakan protokol HTTP sehingga web service tidak memerlukan konfigurasi khusus pada sisi firewall. Arsitektur dari web service secara sederhana dapat dilihat pada gambar 2.5. Gambar 2.5 Web service Arsitektur Web service mempunyai tiga komponen penting dalam arsitekturnya yaitu: Service Requester Service Requester atau peminta layanan adalah pihak yang mencari dan menemukan layanan yang dibutuhkan serta menggunakan layanan tersebut. Dalam hal ini peminta layanan disebut client. Service Provider Service provider atau penyedia layanan adalah pihak yang menyediakan layanan dan mengolah sebuah registry agar layanan-layanan tersebut dapat tersedia. Dalam ini penyedia layanan ada web service server. Service Registry Service Registry atau daftar layanan adalah lokasi pusat yang mendeskripsikan semua layanan yang telah didaftarkan. Contoh service registry adalah Universal Description, Discovery, and Integration (UDDI) yang merupakan penyedia daftar layanan web service berbasis XML. Operasi umum yang terdapat pada web service antara lain: Publish/Unpublish Menerbitkan atau menghapus layanan pada service registry. Find Service requester mencari layanan pada service registry. Bind Service requester menemukan layanan yang dicari kemudian melakukan binding ke service provider untuk melakukan interaksi dan mengakses layanan/ service yang disediakan oleh service provider. Terdapat dua jenis protokol web service yang umumnya banyak digunakan yaitu: Simple Object Access Protocol (SOAP) SOAP adalah sebuah bahasa penanda berbasis XML untuk pertukaran pesan diantara aplikasi-aplikasi. SOAP berguna seperti sebuah amplop yang digunakan untuk pertukaran data objek di dalam jaringan. SOAP berisi element header yang menampung informasi dari service, element body yang berisi informasi pemanggilan service dan hasilnya, dan element fault yang berisi status kesalahan. SOAP hanya akan menyediakan satu jalur untuk penggunaan semua layanan pada penyedia web service . Contoh mekanisme web service dengan menggunakan SOAP dapat dilihat pada Gambar 2.6. Gambar 2.6 Mekanisme Web service dengan SOAP [15] Representational State Transfer (REST) REST adalah suatu gaya arsitektur perangkat lunak untuk pendistribusian sistem hipermedia seperti World Wide Web (WWW). Istilah ini dikenalkan pertama kali oleh Roy Fielding pada tahun 2000. REST merujuk pada pengalamatan sumber daya untuk mendeskripsikan semua antarmuka yang menyampaikan data melalui HTTP tanpa tambahan lapisan pesan seperti SOAP. REST menspesifikasikan masing-masing layanan berdasarkan URI-nya. Contoh mekanisme web service dengan menggunakan REST dapat dilihat pada Gambar 2.7. Gambar 2.7 Mekanisme Web service dengan REST [15] Pada skripsi ini menggunakan RESTful Web service sebagai protokol web service dan JSON sebagai format pembawa pesan web service . 2.1.1. RESTful Web service RESTful Web service adalah web service dengan menggunakan prinsip arsitektur REST. Karakteristiknya adalah sebagai berikut: Menggunakan HTTP method HTTP method adalah metode yang digunakan untuk mendapatkan resources melalui protokol HTTP. Beberapa contoh HTTP method antara lain: - GET, melakukan permintaan resource dimana hanya akan mengambil data. - POST, membuat dan mengirimkan sebuah resources. - PUT, melakukan perubahan state pada resources. - DELETE, melakukan penghapusan resources. Stateless Stateless web service membuat respon yang terhubung dengan halaman resource. Hal ini berbeda dengan stateful web service yang mempunyai variabel dari request sebelumnya dan menggunakannya kembali dengan tambahan variabel baru untuk mengakses resource yang diminta oleh sebuah request baru. Ketika client membuat sebuah HTTP request, semua informasi yang dibutuhkan server untuk memenuhi request harus dikirim. Server tidak bergantung pada informasi yang dikirim dari request sebelumnya. Memiliki struktur direktori URI Untuk mengakses RESTful Web service digunakan sebuah Uniform Resources Identifier (URI). URI adalah nama dan alamat dari sebuah resource. Mempunyai pesan yang ditransfer melalui media pertukaran data RESTful web service tidak menggunakan WSDL, pesan yang dikirim dikemas dalam format XML atau JSON. Hal ini berbeda dengan SOAP yang menggunakan protokol khusus untuk pengiriman pesan. Arsitektur ini terdiri dari sebuah server dan client. Client mengirimkan permintaan ke server, dan server akan mengolah permintaan dan mengirimkan hasilnya kembali ke client. Pada REST terdapat empat hal penting antara lain: - Resources : data yang diinginkan client. - Representation : representasi atau wujud dari resource. - State : Posisi client pada representasi tertentu. - Transfer : Suatu kondisi dari satu state ke state yang lain. Semisal client mengakses web online shoping dan ingin mendapatkan data (resource) customer dengan nomor 5873 maka client harus mengakses dengan metode HTTP GET ke URL /customer/5873. Server akan memberikan representation dari resource ke browser client. Representasi tersebut menempatkan client dalam sebuah state yaitu berada pada customer dengan nomor 5873. Kemudian client menemukan link /contract/v-2003 dan menjelajahinya, maka server kembali mengirimkan representasi dari resource ke browser client. Representasi tersebut menempatkan posisi state client ke state yang baru pada contract dengan nomor v-2003. Proses perpindahan dari state yang satu ke state yang lain disebut sebagai proses transfer. Gambar 2.8 menunjukkan proses transfer dari state satu ke state yang lain pada mekanisme RESTful web service . Gambar 2.8 REST State Transfer [15] 2.1.2. JSON Java Script Object Notation (JSON) adalah suatu format ringkas pertukaran data komputer. JSON mempunyai format berbasis teks dengan berdasarkan pada subset bahasa pemograman Java Script. Walaupun begitu JSON bukan sebuah format data yang tergantung pada bahasa pemograman tertentu. Penggunaan JSON sudah didukung oleh banyak bahasa pemograman seperti C, C++, C#, Java , Java Script, PHP, dan Perl. JSON diciptakan dan dipopulerkan oleh Douglas Crockford pada tahun 2001 dan mulai digunakan untuk Web service oleh Yahoo pada Desember 2005 dan Google pada Desember 2006. JSON merupakan alternatif pengganti XML sebagai format pertukaran data komputer karena strukturnya yang lebih ringkas dan sederhana. Tipe media internet resmi untuk JSON adalah application/json dan ekstensi berkasnya adalah .json. Bentuk dan sintaks dari JSON adalah sebagai berikut: Object Sebuah object dimulai dengan kurung kurawal buka “{” dan diakhiri dengan kurung kurawal tutup “}”. Setiap nama object diikuti dengan titik dua “:” dan nilainya dipisahkan dengan tanda koma “,”. Strukturnya dapat dilihat pada Gambar 2.9. Gambar 2.9 Struktur Penggunaan Object pada JSON[16] Array Sebuah array dimulai dengan kurung siku buka “[” dan diakhiri dengan kurung siku tutup “]” dan nilainya dipisahkan dengan tandan koma “,”. Strukturnya dapat dilihat pada Gambar 2.10. Gambar 2.10 Struktur Penggunaan Array pada JSON[16] Nilai Nilai dapat berupa string dalam tanda petik dua, bilangan, nilai boolean, object, atau array. Strukturnya dapat dilihat pada Gambar 2.11. Gambar 2.11 Struktur Penggunaan Nilai pada JSON[16] String String terdiri atas urutan karakter unicode dimana dibungkus dengan tanda petik dua. Penggunaan string pada JSON mirip dengan penggunaan string pada bahasa C atau Java. Strukturnya dapat dilihat pada Gambar 2.12. Gambar 2.12 Struktur Penggunaan String pada JSON[16] Bilangan Bilangan pada JSON mirip dengan bilangan pada bahasa C atau Java, hanya saja JSON tidak mendukung penggunaan bilangan heksadesimal maupun octaldesimal. Strukturnya dapat dilihat pada Gambar 2.13. Gambar 2.13 Struktur Penggunaan Bilangan pada JSON[16] Kode 2.1 menunjukkan contoh penggunaan JSON. { "identitas": { "nama_depan": "Acip", "nama_belakang": "Susman Alyahi", "jenis_kelamin": "Laki-Laki", "kelahiran": { "tempat": "Tegal", "tanggal_lahir": "21-Mei -1990" } }, "alamat": { "nama_jalan": "Purbaya V/4", "kota": "Salatiga", "provinsi": "Jawa Tengah", "kode_pos": "50722" } } Kode 2.1 Contoh JSON