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
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 kelas-kelas 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
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).
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-refreshCanvas.
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.
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
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)
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.
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.
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.
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.
Yahoo Client Yahoo Server Verify*
Verify Ack *
Auth (Username)
Auth_Ack(Session ID, MD5 Challenge)
Auth_Resp(Password hash, system settings)
Buddy List
Buddy List
Ping*(who’s online)
Client skin and other system settings 1 2 3 4 5 6 7 8
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
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
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
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.
3.
YMSGPacket Kelas yang berisi struktur data untuk menyimpan
informasi dari sebuah paket data message Yahoo Messenger.
4.
YMSGInputStream Turunan dari kelas BufferedInputStream untuk
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
7.
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. 8.
Session Merepresentasikan sebuah session dalam Yahoo
Messenger. Ini adalah kelas utama yang menangani keseluruhan proses yang terjadi di Yahoo Messenger.
9.
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 Messengerlainnya, 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.