BAB II DASAR TEORI. 2.1 Java 2 Micro Edition (J2ME) Pengertian J2ME CLDC 1.1 dan MIDP 2.0

dokumen-dokumen yang mirip
BAB III ANALISIS DAN PERANCANGAN

IF5093 Java ME. Achmad Imam Kistijantoro Semester II 2006/2007. IF-ITB/AI/Mar 07. IF5093 Java ME

mlab : Aplikasi Perangkat Bergerak untuk Mengakses Sistem Informasi Laboratorium berbasis SMS dan J2ME

BAB IV IMPLEMENTASI DAN PENGUJIAN

DAFTAR ISI. ABSTRAK... i KATA PENGANTAR... ii DAFTAR ISI... iii DAFTAR TABEL... xi DAFTAR GAMBAR... xiv

yang signifikan. Pada tahap ini dijelaskan hal-hal apa saja yang terdapat pada

MODUL 11 J2ME (Java 2 Micro Edition)

J2ME GUI dan Interkoneksi Client Server

BAB II LANDASAN TEORI

SILABUS MATA KULIAH PEMROGRAMAN APLIKASI BERGERAK

APLIKASI MOBILE-CHATTING MENGGUNAKAN FASILITAS BLUETOOTH DENGAN J2ME

PENGENDALIAN JARAK JAUH KOMPUTER MENGGUNAKAN APLIKASI MOBILE

Sistem Client untuk Mobile Device berbasis pada Teknologi Java

PENGENDALIAN JARAK JAUH KOMPUTER MENGGUNAKAN APLIKASI MOBILE

Mobile Computing. Ramos Somya

BAB III ANALISIS DAN PERANCANGAN APLIKASI. Aplikasi chatting mobile phone yang menggunakan NetBeans IDE 6.0 yang di

BAB 3 PERANCANGAN SISTEM

BAB I PENDAHULUAN. semua kalangan masyarakat memiliki telepon seluler, personal digital assistant

Gambar 3.1 Perancangan Sistem

BAB III ANALISIS DAN DESAIN SISTEM

APLIKASI KAMUS MATEMATIKA UNTUK HANDPHONE

BAB I PENDAHULUAN. mutlak. IM berbeda dengan dari cara penggunaannya, IM bisa dikelompokkan

IMPLEMENTASI JXTA SEBAGAI PLATFORM JARINGAN PEER TO PEER PADA MOBILE DEVICE UNTUK APLIKASI FILE SHARING

BAB II ANALISIS DAN PERANCANGAN

BAB III JAVA 2 MICROEDITION (J2ME) definisi dari sun adalah sekumpulan teknologi pemrograman yang digunakan

Aplikasi Client pada Ponsel untuk Memproses Informasi Perkuliahan

Making Provisions for Applications and Services

BAB I PENDAHULUAN. 1.1 Latar Belakang

PEMANFAATAN PROTOKOL YAHOO MESSENGER UNTUK PENGATURAN SERVER PROXY

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. Dalam pembahasan tentang chatting menggunakan J2ME ini

BAB 3 PERANCANGAN SISTEM

Makalah Seminar Tugas Akhir APLIKASI CLIENT PADA PONSEL UNTUK MEMPROSES INFORMASI PERKULIAHAN

DEPOK AIR UNLIMITED NETWORK TAHUN ANGGARAN 2012

BAB 4 IMPLEMENTASI DAN EVALUASI

Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu

APPLICATION LAYER. Oleh : Reza Chandra

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

PERANCANGAN SISTEM HP CLIENT UNTUK APLIKASI REMOTE CONTROL PC BERBASIS BLUETOOTH

UNIVERSITAS BINA NUSANTARA PERANCANGAN SISTEM KOMUNIKASI DATA ANTAR TELEPON SELULAR MELALUI JARINGAN INTERNET

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. mengangkat kasus dan penggunaan teknologi yang berbeda-beda, pada table 2.1

APLIKASI SISTEM PENDIDIKAN JARAK JAUH BERBASIS WEB

KAMUS INGGRIS-INDONESIA BERBASIS J2ME

BAB 2 TINJAUAN PUSTAKA

BAB I PERSYARATAN PRODUK

Gambar Notifikasi via

BAB IV IMPLEMENTASI DAN EVALUASI

SISTEM INFORMASI KEHADIRAN DOSEN MELALUI HANDPHONE DENGAN KONEKSI BLUETOOTH

Implementasi Session Tracking Pada Mobile Application Dengan Menggunakan Java 2 Platform Microedition Teguh Susyanto 2)

BAB III ANALISIS DAN PERANCANGAN SISTEM

User Guide Manual. User diminta menentukan destination directory untuk menentukan lokasi dimana

