• Tidak ada hasil yang ditemukan

Generic Connection Framework (GCF)

V Pengaksesan Jaringan

V.2 Generic Connection Framework (GCF)

V Pengaksesan Jaringan

V.1 Lingkungan Perangkat Mobile

Salah satu kelebihan dari perangkat mobile adalah kemampuannya untuk membentuk koneksi ke suatu jaringan. Kemampuan untuk membentuk koneksi ditambah dengan kemampuan untuk mengirim dan menerima data memberikan peluang bagi pengembang untuk mengembangkan suatu aplikasi bergerak yang menarik.

Perancang J2ME platform mempertimbangkan berbagai protokol dan teknologi yang saat ini sedang berkembang. Teknologi J2ME mengembangkan sebuah lingkup pengembangan sehingga teknologi ini dapat berintegrasi dengan aplikasi berbasis web yang saat ini ada atau aplikasi lain yang mendukung protokol HTTP. Gambar V‐1 menunjukkan lingkungan MIDP yang berintegrasi dengan jaringan saat ini ada untuk mempertukarkan informasi.

Gambar V‐1 Arsitektur jaringan perangkat mobile

V.2 Generic Connection Framework (GCF)

MIDP menyediakan sekumpulan kelas dan interface bernama Generic Connection Framework (GCF) untuk membentuk koneksi. Pada MIDP 1.0 koneksi yang dapat digunakan hanyalah HTTP. Pada MIDP 2.0 koneksi HTTP diperluas dengan menambah suatu fitur koneksi HTTP yang aman bernama HTTPS (HTTP Secure). HTTPS ini memungkinkan pertukaran data melalui jalur yang aman. Selain HTTPS ada beberapa koneksi yang didefinisikan pada MIDP 2.0.

70

Paket J2SE seperti paket java.net dan java.io menawarkan kelas‐kelas untuk jaringan yang sangat lengkap. Namun, API ini terlalu besar untuk diterapkan di lingkungan J2ME. Untuk itu, CLDC menawarkan sebuah subset kelas J2SE java.io yang dapat diterapkan di lingkungan perangkat bergerak.

Di MIDP paket javax.microedition.io melengkapi paket java.io CLDC dan mengimplementasikan GCF yang didefinisikan oleh CLDC. Paket tersebut terdiri dari kelas Connector, kelas ConnectionNotFoundException, dan hirarki interface berikut ini.

Gambar V‐2 Interface inti GCF

Interface di atas diimplementasikan oleh kelas‐kelas spesifik implementasi MIDP perangkat bergerak.

Setiap vendor perangkat mobile mengimplementasikan interface tersebut secara berbeda. Berikut gambar yang menunjukkan interface GCF dan kelas‐kelasnya.

71

Gambar V‐3 Interface dan kelas GCF

Interface GCF juga mendukung subset TCP/IP, Wireless Application Protocol (WAP) dan socket. Kelas yang

memegang peranan sentral pada paket javax.microedition.io adalah kelas Connector. Kelas ini bertanggung jawab sebagai intrepeter URL, instantiator kelas, dan mengembalikan interface yang tepat ke pemanggilnya.

Interface GCF menyediakan tingkat fungsionalitas yang beragam. Ketika menulis aplikasi perlu ditentukan interface mana yang dibutuhkan aplikasi. Sebagai contoh, jika aplikasi hanya memerlukan kemampuan

untuk membuat output stream saja tanpa memerlukan pembacaan input, maka interface OutputConnection merupakan interface yang tepat untuk digunakan. Tabel berikut ini menunjukkan daftar interface GCF yang didefinisikan CLDC.

Tabel V‐1 Daftar Interface GCF

Interface Deskripsi

Connection Merupakan kelas dasar untuk semua interface GCF dan mendefinisikan method close()

DatagramConnection Menangani input dan output (I/O) berbasis paket InputConnection Menangani koneksi input stream

OutputConnection Menangani koneksi output stream

StreamConnectionNotifier Menangani koneksi inputstream yang asinkron

StreamConnection Mengkombinasikan koneksi I/O ke dalam satu interface ContentConnection Menangani sebuah koneksi yang dapat menentukan informasi

tipe content

72

GCF didefinisikan sebagai bagian dari konfigurasi CLDC. Namun, agar lebih fleksibel, CLDC tidak mendefinisikan protokol yang diperlukan oleh profile. Berdasarkan keinginan para pengembang, setidaktidaknya MIDP harus mendukung protokol HTTP dan HTTPS.

Perusahaan pembuat perangkat bergerak dapat menambahkan protokol yang sesuai dengan kebutuhannya. Saat ini perangkat yang mendukung MIDP sudah mendukung protokol berikut ini. a.

Datagram

b. Komunikasi serial

c. Short Message Service (SMS) d. Multimedia Message Service (MMS) e. Cell Broadcast Service (CBS)

f. Socket

