BAB II TINJAUAN PUSTAKA 2.1 Telaah Penelitian Telaah ini digunakan sebagai bahan perbandingan antara penelitian yang sudah dilakukan dan yang akan dirancang oleh peneliti. Beberapa telaah penelitian tersebut diantaranya: LU’LU’UN NISA KURNIA PUTRI (2011) dalam penelitian berjudul ANALISIS, PERANCANGAN DAN IMPLEMENTASI APLIKASI CHATTING BERBASIS OBJEK mengatakan bahwa komunikasi adalah bagian yang tidak dapat dipisahkan dengan kehidupan manusia. Bentuk dan media untuk berkomunikasi juga mengalami perubahan seiring dengan berkembangnya teknologi. Bentuk komunikasi dimulai dengan komunikasi bertatap muka dan melalui surat, kemudia setelah ditemukannya jaringan computer dan koneksi internet, komunikasi semakin berkembang sehingga dapat dilakukan dimana saja dan kapan saja tanpa harus bertemu langsung pada satu tempat. Penelitian ini mengembangkan sebuah system komunikasi teks antarmuka melalui protocol internet. System komunikasi ini dikhususkan untuk digunakan pada jaringan local atau LAN dan ditulis menggunakan bahasa pemrograman Java (J2SE) dengan memanfaatkan teknologi multicast (MulticastSocket) yang telah didukung dalam pemrograman Java. Metode penelitian yang dipakai adalah metode RAD (Rapid Application Development). Metode RAD adalah metode pengembangan system linier sekuensial yang menekankan siklus perkembangan yang sangat 5 pendek dengan menggunakan pendekatan konstruksi berbasis komponen yang meliputi pemodelan bisnis, pemodelan data, pemodelan proses, pembuatan aplikasi dan pengujian. Berdasarkan pengujian, aplikasi chatting ini dapat berjalan dengan baik. Komunikasi teks yang didukung adalah komunikasi public, komunikasi private dan komunikasi grup. Aplikasi chatting ini menggunakan koneksi peer to peer yang artinya masing-masing komputer berada pada tingkat yang sama. Aplikasi chatting ini dapat dikembangkan lebih lanjut dengan menambah fitur-fitur lain seperti proses login, komunikasi suara, video atau transfer file. LISDA (2011) dalam penelitian berjudul PEMBUATAN APLIKASI CHATTING CLIENT-SERVER JARINGAN LOKAL MENGGUNAKAN JAVA 2 STANDARD EDITION PI mengatakan bahwa Perkembangan teknologi terus berkembang seiiring dengan berjalannya waktu. Banyak aplikasi-aplikasi yang dikembangkan oleh seorang programmer agar aplikasinya berjalan dengan dukungan internet. Aplikasi yang terhubung dengan internet tentu saja akan selalu diperbaharui namun ada juga yang tidak diperbaharui karena masalah kompatibilitas. Penulis tertarik untuk membuat aplikasi chatting client-server jaringan lokal yang tidak terhubung dengan internet, dimana dalam pembuatan aplikasi ini penulis menggunakan bahasa pemrograman Java 2 Standard Edition (J2SE) dan memanfaatkan penomoran IP, soket, serta port yang dimiliki komputer dalam suatu jaringan lokal. Aplikasi chating client-server ini adalah aplikasi yang memungkinkan pengguna saling berkomunikasi antara satu komputer dengan komputer lain didalam suatu jaringan lokal dimana syarat utamanya adalah harus 6 ada minimal dua komputer yang terhubung untuk dapat berkomunikasi. Pada penulisan ini berisi mengenai cara pembuatan aplikasi chatting client-server jaringan lokal menggunakan Java 2 Standard Edition. Konsep pembuatan juga dijelaskan secara bertahap dimulai dari perancangan aplikasi hingga pengujian serta dilengkapi dengan lampiran source code dan gambar dari langkah-langkah yang dilakukan. 2.2 Landasan Teori Beberapa teori yang perlu dikaji dalam penelitian ini, diantaranya pengertian chat, websocket, android, XML, java, jquery, JSON, apache-tomcat, android SDK, client server 2.2.1 Pengertian Chat Chat adalah suatu feature atau suatu program di Internet untuk berkomunikasi langsung sesama pengguna internet yang sedang online / yang sedang sama-sama menggunakan Internet. Komunikasi ini dapat berupa teks (text chat) ataupun suara (voice chat). Atau definisi chatting adalah suatu pesan instant ataupun instant messaging di sebuah teknologi jaringan komputer yang mengijinkan pemakainya untuk mengirimkan pesan ke pengguna lain yang tersambung dalam sebuah jaringan komputer ataupun internet. Chatting tidak hanya populer dikalangan kaum remaja atau anak muda saja tetapai jaman sekarang ini, sudah merambah kekalangan orang tua sekalipun. Dengan adanya chatting, kita dapat dengan bebas mengobrol 7 mengenai apa saja mulai dari persahabatan, pekerjaan, pelajaran disekolah, mata kuliah, sampai masalah percintaan dan perjodohan, bahkan sampai dengan hal-hal bersifat pribadi sekali pun. beberapa fungsi dan manfaat chatting yang bisa kita diperoleh, diantaranya seperti: a. Sarana murah serta mudah untuk berkomunikasi. b. Sebagai sarana konsultasi dengan dokter (Beberapa situs tertentu menyediakan jasa konsultasi dengan dokter, & kita dapat memanfaatkan layanan tersebut) c. Sebagai sarana untuk berhubungan dengan para pakar. d. Mengetahui isi buku. e. Dapat mendapatkan teman yang baru. f. Sebagai sarana belajar dan juga berdiskusi, dan yang lainnya (Sora N, 2015) 2.2.2 WebSocket WebSocket adalah standar baru untuk komunikasi realtime pada Web dan aplikasi mobile. WebSocket dirancang untuk diterapkan di browser web dan server web, tetapi dapat digunakan oleh aplikasi client atau server. WebSocket adalah protokol yang menyediakan saluran komunikasi full-duplex melalui koneksi TCP tunggal. Websocket termasuk dalam lapisan OSI layer 7 yaitu Apliccation. WebSocket sudah di standarisasi oleh IETF 8 sebagai RFC 6455 pada tahun 2011, dan API WebSocket di Web IDL sedang distandarisasi oleh W3C. Perbedaan websocket dengan HTTP adalah jika didalam protocol HTTP client harus merequest ke server untuk meminta data baru, setelah itu server akan merespon permintaan client dan koneksi tertutup, begitu seterusnya client harus merequest terlebih dahulu ke server untuk mendapatkan data-data terbaru di server. Sedangkan websocket jika client telah terhubung dengan server maka koneksi akan tetap terbuka selama yang diinginkan client, dan keduanya akan mengirim dan menerima pesan secara terus menerus. 2.2.2.1 Manfaat WebSocket 1. Websocket memungkinkan server untuk mendorong data kepada client yang terhubung 2. Mengurangi traffic atau lalu lintas jaringan yang tidak perlu dan latency menggunakan full duplex melalui koneksi tunggal (bukan dua). 3. Streaming melalui proxy dan firewall, mendukung komunikasi simultan hulu dan hilir. 4. Kompatibel dengan pre-WebSocket dunia dengan cara beralih dari koneksi HTTP ke WebSockets. 2.2.2.2 Aplikasi Yang Harus Menggunakan WebSocket 1. Aplikasi dengan banyak pengguna atau Multi-User Apps 9 2. Aplikasi langsung atau Realtime Apps 3. Aplikasi dimana data live sangat dibutuhkan, seperti pasar saham, atau kurs. 2.2.2.3 WebSocket Client 1. Di website, WebSocket didukung oleh browser seperti Google Chrome, Firefox, Opera 2. Pada ponsel, WebSocket support di iOS dan Android 3. WebSocket client menggunakan Javascript untuk meminta atau merequest ke serve 2.2.2.4 WebSocket Server Pada server, WebSocket sudah support di Ruby, Java, Objective-C, PHP, .NET, Node.js, ActionScript dan banyak bahasa lainnya, bisa dicoba pada website-website berikut ini Ruby, Java, Objective-C(iOS), PHP, .NET, node.js. (JurnalWeb, 2015) 2.2.3 Android Android adalah sistem operasi berbasis linux untuke mobile seperti smartphone dan tablet PC. Android termasuk sistem operasi open source sehingga semua pengguna dapat mengembangkan dan membuat aplikasi sendiri. Awalnya, Google Inc. membeli Android Inc, pendatang baru yang membuat peranti lunak untuk ponsel. Kemudian untuk mengembangkan 10 Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan Nvidia. Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis kode–kode Android di bawah lisensi Apache, sebuah lisensi perangkat lunak dan standar terbuka perangkat seluler. (aingindra, 2013) 2.2.4 XML XML (eXtensible Markup Language) merupakan bahasa web turunan dari SGML (Standart Generalized Markup Language) yang ada sebelumnya. XML hampir sama dengan HTML, dimana keduanya sama-sama turunan dari SGML. Teknologi XML dikembangkan mulai tahun 1966 dan mendapatkan pengakuan dari Worl Wide Web Consortium (W3C) pada bulan Februari 1998. Sedangkan SGML sendiri telah dikembangkan pada awal tahun 1980-an. Pada saat HTML dikembangkan pada tahun 1990, para penggagas XML mengadopsi bagian paling penting SGML dan dengan berpedoman pada pengembangan HTML menghasilkan bahasa markup yang tidak kalah hebatnya dengan SGML. Secara sederhana XML adalah suatu bahasa yang digunakan untuk mendeskripsikan dan memanipulasi dokumen secara terstruktur. Secara teknis XML didefinisikan sebagai suatu bahasa meta-markup yang menyediakan format tertentu untuk dokumen-dokumen yang mempunyai data terstruktur. Bahasa markup adalah mekanisme untuk mengenal secara terstruktur di 11 dokumen. XML adalah suatu aplikasi profil dari SGML. Seperti yang didefinisikan dari ISO 8879, SGML adalah cara standart dan vendorindependent. XML tidak mempunyai definisi secara tepat karena ada yang berpendapat XML bukanlah bahasa pemograman melainkan XML merupakan sintaks yang digunakan untuk menjelaskan bahasa markup lain (Dournaee,2002), sehingga dinamakan meta-language. Meskipun demikian pendapat yang XML bukan merupakan bahasa markup, didasarkan bahwa XML merupakan bahasa markup terpisah untuk tujuan terpisah. Selain itu XML bukanlah solusi semua hal untuk tujuan semua user. Sedangkan peran dari markup itu sendiri berupa: 1. Markup dapat menambah maksud arti (semantic) suatu data. 2. Dapat memisahkan data. 3. Dapat mendefinisikan peran data. 4. Dapat mendefinisikan batasan data. 5. Dapat menfenisikan keterhubungan data. XML merupakan sebuah himpunan bagian (subset) dari SGML yang bertujuan agar SGML secara generik dapat melayani, menerima, dan memproses di dalam web dengan cara seperti yang dimungkinkan HTML saat ini. XML didesain untuk kemudahan implementasi dan interoperabilitas dengan SGML maupun HTML. XML adalah bahasa markup yang dirancang untuk penyampaian informasi melalui World Wide Web (www) atau sering disebut web saja. (W3C,2000) 12 XML merubah cara kita berpikir untuk mengembangkan suatu software terutama aplikasi web. Masalah yang kita sekarang adalah bagaimana caranya untuk bertukar informasi antar satu aplikasi dengan aplikasi lain. Kadang kolaborasi antara satu aplikasi dengan aplikasi yang lain masih harus ditentukan dengan spesifikasi aplikasi tersebut. Padahal seharusnya kita hanya perlu mendapatkan informasi data bukan mengerti cara kerja aplikasi lain itu, disinilah visi internet yang belum tercapai. Visi ini adalah dunia internet dimana PC, server, smart devices dan internet-based device dapat berkolaborasi tanpa ada halangan. Bisnis-bisnis akan dapat bertukar data menyediakan customized dan comprehensive solusi kepada customer. Dan yang paling utama adalah informasi yang dibutuhkan dapat diakses dari mana saja dan dengan computing device, platform, atau aplikasi yang kita gunakan. XML dapat memungkinkan pertukaran informasi atau data antar device (server, PCs, smart device, aplikasi, dan situs web). Data ini akan menjadi independent (unlocked), memudahkannya untuk diorganisir, diprogram, dan dirubah, dan ditukar antar situs web atau aplikasi apa saja. Karena kebutuhan ini, maka makin banyak teknologi berbasis XML yang keluar. ( Yogi Erlangga, 2012) 2.2.5 Java Java adalah bahasa pemrograman yang multi platform dan multi device. Sekali anda menuliskan sebuah program dengan menggunakan Java, 13 anda dapat menjalankannya hampir di semua komputer dan perangkat lain yang support Java, dengan sedikit perubahan atau tanpa perubahan sama sekali dalam kodenya. Aplikasi dengan berbasis Java ini dikompulasikan ke dalam p-code dan bisa dijalankan dengan Java Virtual Machine. Fungsionalitas dari Java ini dapat berjalan dengan platform sistem operasi yang berbeda karena sifatnya yang umum dan non -spesifik. Slogan Java adalah “Tulis sekali, jalankan di manapun”. Sekarang ini Java menjadi sebuah bahasa pemrograman yang populer dan dimanfaatkan secara luas untuk pengembangan perangkat lunak. Kebanyakan perangkat lunak yang menggunakan Java adalah ponsel feature dan ponsel pintar atau smartphone. Kelebihan Java yang pertama tentu saja multiplatform. Java dapat dijalankan dalam beberapa platform komputer dan sistem operasi yang berbeda. Hal ini sesuai dengan slogannya yangs udah dibahas sebelumnya. Yang kedua adalah OOP atau Object Oriented Programming. Java memiliki library yang lengkap. Library disini adalah sebuah kumpulan dari program yang disertakan dalam Java. Hal ini akan memudahkan pemrograman menjadi lebih mudah. Kelengkapan library semakin beragam jika ditambah dengan karya komunitas Java. Setiap hal pasti memiliki kelebihan dan kekurangan. Kekurangan yang dimiliki oleh Java adalah pada satu slogannya, yakni “Tulis sekali dan jalankan dimana saja” ternyata tidak sepenuhnya benar. Beberapa hal harus 14 disesuaikan jika dijalankan pada platform yang berbeda. Misalnya untuk J2SE dengan platform SWT-AWT bridge tidak dapat berfungsi di Mac OS X. Kekurangan lainnya adalah kemudahan aplikasi Java didekompilasi. Dekompilasi adalah suatu proses membalikkan sebuah aplikasi menjadi kode sumbernya. Hal ini memungkinkan terjadi pada Java karena berupa bytecode yang menyimpan bahasa tingkat tinggi. Hal ini terjadi pula pada platform .NET dari Microsoft sehingga program yang dihasilkan mudah dibajak kodenya karena sulit untuk disembunyikan. Kekurangan Java yang lain adalah penggunaan memori yang cukup banyak, lebih besar daripada bahasa tingkat tinggi sebelum generasi Java. Namun hal ini memang sesuai dengan fitur beragam yang dimiliki oleh Java. Masalah memori ini juga tidak dialami oleh semua pengguna aplikasi Java. Mereka yang sudah menggunakan perangkat keras dengan teknologi terbaru tidak merasakan kelambatan dan konsumsi memori Java yang tinggi. Lain halnya dengan mereka yang menggunakan teknologi lama atau komputer yang sudah berumur tua lebih dari empat tahun akan merasakan adanya kelambatan. Namun apapun kelemahan yang dimiliki Java, faktanya adalah Java merupakan bahasa pemrograman yang populer dan digunakan di seluruh dunia saat ini.(vicky, 2012) 2.2.6 Jquery JQuery adalah javascript library, jQuery mempunyai semboyan “write less, do more”. jQuery dirancang untuk memperingkas kode-kode 15 javascript. JQuery adalah javascript library yang cepat dan ringan untuk menangani dokumen HTML, menangani event, membuat animasi dan interakasi ajax. Library jQuery mempunyai kemampuan, yaitu: a. Kemudahan mengakses elemen-elemen HTML b. Memanipulasi elemen HTML c. Memanipulasi CSS d. Penanganan event HTML e. Efek-efek javascript dan animasi f. Modifikasi HTML DOM g. AJAX h. Menyederhanakan kode javascript lainnya (Adhie, 2011) 2.2.7 JSON JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman JavaScript, Standar ECMA262 Edisi ke-3 - Desember 1999. JSON merupakan format teks yang tidak bergantung pada bahasa pemprograman apapun karena menggunakan gaya bahasa yang umum digunakan oleh programmer keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python dll. Oleh karena sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa pertukaran-data. 16 JSON terbuat dari dua struktur: a. Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek (object), rekaman (record), struktur (struct), kamus (dictionary), tabel hash (hash table), daftar berkunci (keyed list), atau associative array. b. Daftar nilai terurutkan (an ordered list of values). Pada kebanyakan bahasa, hal ini dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan (sequence). Struktur-struktur data ini disebut sebagai struktur data universal. Pada dasarnya, semua bahasa pemprograman moderen mendukung struktur data ini dalam bentuk yang sama maupun berlainan. Hal ini pantas disebut demikian karena format data mudah dipertukarkan dengan bahasa-bahasa pemprograman yang juga berdasarkan pada struktur data ini. (JSON.org) 2.2.8 Apache-Tomcat Menurut (Vukotic & Goodwill, 2011) “The Apache Tomcat server is an open source, Java-based web application container that was created to run servlet and JavaServer Pages (JSP) web applications. It was created under the Apache-Jakarta subproject; however, due to its popularity, it is now hosted as a separate Apache project, where it is supported and enhanced by a group of volunteers from the open source Java community”. 17 Dijelaskan bahwa apache tomcat open source merupakan suatu wadah aplikasi web berbasis java yang diciptakan untuk menjalankan servlet dan JSP (Java Server Pages) aplikasi web. Apache tomcat dibuat oleh Apache-Jakarta namun, karena popularitasnya sekarang proyek apache tomcat terpisah dimana apache tomcat didukung dan kembangkan oleh sekelompok relawan dari open source java komunitas. (Vukotic & Goodwill, 2011) Web server Apache berbasiskan Open Source dan mulai populer di internet sejak tahun 1996 karena Open Source. Apache bebas didistribusikan oleh siapa saja dan ke siapa saja. Software ini dapat diunduh pada situs http://www.apache.org dan tersedia untuk berbagai platform, diantaranya Windows, Linux, dan Unix. Agar dokumen-dokumen web yang berekstensi HTML ataupun PHP bias diakses oleh browser maka dokumen-dokumen tersebut perlu diletakkan dalam direktori khusus yang diatur oleh Apache. Tugas utama Apache adalah menghasilkan halaman web yang benar kepada user berdasarkan kode PHP yang dituliskan oleh pembuat halaman web. Jika diperlukan, berdasarkan kode PHP yang dituliskan maka dapat saja suatu database diakses terlebih dahulu (misalnya dalam MySQL) untukmendukung halaman web yang dihasilkan. (Dwiartara, 2010) 2.2.9 Android SDK Android-SDK merupakan tools bagi para programmer yang ingin mengembangkan aplikasi berbasis google android. Android SDK mencakup seperangkat alat pengembangan yang komprehensif. Android SDK terdiri 18 dari debugger, libraries,handset emulator,dokumentasi, contoh kode, dan tutorial. Saat ini Android sudah mendukung arsitektur x86 pada Linux (distribusi Linux apapun untuk desktopmodern), Mac OS X 10.4.8 atau lebih, Windows XP atau Vista. Persyaratan mencakup JDK, Apache Ant dan Python 2.2 atau yang lebih baru. IDE yang didukung secara resmi adalah Eclipse 3.2 atau lebih dengan menggunakanpluginAndroid Development Tools (ADT), dengan ini pengembang dapat menggunakan teks editor untuk mengedit file Java dan XML menciptakan, pengendalian serta menggunakan membangun, perangkat peralatan command melakukan debugaplikasi Android (misalnya, reboot, line untuk Android dan menginstal paket perangkat lunak dengan jarak jauh). (haidibarasa, 2013) 2.2.10 Client – Server Client-server merupakan sebuah arsitektur dimana ada yang bertindak sebagai server dan client, disini server berperan sebagai penyedia layanan dan pengelola baik aplikasi, data dan keamananya. Sedangkan client adalah penerima layanan yang telah disediakan oleh server. Dalam hubungan ini semua berpusat pada server, sehingga lebih aman dan lebih cepat, karena server bertugas menyediakan layanan saja tidak seperti per to per yang semua dapat menjadi server dan client. (eko, 2012) 19 2.2.11 TCP/IP Pengertian TCP/IP adalah sebuah perangkat lunak jaringan komputer yang terdapat dalam satu sistem dan memungkinkan komputer satu dengan komputer lain dapat mentransfer data dalam satu grup network/jaringan. TCP singkatan dari Transmission Control Protocol dan IP singkatan dari Internet Protocol. TCP/IP menjadi satu nama karena fungsinya selalu bergandengan satu sama lain dalam komunikasi data. Fungsi dari TCP/IP adalah sebagai berikut : Umumnya TCP / IP digunakan untuk pengiriman file dalam satu jaringan. TCP / IP juga sering dimanfaatkan untuk keperluan “Remote login” Computer mail. Telnet, dll. 2.2.11.1 Ketentuan Kelas Alamat IP Sebuah alamat IP berisi satu bagian network dan satu bagian host, tetapi formatnya tidak sama pada setiap alamat IP. Sejumlah bit alamat dipakai disini untuk mengidentifikasi network, dan angka dipakai untuk mengidentifikasi host, dan beragam kelas alamat IP. Alamat IP memiliki tiga kelas utama yaitu kelas A, kelas B, dan kelas C. Ketentuan kelas alamat IP itu berupa : 20 a. Jika bit pertama dari sebuah alamat IP adalah angka 0, ini menunjukan network kelas A. Tujuh bit berikutnya menunjukan identitas network, dan 24 bit terakhir menunjukan identitas host. Ada 128 buah network kelas , tetapi didalam setiap kelas A bisa terdapat jutaan host. b. Jika bit pertama dari dua angka alamat IP adalah 10, ini menunjukan alamat IP network kelas B. Angka Bit pertama kelas, kemudian 24 bit berikutnya menunjukan identitas alamat network, dan 10 bit berikutnya untuk host. Ada ribuan angka network kelas B dan setiap kelas B dapat berisi ribuan host. c. Jika bit pertama dari tiga bit alamat IP adalah 110, ini merupakan alamat IP kelas C. Tiga bit pertama berupa alamat kelas. 21 bit berikutnya sebagai alamat network, dan 8 bit selanjutnya merupakan identitas host. Ada jutaan network kelas C, dan didalam tiap kelas C ada 254 host. (Hardianto. 2013)