BAB 3 ANALISIS DAN PERANCANGAN APLIKASI. misalnya EyeSpyFx. Aplikasi ini memiliki fitur untuk melakukan pemantauan keamanan

BAB IV HASIL DAN UJI COBA

Bab 4 Hasil dan Pembahasan

Analisis dan Implementasi Pengamanan Pesan pada Yahoo! Messenger dengan Algoritma RSA

BAB V IMPLEMENTASI DAN PENGUJIAN

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. pernah dilakukan oleh beberapa penulis. tentang membangun aplikasi chat berbasis android.

BAB I PENDAHULUAN. Proses pengukuran jarak jauh merupakan suatu proses pengukuran yang

PERANCANGAN APLIKASI CHATTING UNTUK PONSEL SECARA REAL-TIME

IMPLEMENTASI APLIKASI CHEPPYCHAT UNTUK JARINGAN KOMPUTER PADA LOCAL AREA NETWORK

APLIKASI PEMBELAJARAN JAVA FUNDAMENTAL BERBASIS MOBILE MENGGUNAKAN JAVA 2 MICRO EDITION (J2ME) Naskah Publikasi

Gambar 7 Flowchart aplikasi utama.

APLIKASI PENGELOLAAN UANG BULANAN BERBASIS MOBILE SKRIPSI. Disusun oleh : ERIDA AYU ARINTA NPM

PROSEDUR MENJALANKAN APLIKASI. Petunjuk instalasi aplikasi adalah sebagai berikut: 1. Copy file SeeYou.apk ke dalam memory card.

BAB IV IMPLEMENTASI SISTEM DAN PENGUJIAN. meliputi pembahasan mengenai proses perekaman gambar berdasarkan interval

Web Portal Bagi User. Gambar 4.28 Halaman Menu Utama (Home) User. Pada halaman menu utama User tersedia menu untuk CDR,

BAB IV PERANCANGAN USER INTERFACE

INSTALASI PC SERVER INSTALASI & KONFIGURASI SSH. Ardi Maharta / Heri Widayat /

IV. HASIL DAN PEMBAHASAN. a. Ruang Lingkup (Scope) Perangkat Lunak P-ATIS. P-ATIS memproduksi suara dari data-data cuaca terkini yang

BAB IV IMPLEMENTASI DAN PENGUJIAN PONSEL SEBAGAI MOBILE PRESENTATION BERBASIS BLUETOOH

Remote Execution. Oleh: Idris Winarno

BAB III ANALISIS DAN PERANCANGAN

BAB 4 IMPLEMENTASI DAN EVALUASI. terhadap hasil konfigurasi yang telah diimplementasikan. Adapun evaluasi yang

BAB II LANDASAN TEORI

BAB V IMPLEMENTASI DAN PENGUJIAN

BAB IV Hasil Dan Analisis

BAB III ANALISA DAN PERANCANGAN SISTEM

Gambar 3.1: Web WhatsApp

Network Programming 2010 Jaringan & Aplikasinya. Husni Husni.trunojoyo.ac.id

BAB 4 IMPLEMENTASI DAN EVALUASI. menjalankan aplikasi traffic monitoring dan SMS server. Terdiri dari Sierra Aircard 875

INSTALLATION GUIDE INSTALLATION GUIDE. PT.Technomatic Cipta Mandiri. IT division: Jl. Cikutra Baru Raya No.2 Bandung-40124

APLIKASI UNTUK PEMANTAUAN LAN PADA STUDI KASUS DI UNIVERSITAS BUNDA MULIA. Abstract

BAB IV IMPLEMENTASI, PENGUJIAN, DAN ANALISIS HASIL. Perangkat keras yang digunakan untuk perancangan aplikasi ini adalah : : Intel Pentium Dual core

1 PENDAHULUAN. 1.1 Latar Belakang

BAB III ANALISIS DAN PERANCANGAN 3.1 ANALISIS DAN PROSES BISNIS YANG BERJALAN

Pengembangan Aplikasi e-learning Jurusan Teknik Informatika ITS Berbasis Android pada Perangkat Komunikasi Bergerak

BAB IV ANALISA DAN PERANCANGAN SISTEM. diusulkan dari sistem yang ada di Dinas Kebudayaan dan Pariwisata Kota

Pada Bab IV ini akan dijelaskan perancangan aplikasi pengiriman pesan teks ber-markup via Short Message Service (SMS).

Agenda. Protokol TCP/IP dan OSI Keluarga Protokol TCP/IP

BAB III ANALISA DAN PERANCANGAN SISTEM

Perancangan Website Ujian. Teknik Elektro UNDIP Berbasis HTML

PENGEMBANGAN APLIKASI MOBILE