g. Secure Socket Layer (SSL) h. Server Socket

Untuk mengetahui protokol yang didukung oleh suatu perangkat bergerak beserta kapabilitasnya, pengembang harus membaca dokumentasi perangkat tersebut.

V.3 Connector

Kelas Connector merupakan inti dari GCF. Kelas Connector merupakan kelas factory yang digunakan untuk membuat koneksi ke suatu jaringan. Koneksi yang dikembalikan dari berbagai static method disebut

polymorphic karena obyek yang dikembalikan dapat di‐casting ke beberapa interface yang beragam. Kelas Connector digunakan untuk hal berikut :

a. Koneksi ke suatu jaringan dan mendapatkan informasi tentang jaringan tersebut.

b. Mengembalikan obyek InputStream sehingga aplikasi dapat segera mulai menerima data. c. Mengembalikan obyek OutputStream sehingga aplikasi dapat segera mulai mengirim data. Salah satu dari koneksi‐koneksi tersebut dapat mendukung beberapa protokol, salah satu protokol yang harus didukung oleh koneksi tersebut adalah protokol HTTP atau HTTPS. Vendor perangkat mobile dapat menambah protokol tambahan yang menurut mereka sangat diperlukan. Sebagai contoh, beberapa perusahaan pembuat perangkat bergerak mengijinkanpembentukan koneksi socket atau menggunakan

interface GCF untuk koneksi melalui port infra merah. Namun, penggunaan protokol tersebut dalam

sebuah aplikasi akan menyebabkan aplikasi tersebut tidak fleksibel dan mungkin terbatas pada perangkat yang mendukung protokol tersebut.

Untuk menyediakan berbagai tingkatan dukungan protokol, interface GCF memberikan format URL untuk menentukan protokol apa yang akan digunakan untuk sebuah koneksi.

73

Kelas Connector merupakan kelas berbasis pada factory design pattern. Informasi yang relevan tentang konstruksi sebuah obyek dikirim ke factory. Berdasarkan informasi tersebut, factory mengembalikan sebuah obyek yang diperlukan dalam aplikasi dan informasi yang diperlukan GCF adalah URI. Untuk membuat obyek Connection, digunakan satu dari berbagai bentuk metod open(). Setelah koneksi dibuka dapat dibentuk stream yang didefinisikan dalam paket java.io untuk mengirim atau menerima

content. Tipe interface Connection yang dikembalikan bergantung dari tipe koneksinya. Contoh berikut

ini menunjukkan satu bentuk method open().

public static Connection open(String url, int mode, boolean timeOuts) throws IOException

Tabel V‐2 menunjukkan parameter yang dapat diisikan pada method Connector.open(). Tabel

V‐2 Parameter dalam Connector.open()

Parameter Deskripsi

String url URL

int mode Mode akses, seperti READ, WRITE dan

READ_WRITE

boolean timeouts Sebuah flag yang memberitahu bahwa koneksi perlu mengaktifkan eksepsi time‐out

Method open()merupakan metod yang di‐overload dan tidak semua parameter di atas selamanya

diperlukan, bergantung kebutuhan. Contoh berikut ini menunjukkan penggunaan method open() untuk beberapa tingkat aksesibilitas, mode, dan nilai time‐out.

a. Membaca/menulis koneksi menggunakan HTTP

Connector.open("http://www.jcc-itb.com/myData"); b. Membaca koneksi menggunakan HTTPS

Connector.open("https://www.jcc.com/Data",Connector.READ); c. Koneksi input menggunakan HTTP

Connector.openInputStream("http://www.jcc.com/data.txt");

Kelas Connector mengembalikan obyek Connection. Obyek yang dikembalikan tersebut dapat dicasting ke beberapa tipe interface yang didefinisikan GCF. Jika casting ke interface yang tipe protokolnya tidak valid, maka sebuah exception akan terjadi.

Informasi tentang koneksi yang terbentuk bisa didapatkan, namun GCF tidak dapat digunakan untuk mengirim dan menerima data tanpa membentuk obyek stream. Untuk itu, digunakan interface Connection yang mendefinisikan method‐method untuk mengakses interface InputStream dan OutputStream. Penggalan kode program berikut ini menunjukkan penggunaan kelas yang didefinisikan

74

GCF dan membuat sebuah koneksi, menerima informasi, dan menutup koneksi menggunakan standar

stream I/O.

Listing V‐1 Contoh penggunaan GCF untuk membentuk koneksi

import javax.microedition.io.*; import java.io.*;

...

try{

InputConnection in = (InputConnection)Connector.open(

"http://www.jcc.com/data.txt",Connector.READ);

InputStream input = in.OpenInputStream();

StringBuffer data = new StringBuffer(); char ch; while((ch=input.read()) != -1){ data.append((char)ch); } input.close(); in.close(); }catch(IOException ioe){

//tangani error di sini

}

...

Dokumen terkait