Menurut dua sumber (Wikipedia dan The Insight Research Corporation), pada tahun 2008 pengguna yang mengakses internet melalui perangkat mobile seperti handphone, smartphone dan sebagainya telah melebihi jumlah pengguna yang mengakses internet melalui PC. Fenomena ini dipicu oleh koneksi internet dari perangkat mobile yang semakin mudah dan cepat. Banyak vendor yang tidak mau ketinggalan untuk melakukan investasi di bidang ini baik dalam hal infrastruktur, hardware bahkan software.
Memang investasi di bidang yang sedang tren jelas memang menguntungkan. Salah satunya dengan menciptakan aplikasi berbasis mobile yang terhubung dengan internet sehingga pengguna dapat melakukan interaksi yang lebih banyak. Nah.. berdasarkan latar belakang itulah penulis mengulas sebuah ulasan yang bertema mobile(J2ME) lengkap dengan pembuatan koneksi internetnya.. hehehe..
Sebenarnya, terdapat banyak cara dalam mengakses suatu data dalam jaringan dengan menggunakan J2ME. Namun, karena aplikasi yang akan kita bangun adalah sebuah aplikasi yang J2ME yang dikombinasikan dengan PHP, maka penulis tidak akan membahas jenis koneksi lain yang ada dalam J2ME
HTTP Connection Method GET
Dalam membuat sebuah aplikasi J2ME yang menggunakan koneksi dengan sebuah server seperti koneksi HTTP, ada baiknya kita menciptakan sebuah thread agar tidak terjadi deadlock. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut. Hal ini terjadi karena pada saat kita akan menciptakan sebuah koneksi, sistem dari ponsel akan menanyakan kepada kita pertanyaan seperti berikut.
“It’s ok to use airtime?”
Sistem ponsel menanyakan hal tersebut karena aplikasi yang kita buat tidak dikenali oleh sistem. Proses yang menanyakan pertanyaan kepada pengguna dan proses penciptaan koneksi yang terjadi secara serentak inilah yang menyebabkan terjadinya deadlock. Nah.. agar tidak terjadi deadlock, maka kita perlu membuat sebuah inner kelas thread untuk menciptakan suatu koneksi. Kenapa mesti menciptakan inner kelas.? Karena kita akan menggunakan kelas koneksi ini secara berluang-ulang.
Berikut adalah kode untuk membuat kelas koneksi dengan menggunakan HTTP dengan metode GET :
class koneksi extends Thread{String url=null;String hasil=null;
public koneksi(String url) {this.url=url;}
public void run() {InputStream iStrm=null;ByteArrayOutputStream bStrm=null;HttpConnection http=null;try {http=(HttpConnection) Connector.open(url);http.setRequestMethod(HttpConnection.GET);if (http.getResponseCode()==HttpConnection.HTTP_OK){int ch;iStrm=http.openInputStream();bStrm=new ByteArrayOutputStream();while((ch=iStrm.read()) !=-1){if ((ch!=10 && ch!=13)){bStrm.write(ch);}}hasil=new String(bStrm.toByteArray());System.out.println(hasil);}} catch (Exception e) {System.out.println(“Terdapat kesalahan”);}}
Kelas koneksi HTTP dalam J2ME secara sederhana dapat dibuat dengan cara mengetikkan kode-kode berikut :
String url=null;String hasil=null;
Baris ini berfungsi untuk mendeklarasikan varibel url dan variable hasil.
public konek(String url) {this.url=url;}
HttpConnection http=null;
Baris ini berfungsi untuk menginstanisasi sebuah koneksi http.
if (http.getResponseCode()==HttpConnection.HTTP_OK){
Baris ini berfungsi untuk mengecek status koneksi apakah sudah OK.
http=(HttpConnection) Connector.open(‘http://domainanda.com’);
Skrip diatas merupakan kode untuk membuka suatu koneksi sesuai dengan URL Anda.
http.setRequestMethod(HttpConnection.GET);
Baris ini berfungsi untuk menentukan metode GET sebagai metode pengiriman data.
int ch;
Baris ini berfungsi untuk mendeklarasikan variable yang bertipe int yang akan menampung inputstream dari server satu persatu sebelum dipindahkan ke byte array outputstream.
InputStream iStrm=null;
Baris ini berfungsi untuk mengintanisasi sebuah input stream yang akan menerima data yang masuk dari server.
ByteArrayOutputStream bStrm=null;
Baris ini berfungsi untuk mengintanisasi sebuah byte output stream yang akan menampung data ke aplikasi yang kita bangun.
while((ch=iStrm.read()) !=-1){if ((ch!=10 && ch!=13)){bStrm.write(ch);}}
Baris ini berfungsi untuk memindahkan stream ke variable ch. Selain itu, baris kedua pada kode diatas berfungsi untuk mencegah adanya carriage return seperti \r dan \n. Pada baris ketiga, byte arrat output stream akan diisikan dengan data integer dari variable ch.
hasil=new String(bStrm.toByteArray());
Baris ini berfungsi untuk melakukan konversi byte array yang terdapat pada output stream menjadi variabel string yang disimpan pada variabel hasil.
System.out.println(hasil);
Baris ini berfungsi untuk menampilkan hasil yang dikembalikan dari server ke jendela output. Jangan lupa letakan kode tersebut di paling bawa sebelum tanda “}”. Jika terdapat tanda kesalahan yang ditandai dengan warna merah, janganlah panik. Anda dapat menghilangkan tanda tersebut dengan cara klik kanan dan pilihlah fix imports pada menu pop-up yang muncul.
Selanjutnya, lakukan penyelesaian dengan cara mengetikan kode berikut pada pendeklarasian variabel dibagian paling atas.
private String url= "http://localhost/latihan?nama=lokomedia";
private Thread thread = null;
Baris pertama pada kode diatas berfungsi untuk menentukan url yang akan dikirim oleh aplikasi ini. Sedangkan baris kedua berfungsi untuk menciiptakan thread kosong yang akan kita instanisasikan dengan kelas koneksi yang kita buat. Selanjutnya, tambahkan kode berikut untuk menjalankan thread koneksi yang anda buat.
public void startMIDlet() {switchDisplayable(null, getForm());Thread alur=new koneksi(url);alur.start();}
Nah.. sampai tahap ini, pembuatan koneksi dengan metode GET pada J2ME telah selesai, langkah selanjutnya adalah menciptakan sebuah kode yang akan memberikan sebuah respon dari sisi server dengan menggunakan. Adapun langkah-langkah membangun server yang sesuai dengan kode diatas adalah sebagai berikut :
· Bukalah aditor kesayangan Anda. Dalam hal ini penulis menggunakan Dreamwever CS4
· Buat file PHP baru dengan menekan tombol PHP pada menu startup dreamweaver.
Kemudian, ketikan kode berikut untuk menangkap variabel yang dikirim dari J2ME dengan metode GET. Simpanlah file tersebut dengan nama latihan.php
<?php
$nama=$_GET['nama'];
echo "Selamat Belajar Bersama $nama";
?>
Nah.. bila sudah sampai disini, saatnya kita melakukan pengujian. Jalankan program J2ME yang buat Anda buat dengan menekan tombol F6. Jika aplikasi Anda berjalan dengan baik, maka Anda akan mendapati tulisan berikut pada jendela output IDE Netbeans Anda.
Versi PDF
Source Code J2ME
Soucre Code Server
thx gan.. u save my live.. keep sharing.. god blessing u
Thank fren..
Nice too meet u
hoho..
pak saya punya problem nich tentang j2me gak mau nampilkan data dari database filenya ada di untuk aplikasi servernya
http://www.4shared.com/file/9UJ8CcEG/server_pariwisata.html
dan untuk aplikasi clientnya
http://www.4shared.com/file/0OiBRRf0/client_pariwisata.html
@Joeley
Makasih atas pertanyaannya, Saya coba dulu y,
ntar segera saya kabari :p
Saya sudah lihat,
bisa tolong lebih spesifik bagian mana yang gx tampil??