BAB 4 PERANCANGAN DAN EVALUASI. 4.1 Perancangan Jaringan Komputer dengan Menggunakan Routing Protokol OSPF dan GLBP

Perancangan Aplikasi Sistem Reservasi Kamar Rawat Inap Rumah Sakit Berbasis Mobile Technology (Studi Kasus RSUD Dr. Haryoto Lumajang) TUGAS AKHIR

BAB 3 ANALISIS DAN PERANCANGAN. utuh ke dalam bagian-bagian komponennya dengan maksud untuk

BAB III ANALISA DAN DESAIN SISTEM

IMPLEMENTASI TCP/IP UNTUK MEMBUAT SERVER DATABASE ACCESS ABSTRAK


BAB I PERSYARATAN PRODUK

BAB IV IMPLEMENTASI DAN PENGUJIAN SERVER MMOG

A. TUJUAN PEMBELAJARAN

Transkripsi:

BAB II DASAR TEORI Dasar teori yang diuraikan pada bab ini meliputi penjelasan Yahoo Messenger dan protokolnya sebagai basis pengembangan aplikasi. Selain itu akan dijelaskan tentang platform J2ME. Bab ini juga akan memaparkan library yang digunakan untuk penanganan protokol Yahoo Messenger dalam platform J2ME. 2.1 Java 2 Micro Edition (J2ME) Bahasan tentang J2ME meliputi pengertian J2ME, spesifikasi CLDC 1.0 dan MIDP 2.0 dan penjelasan beberapa komponen J2ME yang digunakan dalam pengerjaan tugas akhir. 2.1.1 Pengertian J2ME Java 2 Micro Edition (J2ME) merupakan varian teknologi java yang digunakan untuk pengembangan aplikasi pada suatu perangkat yang memiliki keterbatasan sumberdaya dibandingkan dengan komputer seperti handphone dan PDA. Oleh karena keterbatasan itu maka Application Programming Interface (API) dan kemampuan virtual machine J2ME pun dibuat seringkas mungkin disesuaikan dengan kemampuan perangkat yang digunakan. 2.1.2 CLDC 1.1 dan MIDP 2.0 J2ME memiliki istilah konfigurasi yang disebut Connected Limited Device Configuration (CLDC). Konfigurasi menggambarkan kemampuan yang dimiliki suatu perangkat dimana CLDC merupakan konfigurasi yang memang diperuntukkan untuk perangkat keras yang memiliki sumberdaya terbatas. CLDC merupakan kombinasi dari virtual machine dan API. Virtual machine pada CLDC disebut K Virtual Machine (KVM). Selain konfigurasi, dalam J2ME terdapat istilah profile yang disebut Mobile Information Device Profile (MIDP) yaitu sekumpulan API Java yang menambahkan konfigurasi berupa kemampuan ataupun fungsi lebih yang dapat dilakukan perangkat tersebut. Profil menggambarkan fungsi yang dimiliki suatu perangkat. Adapun konfigurasi dan profil yang akan digunakan pada Tugas Akhir ini adalah CLDC versi 1.1 dan MIDP versi 2.0. Kini, MIDP profile 2.1 telah tersedia dan mendukung banyak API tambahan, dan baru beberapa mobile-devices yang sudah mendukung MIDP 2.1 II-1

II-2 Aplikasi yang compliant dengan J2ME selain dapat berdiri di atas MIDP dan CLDC juga dapat berdiri di atas Original Equipment Manufacturer (OEM) Extensions dari perangkat itu sendiri. Untuk lebih jelasnya mengenai arsitektur J2ME diilustrasikan pada Gambar II-1. Gambar II-1 Arsitektur J2ME [OSB03] Kumpulan paket yang terdapat pada CLDC 1.0/MIDP 2.0 antara lain adalah: 1. Paket java.io Paket ini tergabung dalam CLDC 1.0 dimana paket ini menyediakan sejumlah kelas yang menangani input/output stream data. Dalam aplikasi ini stream digunakan sebagai primitif masukan dan keluaran data. 2. Paket java.lang Paket ini tergabung dalam CLDC 1.0 dimana paket ini menyediakan kelas-kelas fundamental yang diperlukan bahasa pemrograman java, seperti kelas String, Integer, System, dll. 3. Paket java.util Paket ini juga tergabung dalam CLDC 1.0 dimana paket ini menyediakan kelas-kelas fundamental terutama yang berkaitan dengan time dan date. 4. Paket javax.microedition.io Paket ini tergabung dalam CLDC 1.0 dan MIDP 2.0 dimana paket ini menyediakan kelaskelas umum yang berkaitan dengan koneksi jaringan. 5. Paket javax.microedition.midlet Paket ini tergabung dalam MIDP 2.0 dimana paket ini berfungsi untuk mengatur siklus hidup aplikasi dan interaksi antara aplikasi dengan lingkungan tempat aplikasi dijalankan. 6. Paket javax.microedition.lcdui Paket ini tergabung dalam MIDP 2.0 dimana paket ini menyediakan kelas-kelas yang menangani user interface aplikasi. Dalam MIDP 2.0 juga terdapat paket baru yakni paket

