BAB II DASAR TEORI 2.1 Pendahuluan Pada dasarnya, tujuan dari pembuatan layanan katalog perpustakaan bergerak adalah memberikan layanan informasi secara detil dari suatu buku yang ada di perpustakaan yang ditampilkan dalam emulator ponsel. Untuk membuat tampilan itu, maka diperlukan software untuk membuatnya. Dalam buku ini, penulis menggunakan software J2METM (Java 2 Platform, Micro Edition), selain itu juga digunakan J2ME Wireless Toolkit sebagai emulator dan JCreator sebagai editor. 2.2 Protokol TCP/IP Dalam dunia komunikasi data komputer, protokol mengatur bagaimana sebuah komputer berkomunikasi dengan komputer lain. Dalam jaringan komputer dapat digunakan berbagai macam protokol, tetapi agar dua buah komputer dapat berkomuniksi harus menggunakan protokol yang sama. TCP/IP (Transport Control Protocol / Internet Protocol) merupakan sekelompok protokol yang mengatur komunikasi data komputer[1]. Karena menggunakan bahasa yang sama, dalam hal ini protokol TCP/IP, perbedaan jenis komputer dan sistem operasi tidak menjadi suatu masalah, dan komputer yang menggunakan protokol itu dapat berhubungan dengan komputer lain. 2.3 URL (Uniform Resource Locator) URL dapat didefinisikan sebagai sarana untuk menentukan alamat yang akan digunakan untuk mengakses data dari server. URL akan mengantarkan browser ke alamat yang dituju. Secara garis besar URL terdiri dari : jenis protokol yang akan digunakan, nama webserver, dan directori. Keseluruhan URL yang lengkap dapat ditulis sebagai berikut : Protokol://nama-host.namadomain/path/namafile?query#fragment Tabel 2.1 Bagian-bagian URL Bagian Penjelasan Protokol Jenis protokol yang akan digunakan (http, ftp, dll) Nama-host Nama host yang dipanggil atau IP (internet protocol) address Path Lokasi path/directori tempat file diletakan pada webserver. Nama file Nama file yang dipanggil Query Jenis query string yang akan digunakan untuk keperluan CGI Fragment 1 Menunjukan letak lokasi tertentu pada sebuah dokumen. Onno W. Purbo, Adnan Basamalah, dan Ismail Fahmi, TCP/IP Standar, Desain dan Implementasi (Jakarta 2001), hal 11 6 2.4 Java 2.4.1 Pengenalan Bahasa Java Java mengklasifikasikan teknologinya kedalam tiga platform yang berbeda, yaitu JavaTM 2 Platform Standart Edition (J2SETM), JavaTM 2 Platform Enterprise Edition (J2EETM), JavaTM 2 Platform Micro Edition (J2METM). Java merupakan bahasa pemrograman yang 100 % berorientasi object (OOP). Dengan selogannya write once run everywhere java dirancang untuk dapat dijalankan di semua platform atau operating system, tanpa peduli apakah arsitektur perangkat berupa Intel, AMD, Sun Sparc, Power PC.[2] Aplikasi java mampu berjalan di semuanya tanpa perlu dikompilasi ulang. Semua itu bisa dilakukan karena java bersifat neutral architecture, compiler java mengkompilasi kode program java untuk menghasilkan kode yang netral terhadap semua arsitektur perangkat keras yang disebut sebagai java bytecode, semuanya berjalan diatas JVM (Java Virtual Machine).[3] JVM adalah jembatan antara program kita dengan kompleksitas dan keunikan platform di mana program kita berjalan. Seperti halnya bahasa pemrograman lain kode java diketik dengan menggunakan teks editor, kemudian menyimpannya sebagai file dengan ekstensi java. Lalu java compiler akan mengkompilasi kode tersebut menjadi java bytecode, yang tersimpan sebagai sebuah file berekstensi class. Java bytecode itu kemudian akan ditangani untuk dieksekusi oleh JVM. 2 3 Ady Wicaksono, Dasar-Dasar Pemrograman Java (Jakarta, 2002), hal 14 Onno W. Purbo, Trik Pemrograman Java untuk Jaringan dan Internet (Jakarta, 2000), hal 7 7 myProgram.java Intepreter 001 010 110 100 ... myProgram.class My Program Compiler Gambar 2.1 Proses kompilasi dan dijalankannya aplikasi Java Berikut ini merupakan contoh program Java sederhana untuk menampilkan string ”Say Hello to Java”. // Nama file : helloWorld.java /* Deskripsi : Program yang menampilkan Hello to Java" */ string "Say class helloWorld { public static void main(String args[]) { System.out.println("Say Hello to Java"); } } Dalam bahasa Java, nama filenya harus sama dengan nama class-nya.[4] Pada contoh diatas nama filenya adalah “helloWorld.java” dan nama class-nya adalah class helloWorld. Pada baris pertama dan kedua terdapat tanda “//” dan “/*...*/”. Tanda ini merupakan komentar program dari aplikasi Java diatas. Semua teks yang berada sebaris atau diantara tanda ini dianggap sebagai komentar dan diabaikan oleh Java Compiler. Pada baris selanjutnya terdapat perintah : class helloWorld { 4 Ady Wicaksono, Op.cit. hal. 21 8 } ……………………….. Perintah ini merupakan definisi nama class Java. Sebuah class merupakan blueprint atau template yang menggambarkan data (berupa variable) dan method (berupa fungsi-fungsi dan prosedur). Pada baris selanjutnya terdapat perintah : public static void main(String args[]) { ……………………... } Perintah tersebut merupakan method utama dalam class helloWorld yang kita definisikan. Setiap alikasi Java harus mengandung definisi main method diatas. Jika aplikasi Java tidak mengandung main method, maka akan terjadi kesalahan saat program dijalankan dengan pesan kesalahnnya sebagai berikut. Exception in thread “main” java.lang.NoSuchMethodError: main Pada baris selanjutnya terdapat perintah : System.out.println(“Say Hello to Java”); Perintah ini digunakan untuk mencetak string “Say Hello to Java” ke standar output (dalam hal ini adalah monitor). 2.4.2 Konsep Orientasi Object dalam Java Java adalah bahasa pemrograman yang 100 % berorientasi object. Object mempresentasikan entitas pada dunia nyata (real world entity). Sebagai analogi, kita tidak melihat mobil sebagai susunan puluhan ribu komponen, kita melihatnya sebagai object-object tertentu dengan sifat uniknya. Dalam membuat mobil kita memulai dari memecah-mecah kompleksitas sistem mobil ke dalam 9 bagian-bagian kecil (seperti roda, kemudi, dan sebagainya). Pada masing-masing bagian kecil itu kita definisikan field-field, seperti warna atau daya cakram. Selain itu kita definisikan apa saja yang bisa dilakukan terhadap bagian-bagian itu, perintah-perintah yang bisa diterima itu disebut method. Kemudian, kita definisikan relasi antar object dan bagaimana interaksinya. Antarmuka dalam interaksi antar object tersebut adalah method-method yang dimiliki object. Object-object itu berinteraksi dengan saling memanggil method dari suatu object. 2.4.3 Klasifikasi Java 2.4.3.1 Java 2 Platform Standard Edition (J2SE) Platform ini berisi class-class inti pada java dan GraphicalUser Interface (GUI). Class-class inti ini diimplementasikan untuk manipulasi string, multijalinan, dan penanganan eksepsi atau kesalahan. Dukungan untuk memanipulasi teks terdapat pada class String. Semua interaksi dengan string karakter dilakukan dengan class string tersebut. Multi-jalinan atau multithreading ditangani dengan class Thread . Dengan Thread kita dapat memanipulasi langsung keadaan-keadaan pada proses yang sederhana, seperti prioritas, dan apakah jalinannya berjalan, diam, atau ditunda. Penanganan eksepsi berhubungan dengan class Exception dan Error.[5] Banyak fungsi dasar akan mengeluarkan eksepsi yang harus ditangani secara khusus oleh program yang dibuat agar dapat di-compile. Semua proses I/O yang dilakukan oleh 5 Patrick Naughton, Konsep Pemrograman Java (Yogyakarta, 2000), hal 41 10 program Java terdapat pada class I/O, serta class utilitas yang merupakan gambaran serbaguna dalam struktur data. 2.4.3.2 Java 2 Platform Enterprise Edition (J2EE) Platform ini berupa paket yang berisi class-class dan interface-interface untuk mengembangkan aplikasi berbasis web, seperti class-class Servlet, Java Server Pages (JSP) dan Enterprise Java Beans. Aplikasi yang dibangun menggunakan platform J2EE akan terdiri atas komponen-komponen yang sering disebut dengan istilah J2EE Component yang merupakan unit-unit program, di mana masing-masing memiliki fungsionalitas dan dapat berkomunikasi dengan komponen lainnya sehingga dapat digabungkan untuk membangun aplikasi J2EE yang lebih besar.[6] Konsep teknologi komponen dalam industri software meniru teknologi serupa yang sudah diterapkan di dunia elektronik/hardware. Melalui konsep ini, sebuah peralatan elektronik seperti komputer dapat dibangun dari berbagai komponen yang masing-masing memiliki fungsi yang berbeda, seperti harddisk, disk drive, motherboard, memori, dan sebagainya. Spesifikasi J2EE mendefinisikan komponenkomponen sebagai berikut : • Aplikasi client yang merupakan komponen yang berjalan pada komputer client. • Teknologi komponen Java Servlet dan Java Server Pages (JSP) merupakan Web component yang berjalan pada server. 6 Albert Samuel, Aplikasi E-Commerce dengan Java Servlet (Jakarta, 2002), hal 56 11 • Komponen Database Server Machine merupakan komponen database yang berjalan pada server. 2.4.3.2.1 Java Servlet Servlet adalah teknologi server-side yang dikembangkan oleh Sun Microsystem. Servlet merupakan class yang didefinisikan dalam bahasa pemrograman Java dan digunakan untuk meningkatkan kemampuan Web Server dalam model pemrograman request-respons.[7] Servlet dapat menerima request dan menghasilkan respons melalui protokol komunikasi HTTP Servlet, yang diimplementasikan dengan class Java javax.servlet.http.HttpServlet. HTTP Servlet menerima HTTP request dan men-generate HTTP respons. Karena Servlet merupakan resourse yang terdapat di server, servlet dapat mengakses berbagai resourse server lainnya, seperti JSP dan database. Java memiliki dua buah paket, yang menyediakan interface dan class untuk menulis servlet, kedua paket tersebut adalah javax.servlet dan javax.servlet.http. 2.4.3.3 Java 2 Platform Micro Edition (J2ME) Platform ini menyediakan lingkungan aplikasi yang optimal untuk embedded system yang digunakan untuk consumer product seperti pager, handphone, PDA, 3G handset, Webphone, dan system navigasi mobil. Salah satu cirri khas dari perangkat-perangkat ini adalah ukurannya kecil baik yang secara fisik maupun ukuran memorinya. Oleh karena itu J2ME hanya menyediakan 7 Ibid. hal. 33 12 subset dari implementasi J2SE yang benar-benar dibutuhkan dalam lingkungan mobile device. Hampir semua vendor-vendor mobile device seperi Nokia, Siemens menggunakan Java untuk aplikasi yang mereka buat. 2.4.3.4 J2ME Wireless Toolkit Toolkit ini digunakan untuk membangun aplikasi Java padaponsel, pada toolkit ini terdapat emulator dimana seolah-olah sebagai ponsel dengan fungsi yang sama sesuai dengan aslinya. Gambar 2.2 Tampilan J2ME Wireless Toolkit dan Emulator Java 13 2.4.4 Tipe Variabel Dalam Java Variabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah program dengan tipe tertentu. Tipe variablenya meliputi : 2.4.4.1 Tipe Boolean Dalam java, setiap variable yang bertipe Boolean hanya akan memiliki nilai true atau false 2.4.4.2 Tipe Numerik Adapun tipe numeruk dalam java adalah sebagai berikut : Tabel 2.2 Tipe variable numerik Nama Tipe Ukuran Range Nilai Byte 8 bit -128………127 Short 16 bit -32768……32767 Int 32 bit -2147483648….2147483647 Long 64 bit Char 16 bit -9223372036854775808 … 9223372036854775808 0…..65535 2.4.5 Operator Dalam Java Operator digunakan untuk memanipulasi variable data dalam program. Adapun operator dalam java dibedakan menjadi beberapa jenis : 2.4.5.1 Operator Shift Operator shift dalam Java digunakan untuk manipulasi bit. Operator shift digunakan untuk menggeser bit-bit sesuai yang diinginkan. 14 Adapun operator shift dalam Java, yakni : Tabel 2.3 Operator Shift dalam Java Operator Penggunaan Deskripsi >> Op1 >> Op2 Menggeser bit Op1 ke kanan sejauh Op2 >> Op1 << Op2 Menggeser bit Op1 ke kiri sejauh Op2 2.4.5.2 Operator Aritmatika Sama halnya dengan semua bahasa pemrograman, java menyediakan operator-oparator aritmatika untuk manipulasi variable data numeric. Tabel penggunaan dan jenis operator aritmatika dalam java bisa dilihat di bawah ini : Tabel 2.4 Operator Aritmatika dalam Java Operator Penggunaan Deskripsi + Op1 + Op2 Menambahkan Op1 dengan Op2 - Op1 - Op2 Mengurangkan Op1 dengan Op2 * Op1 * Op2 Mengalikan Op1 dengan Op2 / Op1 / Op2 Membagi Op1 dengan Op2 % Op1 % Op2 Menghasilkan sisa hasil bagi antara Op1 dengan Op2 2.4.5.3 Operator Bitwise Operator bitwise dalam Java juga digunakan untuk manipulasi bit, lebih lengkapnya dapat dilihat dalam tabel berikut ini : 15 Tabel 2.5 Operator Bitwise dalam Java Operator Penggunaan Deskripsi & Op1 & Op2 | Op1 | Op2 Bitwise OR ^ Op1 ^ Op2 Bitwise XOR ~ Op1 ~ Op2 Bitwise Complement Bitwise AND 2.4.5.4 Operator Relasioanal Operator relasional dalam java digunakan untuk membandingkan antara dua variable data, lebih lengkapnya dapat dilihat dalam table berikut ini : Tabel 2.6 Operator Relasianal dalam Java Operator Penggunaan Deskripsi > Op1 > Op2 Menghasilkan true jika Op1 lebih besar dari Op2 < Op1 < Op2 Menghasilkan true jika Op1 lebih kecil dari OP2 >= Op1 >= Op2 Menghasilkan true jika Op1 lebih besar atau sama dengan Op2 <= Op1 <= Op2 Menghasilkan true jika Op1 lebih kecil atau sama dengan Op2 == Op1 == Op2 Menghasilkan true jika Op1 sama dengan Op2 != Op1 != Op2 Menghasilkan true jika Op1 tidak sama dengan Op2 16 2.4.5.5 Operator Kondisional Operator kondisional dalam java ada enam macam sebagaimana digambarkan dalam tabel berikut ini : Tabel 2.7 Operator Kondisional dalam Java Operator Penggunaan && Op1 && Op2 || Op1 || Op2 ! !Op1 & Op1 & Op2 | Op1 | Op2 Deskripsi Menghasilkan true jika Op1 dan Op2 keduanya bernilai boolean true Menghasilkan true jika Op1 atau Op2, salah satunya bernilai boolean true Menghasilkan true jika Op1 bernilai boolean false Bitwise AND, menghasilkan true jika Op1 dan Op2 bernilai true Bitwise OR, menghasilkan true jika Op1 atau Op2 salah satuya bernilai true Menghasilkan true jika salah satu diantara ^ Op1 ^ Op2 Op1 atau Op2 bernilai true, namun tidak keduanya 2.4.6 Struktur Kontrol dalam Java Dalam pembuatan aplikasi, sering ditemui beberapa kondisi yang mengharuskan alur program bercabang atau dengan kata lain memilih satu dari beberapa kondisi yang tersedia sebelum berlanjut ke alur program berikutnya, untuk itu dibutuhkan struktur kontrol. 17 2.4.6.1 While Statement while digunakan untuk mendeteksi sebuah blok secara berulang selama memenuhi kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut. Whlile (ekspresi) { ………statement……… } Jadi, selama ekspresi bernilai true, statement yang ada akan dieksekusi terus menerus. 2.4.6.2 Do-While Sama halnya dengan while, statement do-while digunakan untuk mengeksekusi sebuah blok secara berulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while, ekspresi diperiksa pada saat awal, jadi ada kemungkinan blok statement dalam while tidak pernah dieksekusi. Pada penggunaan do-while, ekspresi tidak diperiksa pada saat awal eksekusi, jadi minimal blok statement do-while akan dieksekusi sekali. Sintaks penggunaannya adalah sebagai berikut : do { ……….statement………. } while (ekspresi) 2.4.6.3 For Statement for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuah range tertentu. Sintaks penggunaannya adalah sebagai berikut : 18 for (inisialisasi; terminasi; increment) { ...............statement............... } Inisilisasi dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasi digunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresi yang akan dieksekusi setiap selesai melakukan satu looping (pengulangan). Perlu diperhatikan bahwa ketiga bagian didalam for( ) bersifat opsional, jadi boleh tidak ada. Namun, jika ketiga bagian diatas kosong, akan menyebabkan terjadinya pengulangan tanpa henti (loop forever). 2.4.6.4 if-Else Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah kondisi tertentu. Ada kalanya kita menginginkan dua percabangan, yakni jika suatu kondisi terpenuhi, lakukan aksi A, jika tidak, lakukan aksi B. Dua percabangan ini dimungkinkan pula dengan menggunakan if-else. Sintaks penggunaannya, sebagai berikut : If (kondisi) { ................statement1................ } else { ................statement2................. } Jika kondisi bernilai true, statement 1 akan dijalankan. Sebaliknya, jika kondisi bernilai false, statement 2 yang akan dijalankan. 19 2.4.7 Koneksi Java dengan Database MySQL Untuk melakukan koneksi dengan database MySQL, dapat digunakan perintah Java sebagai berikut : Pada baris pertama terdapat perintah : public void connect ( ) { …………………. } Perintah diatas merupakan method yang digunakan untuk membuka koneksi dengan database MySQL. Pada baris selanjutnya terdapat perintah : try { } catch { } ............................ ........................... Try dan catch digunakan untuk melakukan error handling apabila koneksi tidak dapat dilakukan yang dikarenakan, misal, tidak ditemukannya database yang dimaksud atau tidak adanya driver yang dipakai. Dan didalam baris try dan catch, terdapat perintah sebagai berikut : Class.forName(“com.mysql.jdbc.Driver”) 20 Digunakan untuk melakukan pemanggilan driver yang akan digunakan untuk aplikasi yang berhubungan dengan database MySql. DriverManager.getConnection("jdbc:mysql://localhost:3306/library"); , Digunakan untuk melakukan koneksi kedalam database library yang berada pada localhost dengan port : 3306. con.createStatement( ); Digunakan untuk membuat statement-statement berfungsi untuk melakukan query yang berhubungan dengan database. 2.5 Tomcat Servlet Engine Tomcat merupakan servlet engine open source yang termasuk dalam proyek Jakarta yang dikerjakan oleh Apache Software Foundation. Tomcat sendiri ditulis sepenuhnya dengan bahasa Java sehingga secara otomatis aplikasi web yang dijalankan dengan Tomcat bisa berjalan di Windows, Linux, atau Unix. 2.6 JCreator JCREATOR adalah salah satu editor yang digunakan untuk teknologi Java™. JCreator menyediakan kemampuan seperti : • Indentasi otomatis untuk penulisan bahasa pemrograman • Mampu membedakan warna tulisan untuk fungsi, variable, komentar, sehingga source code lebih mudah dibaca. 21