II-3 javax.microedition.lcdui.game yang menyediakan kelas-kelas yang berkaitan dengan pengembangan aplikasi game. 7. Paket javax.microedition.rms Paket ini tergabung dalam MIDP 2.0 dimana paket ini menyediakan mekanisme untuk menyimpan data secara permanen untuk kemudian diambil kembali. Data disimpan dalam bentuk record yang dapat di-list ataupun dienumerasi. 2.1.3 Komponen J2ME J2ME memiliki banyak kelas yang digunakan untuk membuat aplikasi pada mobile phone. Kelas-kelas tersebut tersebut digunakan untuk membuat tampilan layar, menu, grafik pada game, dan sebagainya. Berikut ini dijelaskan beberapa kelas yang akan digunakan dalam pengembangan aplikasi Yahoo Messenger mobile client. 2.1.3.1 Display Objek Display merupakan objek yang bertindak sebagai manajer dari layar tampilan pada aplikasi MIDlet. Pada setiap MIDlet hanya terdapat satu buah objek Display. Objek Display menyediakan method untuk menggambar dan menampilkan elemen user interface pada layar. 2.1.3.2 Displayable Kelas Displayable merupakan kelas abstrak dari semua kelas user interface. Kelas Displayable beserta kelas-kelas turunannya dapat dilihat pada Gambar II-2. Kelas Screen dan semua kelas turunannya merupakan kelas user interface level tinggi sedangkan kelas Canvas merupakan kelas user interface level rendah. Pada suatu waktu, hanya ada satu objek Displayable yang ditampilkan. Objek Displayable yang sedang ditampilkan disebut current. Objek Display memiliki method untuk mengambil objek Displayable yang sedang ditampilkan yaitu method getcurrent(). Objek Display juga memiliki method untuk menetapkan objek Displayable yang akan ditampilkan yaitu method setcurrent(displayable D). Gambar II-2 Hubungan antar kelas Diplayable dalam MIDP [OSB03]

II-4 2.1.3.3 Screen Screen adalah kelas abstrak yang merupakan kelas super dari semua kelas user interface level tinggi. Kelas turunan dari kelas abstrak Screen adalah Alert, Form, List, dan TextBox. 2.1.3.4 Canvas Canvas merupakan kelas turunan dari kelas abstrak Displayable yang menggunakan antarmuka grafis level rendah. Semua objek yang akan ditampilkan pada layar harus digambar pada Canvas dengan menggunakan objek Graphics. Kelas Canvas memiliki method paint()yang diimplementasi pada saat menggambar objek Graphics. Kelas Canvas juga memiliki method repaint()untuk me-refresh Canvas. 2.1.3.5 Graphics Objek Graphics ini menyediakan kemampuan menggambar bangun dua dimensi sederhana. Primitif yang tersedia diantaranya untuk menggambar teks, gambar (image), garis, persegi panjang dan panah. Objek Graphics ini tidak perlu dibentuk (create) karena objek ini akan dibangkitkan otomatis ketika objek Canvas terbentuk. Prinsip kerja objek Graphics adalah mengganti pixels (elemen titik) pada layar dengan titik-titik gambar yang baru. 2.1.3.6 Font Kelas Font digunakan untuk menetapkan font dari teks yang akan ditampilkan pada layar perangkat. Font memiliki atribut style, size, dan face. Aplikasi tidak memiliki kontrol terhadap font. Aplikasi juga tidak dapat membuat font. Aplikasi hanya mengirim query kepada sistem untuk meminta font dengan atribut tertentu. 2.1.3.7 Command Command adalah objek yang memungkinkan pengguna melakukan aksi. Fungsi objek Command sama dengan tombol (button) pada aplikasi desktop pada komputer. Command membutuhkan interface CommandListener untuk menangkap kejadian (event) dari Command. Pada saat membuat aplikasi J2ME pengembang harus membuat sebuah Command untuk keluar dari aplikasi tersebut karena J2ME tidak mendukung keluar aplikasi secara otomatis. 2.1.3.8 Alert Alert adalah pesan pada layar yang dapat menampilkan teks dan gambar pada pengguna. Alert ditujukan untuk menginformasikan pesan kesalahan atau exception kepada pengguna.

II-5 Alert juga digunakan untuk menampilkan data dan menunggu selama beberapa waktu tertentu untuk memproses kelas Displayable berikutnya. 2.1.3.9 Form Form adalah kelas turunan dari kelas abstrak Screen yang dapat mengandung elemen-elemen gambar, text field, choice group, dan elemen lainnya yang merupakan turunan dari kelas Item. Form memiliki method append(item i)untuk meletakkan sebuah elemen ke dalam Form. Parameter Item dapat diganti dengan Image atau String untuk meletakkan elemen gambar atau string ke dalam Form. 2.1.3.10 List List menampilkan himpunan pilihan pada layar. Pengguna dapat memilih diantara pilihan tersebut. Setiap pilihan (elemen dari list) mengandung string dan gambar. Elemen gambar bersifat opsional artinya setiap elemen list bisa hanya mengandung string dan tidak mengandung gambar. List dapat memungkinkan pilihan bersifat eksklusif (satu pilihan) maupun multiple (lebih dari satu pilihan). 2.1.3.11 Textbox TextBox adalah sebuah objek yang ditujukan agar pemakai dapat menuliskan teks dan mengeditnya. Jumlah teks yang dapat dimasukkan serta tipe teks yang dimasukkan dapat ditetapkan dan dibatasi oleh aplikasi. 2.1.3.12 Image Sebuah Image menyimpan sebuah data grafis gambar. Image dapat ditambahkan pada antarmuka level tinggi seperti Form dengan menggunakan method add(), sedangkan pada antarmuka level rendah seperti Canvas dengan menggunakan method drawimage(). Antarmuka level tinggi hanya dapat menggunakan gambar yang bersifat immutable yaitu gambar yang tidak dapat dimodifikasi setelah dibuat. Antarmuka level rendah dapat menggunakan gambar yang bersifat mutable yang biasanya disimpan dalam memori. 2.1.3.13 Stream Selain kelas yang berhubungan dengan aspek grafis dari aplikasi, juga digunakan kelas untuk komunikasi data, salah satunya adalah stream. Stream adalah kelas di J2ME yang mendefinisikan masukan dan keluaran data. Stream adalah urutan data yang panjangnya tidak diketahui sebelumnya, seperti aliran air yang terus mengalir. Stream menerima urutan karakter dari dan atau kepada sebuah proses komunikasi data. Pada J2ME, stream menerima

II-6 ataupun mengirimkan byte secara diskrit dimana byte dapat merepresentasikan karakter ataupun data lainnya. Beberapa kelas stream yang akan digunakan dalam pengembangan aplikasi mobile client Yahoo Messenger adalah : 1. ByteArrayInput/OutputStream Berisi tempat penyimpanan byte yang dapat menulis atau membaca ke ataupun dari stream. 2. DataInput/OutputStream Menyediakan aplikasi untuk menulis atau membaca tipe data dari sebuah input atau output stream. 3. PrintStream Merupakan ekstensi OutputStream dan menyediakan prosedur untuk mencetak atau menampilkan beberapa variasi objek dan nilai data. 2.1.3.14 Socket Socket adalah salah satu komunikasi jaringan level rendah. Merupakan suatu endpoint untuk komunikasi didalam jaringan. Socket dibentuk dengan menyambungkan dua buah alamat Internet Protocol (IP) melalui sebuah port tertentu. Secara umum socket digunakan untuk komunikasi client-server, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengontak server, maka server akan menyetujui komunikasi dengan client. Untuk melakukan komunikasi, hal yang haru dilakukan server adalah membuka koneksi socket terlebih dahulu, kemudian menunggu client yang akan melakukan koneksi dengan server. Misalnya : ServerConnection scn =(ServerSocketConnection)Connector.open( socket://:5000 ) Hal itu akan membuka socket protocol dengan port 5000 dan dapat menerima semua address client. Setelah itu koneksi akan diacu oleh client dengan kode : SocketConnection sc = (SocketConnection) scn.acceptandopen()

II-7 Kemudian stream masukan dibuka dengan kode : InputStream is = sc.openinputstream() jika koneksi telah diterima dari klien maka server akan membuka stream untuk mengirim pesan ke klien dengan kode : OutputStream os = sc.openoutputstream 2.2 Yahoo Messenger Penjelasan Yahoo Messenger meliputi protokol Yahoo Messenger, struktur paket data Yahoo Messenger dan daftar layanan dan status yang digunakan dalam protokol Yahoo Messenger. 2.2.1 Protokol Yahoo Messenger Sebuah aplikasi Yahoo Messenger client yang terhubung ke Yahoo Messenger server akan diberikan sebuah session id yang akan digunakan dalam pertukaran data selanjutnya hingga aplikasi client tersebut meminta service logout dari server. Aplikasi client Yahoo Messenger mempunyai dua status yang berbeda untuk sebuah sesi, yaitu status authentication dan status messaging. Sebuah sesi dimulai dengan status authentication setelah user melakukan login. Setelah server melakukan otentikasi data YahooID dan password, bila otentikasi berhasil maka sesi akan berpindah status menjadi messaging, bila otentikasi gagal maka respon error akan diberikan oleh server ke client. Setelah sesi memasuki status messaging, server mengirimkan daftar friend dan beberapa cookies ke client. Daftar friend yang sedang online beserta statusnya dikirim berikutnya. Kemudian offline message juga dikirim ke client. Pada status messaging, aplikasi client dapat mengirim atau menerima pesan, mengikuti konferensi, mengirim atau menerima file, mengganti statusnya, dan lain-lain. Status messaging berakhir ketika user melakukan logout. Gambaran antar statusnya dapat dilihat pada Gambar II-3. Data yang dipertukarkan antara client dan server pada protokol Yahoo Messenger berupa paket data yang mempunyai struktur tersendiri (akan dibahas pada sub-bab 2.2.2 berikutnya). Pada saat status sesi authentication, paket pertama yang dikirim dari client akan berupa paket permintaan otentikasi. Server akan meresponnya dengan sebuah paket yang berisi string untuk di-hash dengan YahooID dan password user.

II-8 Gambar II-3 Gambaran antar status di Yahoo Messenger Kedua data tersebut kemudian di-hash-kan dengan string dari server, kemudian dikirimkan kembali oleh client. Setelah otentikasi berhasil, di saat status sesi messaging, semua kegiatan user termasuk logout dilakukan dengan pertukaran paket data. 2.2.2 Struktur Paket Data Yahoo Messenger Penjelasan dari paket data yang strukturnya dapat dilihat pada Gambar II-4 di atas adalah sebagai berikut. Bagian pertama dari paket adalah string YMSG yang berukuran 4 Byte. Bagian kedua menunjukkan versi protokol, contohnya untuk versi protokol 10 bagian ini berisi 0x0a 0x00 0x00 0x00. 3 byte terakhir untuk sementara ini hanyalah berguna sebagai padding byte saja. Bagian pkt_len menunjukkan jumlah byte pada bagian data di paket ini.

II-9 Gambar II-4 Struktur paket data Yahoo Messenger [YAH05] Bagian berikutnya mengandung kode yang menentukan layanan apa yang diminta client juga yang diberikan server sebagai responnya. Beberapa contoh layanan yang dapat digunakan pada jaringan Yahoo Messenger selain layanan pengiriman/penerimaan pesan adalah layanan buddies dan address book, pengubahan status, conferencing, file transfer, layanan webcam, serta chatting. Bagian ini berukuran 2 byte. Daftar layanan berikut nilainya bisa dilihat di bagian 0. Bagian paket data berikutnya adalah bagian status sebesar 4 byte yang digunakan untuk menunjukkan status user tersebut. Bagian ini juga yang menunjukkan sebuah user sedang mengetikkan pesan ke user lain serta menunjukkan apabila user tersebut sedang idle. Sebagai status awal ketika seorang user login dapat dipilih nilainya antara YAHOO_STATUS_AVAILABLE atau YAHOO_STATUS_OFFLINE. Masing-masing status tersebut bernilai (0 dan 0x5a55aa56). Daftar pemetaan nilai dan defined variable untuk status dan layanan yang diketahui dapat dilihat pada 0. Bagian session_id digunakan ketika client terkoneksi melalui sebuah HTTP proxy, dan tidak memiliki kegunaan pada koneksi langsung. Ketika client mengirim paket data pertama kali bagian ini diisi dengan nilai 0, namun server merespon paket tersebut dengan mengirimkan sebuah session id yang akan digunakan oleh client dan server selanjutnya. Pada tengah sesi server dapat mengganti nilai ini dan kemudian mengirim paket dengan nilai session_id yang baru untuk digunakan.

II-10 Bagian terakhir pada paket adalah bagian data, dengan besar maksimum 65536 byte. Nilai ini adalah nilai teorinya karena bagian pkt_len berukuran 2 byte, namun pada prakteknya umumnya ukuran bagian data tidak melebihi nilai 1000 byte. Bagian ini terdiri dari pasangan indeks dan nilai dalam bentuk string ASCII-nya dengan string pemisah berupa nilai 0xc080. Contohnya untuk mengirim sebuah pesan maka bagian ini akan bernilai seperti ini: 0x30 0xc080 [yahooid pengirim] 0xc080 0x31 0xc080 [identitas/nama alias yang digunakan] 0xc080 0x35 0xc080 [yahooid penerima] 0xc080 0x3134 0xc080 [teks pesan] 0xc080 Seksi data pertama sebelum string 0xc080 merupakan angka 0 dalam bentuk ASCII. Seksi data kedua setelah [yahooid pengirim] dan string pemisah berikutnya adalah angka 1, ketiga dengan urutan yang sama adalah 5 dan terakhir adalah 14. angka 14 didapat dengan memisahkan byte pertama dan kedua (0x31 dan 0x34). Bentuk seperti di atas merupakan ketentuan dalam layanan pengiriman pesan, selain bagian service diisi dengan nilai YAHOO_SERVICE_MESSAGE dan bagian status diisi dengan nilai status pengirim. 2.2.3 Mekanisme Login ke Yahoo Server Sebelum bisa menggunakan layanan Yahoo Messenger, sebuah client Yahoo Messenger harus bisa melakukan login ke server Yahoo, berikut ini akan dijelaskan mekanisme dan rangkaian kejadian ketika sebuah client melakukan login ke server Yahoo. Gambar II-5 merepresentasikan rangkaian kejadian ketika proses login ke Yahoo Server berlangsung. Langkah pertama kali yang yang dilakukan adalah client mengirim paket data yang disebut Verify Packet ke server Yahoo untuk memeriksa apakah network path menuju server Yahoo ada dan bisa digunakan. Jika koneksi bisa diadakan maka server Yahoo Mengirimkan paket data yang disebut Yahoo Verify Packet. Struktur paket yang dikirimkan client Yahoo dan server Yahoo dapat dilihat pada Gambar II-6 dan Gambar II-7, paket yang dikirmkan panjangnya 0 dan hanya paket TCP ping biasa.

II-11 1 Verify* 2 Verify Ack * 3 Auth (Username) 4 Auth_Ack(Session ID, MD5 Challenge) 5 Auth_Resp(Password hash, system settings) 6 Buddy List Buddy List 7 Ping*(who s online) 8 Client skin and other system settings Yahoo Client Yahoo Server Gambar II-5 Rangkaian kejadian ketika proses login Gambar II-6 Struktur Yahoo Verify Packet dari client ke server Gambar II-7 Struktur Yahoo Verify Packet dari server ke client Setelah jalur komunikasi telah diverifikasi, selanjutnya client akan mengirim paket Yahoo Auth. Paket ini akan berisi username yang telah terdaftar di Yahoo yang meminta layanan ke server Yahoo. Selanjutnya server merespon permintaan dari client tadi dengan sebuah challenge string dan sebuah session ID. Session ID inilah akan digunakan sebagai penanda komunikasi utam hingga koneksi berakhir atau server mengirimkan session ID yang baru. Challenge string berupa sederetan karakter acak yang harus di hash dengan fungsi MD5 yang

II-12 ada di client. Struktur paket data yang dipertukarkan selama tahap authorisasi dapat dilihat pada gambar Gambar II-8 dan Gambar II-9. Gambar II-8 Yahoo Auth Packet dari client ke server Gambar II-9 Yahoo Auth Packet dari server ke client Setelah client menerima challenge string, kemudian client akan menggabungkannya dengan password untuk kemudian dihitung nilai hash nya dengan MD5. Hasil fungsi hash tadi akan dipecah menjadi dua field data, dengan key 6 dan key 96, dan dikirimkan ke server. Selain itu, bersamaan dengan nilai hash password tadi, dikirimkan juga data client lain seperti versi client, keduanya tadi akan dikirimkan melalui satu paket data yang disebut Yahoo Auth Resp Packet, struktur dari paket Auth Resp dapat dilihat pada Gambar II-10. Gambar II-10 Yahoo Auth Resp dari client ke server Setelah password yang valid telah diterima dari client, username akan diperbolehkan login, dan tidak ada informasi lain yang dibutuhkan dari client sampai saat ini. Akhirnya, setelah packet Auth Resp diterima server, dan server mengirim paket yang berisi buddy list untuk username yang login tadi. Paket yang berisi buddy list tadi disebut Yahoo List Packet. Paket ini adalah paket yang berisi banyak header YMSG dan bisa dikirim dalam beberapa paket

II-13 berurutan. Tentunya, ukuran packet yang berisi friendlist ini tergantung dari jumlah contact dan jumlah ignore contact yang dimiliki user tersebut, key untuk buddy list adalah 87 dan 88 untuk ignore list, struktur paketnya bisa dilihat dalam Gambar II-11, Gambar II-12 dan Gambar II-13 Gambar II-11 Yahoo List Packet dari server ke client Gambar II-12 Yahoo List Packet dari server ke client (lanjutan) Gambar II-13 Yahoo List Packet dari server ke client (akhir) Setelah paket buddy diterima client, paket yang lain menyusul, paket ini disebut Yahoo Ping dan mengandung informasi contact yang sedang online. Seperti informasi Yahoo List tadi, paket Yahoo ping ini bisa berupa beberapa paket beruntun tergantung banyaknya buddies yang dimiliki username tersebut. Diakhir proses login, server mengirimkan pesan tidak penting, misalnya pesan updates to LaunchCast Radio, stock quotes, weather, dan Yahoo Insider, dan simpanan konfigurasi client sebelumnya. 2.3 Yahoo Messenger Library Library yang digunakan untuk menangani protokol Yahoo Messenger adalah JYMSG versi 0.61 yang dirilis oleh S.E.Morris pada tahun 2005 di http://jymsg9.sourceforge.net/. API ini menyediakan suatu cara bagi aplikasi yang dibuat dengan java untuk tersambung dan menggunakan protokol Yahoo Messenger. Versi protokol yang didukung adalah versi 9,10,11 dan 12. Library ini dikembangkan dengan J2SE 1.4. Setiap kelas didalam API ini bisa

II-14 digunakan untuk membuat sebuah aplikasi Yahoo Messenger. Lisensi dari API ini adalah GPL dan sudah banyak client Yahoo Messenger yang menggunakan API ini. Penjelasan library ini hanya seputar kelas-kelas utama yang akan disesuaikan dengan pengembangan aplikasi. Gambar II-14 Berikut adalah keterhubungan kelas-kelas utama dalam library yang digunakan untuk menangani protokol Yahoo Messenger. Gambar II-14 Keterhubungan kelas-kelas utama dalam library 2.3.1 Kelas-kelas Utama Berikut ini akan dijelaskan kelas-kelas utama dalam JYMSG. Kelas-kelas ini akan dimodifikasi agar bisa berjalan di J2ME, agar bisa digunakan dalam pengembangan aplikasi mobile client Yahoo Messenger. Fungsi fungsi utama yang ada di setiap kelas-kelas utama bisa dilihat di 0. Tabel II-1 Kelas utama yang ada dalam library No Nama Kelas Deskripsi 1. YahooUser Kelas ini merepresentasikan sebuah Yahoo User yang diketahui, apakah sudah ada dalam friend list atau belum. Atribut kelas ini berupa status login user, status user dan apakah user tersebut sudah menjadi friend. 2. YahooGroup Kelas ini merepresentasikan sebuah group user dari friend list, group berisi YahooUser yang sudah ada dalam friend list. YMSGPacket Kelas yang berisi struktur data untuk menyimpan 3. informasi dari sebuah paket data message Yahoo Messenger. YMSGInputStream Turunan dari kelas BufferedInputStream untuk 4. memproses paket data yang didefinisikan kelas YMSGPacket 5. PacketBodyBuffer Kelas yang menangani paket data, agar paket data yang dikirim selalu setiap 1024byte 6. ConnectionHandler Superclass dari kelas Connection lainnya yang menangani koneksi dari sebuah Session.

II-15 7. 8. 9. DirectConnectionHandler Turunan dari kelas Connection yang menspesifikasikan koneksi langsung dengan menggunakan socket, kelas inilah yang akan dimodifikasi sebagai kelas utama koneksi dalam pengembangan aplikasi mobile client Yahoo Messenger. Session Merepresentasikan sebuah session dalam Yahoo Messenger. Ini adalah kelas utama yang menangani keseluruhan proses yang terjadi di Yahoo Messenger. SessionEvent Kelas ini merepresentasikan event dari sebuah message yang diterima, merupakan superclass dari kelas-kelas event lain. Message bisa berupa notifikasi pesan baru, error, exception, ataupun notifikasi yang lain (contoh : email baru diterima). Selain itu JYMSG juga menyediakan defined variable yang berupa konstanta terdefinisi yang akan digunakan di kelas-kelas utama. Defined variable ini bisa dilihat di 0. 2.3.2 Batasan Library Library JYMSG belum mendukung beberapa fitur Yahoo Messenger lainnya, seperti : 1. P2P file transfer : Belum diimplementasikan pengiriman dan penerimaan file langsung tanpa melalui server internal Yahoo. 2. Avatar : Tidak mendukung penampilan avatar dari user. 3. Stealth : Belum mendukung Stealth setting untuk contact yang ada di friend list. 4. Webcam : Fungsi web camera di Yahoo Messenger yang belum ada 5. Voice Chat : Belum bisa mengadakan percakapan dengan menggunakan voice (suara) 6. Games : Games yang menggunakan username yahoo sebagai player. 7. Imvironments: Fungsi Imvironments 8. Mobile/cell phone chat via SMS: Fitur ini tidak diimplementasikan karena bukan bagian dari protokol Yahoo Messenger 9. Tools Yahoo lain: Seperti calendar dan plugin lain seperti Yahoo widget, dan sebagainya.