• Tidak ada hasil yang ditemukan

BAB II KAJIAN TERKAIT

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II KAJIAN TERKAIT"

Copied!
25
0
0

Teks penuh

(1)

II-1

BAB II

KAJIAN TERKAIT

II.1

Application Programming Interface

Pada bagian ini akan diberikan penjelasan mengenai Application Programming Interface (API) untuk menunjang pengerjaan Tugas Akhir ini. Penjelasan ini meliputi deskripsi dan tujuan API serta bagaimana menghasilkan API yang baik.

II.1.1 Deskripsi dan Tujuan API

Application Programming Interface (API) adalah sebuah teknologi yang memfasilitasi pertukaran informasi atau data antara dua atau lebih aplikasi perangkat lunak [BRA97]. API adalah antarmuka virtual antara dua fungsi perangkat lunak yang saling bekerja sama, seperti antara sebuah word processor dan sebuah spreadsheet. Sebuah API mendefinisikan bagaimana cara programmer memanfaatkan suatu fitur tertentu dari sebuah komputer. API tersedia untuk sistem windowing, sistem

file, sistem basisdata, serta sistem jaringan[FRE07].

Perkembangan teknologi API berawal dari penciptaan sebuah subrutin sederhana yang menyediakan kemampuan interoperability dan system modifiability untuk mendukung pertukaran data antar beberapa aplikasi. Subrutin tersebut hanya mampu melaksanakan perhitungan matematis sederhana hingga terbentuk sebuah API pustaka penghitungan yang hampir selalu ada pada setiap bahasa pemrograman. Dari sebuah subrutin sederhana tersebut mulai bermunculan gagasan-gagasan bagaimana API harus dikembangkan khususnya sejalan dengan berkembangnya paradigma pemrograman berorientasi objek yang mengakibatkan sekumpulan subrutin sejenis dapat dikumpulkan menjadi sebuah kelas pembungkus subrutin-subrutin tersebut [HIN96].

Dengan berkembangnya sebuah perangkat lunak menjadi sebuah sistem yang terdiri dari beberapa perangkat lunak lain (subsistem-subsistem) maka API juga berkembang untuk tetap mewujudkan tujuannya yaitu sebagai jembatan penghubung antar perangkat lunak. Perkembangan API diwujudkan dengan bertambahnya sifat API yakni mampu mendukung interoperability antar perangkat lunak. API tidak hanya lagi bertugas mempertukarkan data dan informasi antar subrutin dalam satu perangkat lunak namun juga mempertukarkan data dan informasi antar perangkat lunak. Dalam kasus ini API harus memiliki kemampuan komunikasi antar proses baik melalui perantara file, socket, atau layanan IPC lainnya.

Pada pengembangan sebuah sistem yang lebih luas, kadang sebuah API dapat menjadi sebuah

(2)

subsistem lain dan untuk mengakses fungsi-fungsi tersebut diperlukan koneksi tersendiri ke

middleware tersebut. Koneksi ke middleware umumnya dilakukan dengan menggunakan socket. Ada beberapa standar protokol pengaksesan middleware tersebut. Contoh-contoh protokol pengaksesan

middleware antara lain adalah:

Remote Procedure Calls (RPC) – sebuah perangkat lunak pengguna memanggil prosedur atau subrutin yang berjalan pada sebuah middleware jarak jauh, pemanggilan prosedur dapat berupa sinkron maupun asinkron.

Message Oriented Middleware (MOM) – sistem yang melakukan pooling data dan informasi ke sebuah middleware, data yang menunggu untuk diproses oleh subsistem-subsitem yang terdapat di sistem keseluruhan disimpan pada suatu middleware tersebut.

Object Request Broker (ORB) – protokol ini memungkinkan suatu perangkat lunak mengirim dan menerima objek dan meminta servis pada sebuah middleware berbasis objek.

Structured Query Language (SQL) – protokol (dan juga sebuah bahasa) pembacaan dan penulisan data yang tersimpan pada sebuah middleware basis data.

II.1.2 Pengembangan API

Pada proses pengembangan sebuah perangkat lunak baik API pada khususnya maupun perangkat lunak lain memerlukan kaidah-kaidah yang perlu dipahami dan diterapkan. API yang baik adalah API yang memiliki sifat-sifat sebagai berikut [BLO04]:

1. Mudah untuk dipelajari.

2. Mudah untuk digunakan, bahkan bila tanpa dokumentasi yang menyertainya. 3. Susah untuk disalahgunakan.

4. Berkinerja tinggi dalam menyelesaikan tugasnya. 5. Mudah untuk dikembangkan lebih lanjut.

Garis besar langkah-langkah dalam pengembangan API agar dapat menjadi API yang baik adalah sebagai berikut [BLO04]:

1. Kumpulkan kebutuhan API secara umum. Dimulai dengan pembangkitan spesifikasi sederhana, yang kemudian dikembangkan secara bertahap. Dari spesifikasi tersebut harus terlihat jelas kebutuhan fungsionalitas dari API yang akan dikembangkan.

2. Perhatikan prinsip-prinsip umum. Prinsip-prinsip umum yang harus diperhatikan selama pengembangan API adalah:

a. Fungsionalitas dari API harus mudah untuk dijelaskan dengan kata-kata.

b. Semakin kecil ukuran API yang dikembangkan semakin baik, namun tetap memenuhi semua spesifikasi teknis yang dijadikan acuan.

(3)

d. Minimumkan aksesibilitas keseluruhan dengan menggunakan metode enkapsulasi. 3. Desain API. Pada tahap ini dilakukan desain API dengan dasar spesifikasi teknis yang telah

dibangkitkan pada tahap sebelumnya. Pada tahap ini dibantu dengan penggambaran diagram UML masing-masing desain. Beberapa hal yang harus didesain:

a. Desain kelas. b. Desain metoda. c. Desain exception.

d. Desain API agar dapat di refactoring.

4. Dokumentasi API. Setelah dilakukan desain terhadap API, maka langkah selanjutnya adalah membuat dokumentasi lengkap terhadap API tersebut, dengan cara langsung memberikan baris-baris komentar di setiap baris header yang membutuhkan penjelasan. Selain dokumentasi kode program hal lain yang perlu diperhatikan adalah dokumentasi diagram. Diagram UML yang disertakan hendaknya diberikan penjelasan yang mengacu ke kode program yang bersesuaian.

5. Implementasi API. Pada tahap ini dilakukan implementasi terhadap desain API pada tahap 3 dan sesuai dengan dokumentasi API yang dilakukan pada tahap 4. Implementasi dilakukan dengan memperhatikan spesifikasi masing-masing modul hingga masing-masing metoda yang akan diimplementasikan.

II.1.3 Sifat Utama Pembentuk Kualitas API

Terdapat dua sifat utama yang menjadi inti dari kualitas sebuah API [BRA97]. Sifat tersebut adalah: 1. Maintainability.

API yang berkualitas adalah API yang berciri-ciri maintainable (dapat dikembangkan lebih lanjut). Ciri-ciri ini sangat diperlukan karena API dapat dan mungkin akan sering berubah mengikuti perkembangan spesifikasi sistem atau perangkat lunak di tempat API tersebut digunakan. Tingkat kualitas API ditentukan dengan tingkat maintanibility, suatu API yang berkualitas dapat terus dimaintain mengikuti perkembangan kebutuhan spesifikasi perangkat lunak. Sedangkan API yang tidak berkualitas ditandai dengan ketidakmampuan API tersebut bertahan seiring dengan perubahan spesifikasi perangkat lunak.

2. Interoperability.

API yang berkualitas juga bersifat interoperability (kemampuan perangkat lunak untuk berjalan beriringan dan saling bekerja sama). API dengan kualitas tinggi ditandakan dengan tingkat kemampuan API dalam menghubungkan beberapa perangkat lunak dalam suatu sistem dengan baik.

(4)

II.2

Sistem Basisdata

Pada bagian ini akan diberikan penjelasan mengenai teori dasar basis data yang meliputi Database Management System (DBMS) dan Structured Query Language (SQL).

II.2.1 Database Management System

Basisdata adalah sebuah koleksi data yang diorganisir sedemikian rupa sehingga dapat diakses, dikelola, dan dirubah dengan mudah[LAN07]. Sedangkan perangkat lunak yang didesain untuk mengelola basisdata disebut Database Management System (DBMS) [MED07a]. Alternatif lain untuk menyimpan data adalah dengan menggunakan file system.

DBMS dibangun untuk mengatasi masalah-masalah di atas dalam penyimpanan data. Sebuah DBMS meliputi:

1. Sebuah bahasa pemodelan untuk mendefinisikan skema dari setiap basisdata sesuai dengan model data dari DBMS.

Model data adalah model abstrak yang menjelaskan bagaimana data direpresentasikan dan digunakan. Istilah model data secara umum dapat diartikan sebagai teori model data atau

instance model data. Teori model data atau model basisdata adalah deskripsi formal mengenai bagaimana data terstruktur dan digunakan. Sedangkan instance model data adalah pengaplikasian sebuah teori model data untuk membuat sebuah instance model data praktikal untuk aplikasi tertentu. Model data yang biasa digunakan adalah model hierarki, jaringan, dan relasional. Sebuah DBMS dapat mengimplementasikan satu atau lebih model data.

2. Struktur data yang dioptimalkan untuk menangani penyimpanan data dalam jumlah yang sangat banyak pada sebuah perangkat penyimpanan data permanen.

3. Sebuah bahasa query basisdata yang memungkinkan pengguna untuk berinteraksi, menganalisis, dan melakukan perubahan pada data di dalam basisdata sesuai dengan hak aksesnya.

4. Sebuah mekanisme transaksi yang menangani pengaksesan sistem oleh banyak pengguna secara konkuren sehingga integritas data dapat terjaga.

Model basisdata yang sering digunakan saat ini adalah model relasional. Model relasional adalah model basisdata yang berdasarkan pada logika predikat dan teori himpunan. Pertama kali diformulasikan dan diajukan pada tahun 1969 oleh Edgar Codd dengan tujuan menghindari kebutuhan menulis program untuk mengekspresikan query basisdata dan menerapkan integrity constraint

basisdata.

DBMS yang berdasarkan pada model relasional disebut dengan Relational Database Management System (RDBMS). RDBMS menyimpan data dan relasinya dalam bentuk tabel. Hampir semua RDBMS menggunakan Structured Query Language sebagai bahasa query-nya.

(5)

II.2.2 Structured Query Language

Structured Query Language atau SQL adalah sebuah bahasa komputer yang didesain untuk melakukan pengambilan dan manajemen data, pembuatan dan perubahan skema basisdata, serta manajemen pengontrolan akses objek basidata dalam RDBMS [CHA07].

Versi pertama dari SQL dikembangkan di IBM oleh Donald D. Chamberlin dan Raymond F. Boyce pada awal tahun 1970-an. Versi ini, yang awalnya disebut dengan SEQUEL, didesain untuk memanipulasi dan memperoleh data yang tersimpan di dalam produk basisdata relasional IBM, System R. Selanjutnya bahasa SQL distandarisasi oleh American National Standards Institute (ANSI) dan International Organization for Standardization (ISO).

Pada awalnya SQL didesain sebagai sebuah declarative query dan data manipulation language. Tapi beberapa vendor DBMS menambahkan procedural constructs, control-of-flow statements, tipe data

user-defined, dan ekstensi bahasa lainnya. Dengan ditetapkannya standar SQL:1999, banyak ekstensi yang secara formal diadopsi sebagai bagian dari bahasa SQL melalui bagian SQL Persistent Stored Modules (SQL/PSM) dari standar.

Bahasa SQL terdiri atas beberapa bagian, meliputi:

1. Data Definition Language (DDL). Bagian ini menyediakan perintah untuk mendefinisikan skema relasi, menghapus relasi, dan memodifikasi skema relasi.

2. Data Manipulation Language (DML). Bagian ini menyediakan perintah untuk menambahkan, menghapus, dan memodifikasi data dalam basidata.

3. View definition. Bagian ini menyediakan perintah untuk mendefinisikan view.

4. Transaction control. Bagian ini menyediakan perintah untuk menspesifikasikan awal dan akhir dari transaksi.

5. Embedded SQL dan dynamic SQL. Bagian ini mendefinisikan bagaimana statement SQL dapat digunakan di dalam bahasa pemrograman seperti C, C++, Java, PL/I, Cobol, Pascal, atau Fortran.

6. Integrity. Bagian ini menyediakan perintah untuk menspesifikasikan integrity constraints

yang harus dipenuhi oleh data yang disimpan.

7. Authorization atau Data Control Language (DCL). Bagian ini menyediakan perintah untuk menspesifikasikan hak akses pengguna terhadap basisdata.

(6)

II.2.2.1Data Definition Language (DDL)

DDL berguna tidak saja untuk menspesifikasikan relasi tetapi juga untuk menspesifikasikan informasi dari setiap relasi yang meliputi:

• Skema dari tiap relasi

• Domain dari nilai yang diasosiasikan dengan setiap atribut • Integrity constraints

• Index dari setiap relasi

• Tingkat keamanan dan authorization dari setiap relasi • Struktur physical storage dari setiap relasi

SQL standard mendukung tipe domain built-in yang bervariasi yang meliputi: • char(n): character string dengan panjang n.

• varchar(n): character string dengan panjang maksimum n. • int: integer.

• smallint: small integer.

• numeric(p,d): bilangan desimal dengan presisi yang dispesifikasikan oleh user. Bilangan ini terdiri dari p digit dan d bilangan di belakang koma.

• real, double precision: bilangan floating-point dan double floating-point dengan presisi

machine-dependent.

• float(n): sebuah bilangan floating-point dengan presisi minimal n digit. • date: terdiri dari tahun (4 digit), bulan, dan tanggal.

• time: terdiri dari jam, menit, dan detik. • timestamp: kombinasi dari date dan time.

Beberapa statement dasar yang termasuk dalam DDL adalah:

1. CREATE yang berguna untuk membuat objek, relasi misalnya, dalam basisdata. Untuk mendefinisikan sebuah relasi digunakan perintah yang ada pada Kode II-1. create table r(A1D1,A2D2,…,AnDn,

<integrity-constraint1>,

<integrity-constraintk>)

(7)

dimana r adalah nama dari relasi (tabel), Ai adalah nama atribut, dan Di adalah domain dari Ai. Integrity constraint yang dapat dipergunakan meliputi:

primary key (Aj1, Aj2, …, Ajm): constraint ini menspesifikasikan atribut Aj1, Aj2, …, Ajm membentuk primary key dari relasi.

unique (Aj1, Aj2, …, Ajm): constraint ini menspesifikasikan atribut Aj1, Aj2, …, Ajm membentuk candidate key dari relasi.

check (P): klausa ini menspesifikasikan sebuah predikat P yang harus dipenuhi oleh setiap tupel dalam relasi.

create table customer (customer-name char(20), customer-street char(30), customer-city char(30), primary key (customer-name))

Kode II-2 - Contoh penggunaan statement CREATE

2. DROP yang berguna untuk menghapus objek yang ada pada basisdata.

Untuk menghapus relasi (tabel) dari basisdata, digunakan perintah yang ada pada Kode II-3. drop table r

Kode II-3 - Perintah untuk menghapus tabel

dimana r adalah nama relasi yang ingin dihapus. Contohnya dapat dilihat pada Kode II-4. drop table customer

Kode II-4 - Contoh penggunaan statement DROP

3. ALTER yang berguna untuk memodifikasi sebuah objek yang sudah ada.

Untuk menambahkan atribut pada suatu relasi digunakan perintah yang ada pada Kode II-5. alter table r add A D

Kode II-5 - Perintah untuk memodifikasi objek

dimana r adalah nama relasi yang sudah ada, A adalah nama atribut yang ingin ditambahkan, dan D adalah domain dari atribut A. Sedangkan untuk menghapus atribut pada suatu relasi digunakan perintah yang ada pada Kode II-6.

alter table r drop A

(8)

II.2.2.2Data Manipulation Language (DML)

Data Manipulation Language (DML) terdiri dari beberapa statement, berikut yang umum dan sering digunakan:

1. INSERT

Statement ini digunakan untuk menambahkan tupel ke dalam relasi yang sudah ada.

INSERT INTO my_table (field1, field2, field3) VALUES ('test', 'N', NULL);

Kode II-7 - Contoh penggunaan statement INSERT

2. UPDATE

Statement ini digunakan untuk memodifikasi nilai dari himpunan tupel pada relasi yang sudah ada.

UPDATE my_table SET field1 = 'updated value' WHERE field2 = 'N';

Kode II-8 - Contoh penggunaan statement UPDATE

3. DELETE

Statement ini digunakan untuk menghapus tupel yang ada dari sebuah relasi. Contoh dapat dilihat pada Kode II-9.

DELETE FROM my_table WHERE field2 = 'N';

Kode II-9 - Contoh penggunaan statement DELETE

4. SELECT

Statement ini digunakan untuk mengambil tupel dari sebuah relasi atau banyak relasi yang berhubungan di dalam sebuah basisdata. Walaupun sering dikategorikan sebagai statement Data Manipulation Language (DML), SELECT dipertimbangkan untuk dipisahkan dari DML SQL karena sifatnya yang tidak dapat merubah data yang tersimpan di dalam basisdata.

Statement ini memungkinkan penggunanya untuk membuat sebuah deskripsi dari result set

yang diinginkan dan kemudian menyerahkan kepada DBMS untuk merencanakan, mengoptimalisasi, dan melakukan operasi fisik yang dibutuhkan untuk menghasilkan result set tersebut dengan cara yang seefisien mungkin. SELECT adalah statement yang paling kompleks di dalam SQL, dengan beberapa kata kunci dan klausa opsional yang meliputi: 1. Klausa FROM yang menspesifikasikan satu atau banyak relasi dimana data yang

diinginkan berada. Klausa FROM dapat menyertakan klausa JOIN untuk melakukan operasi join (penggabungan) pada relasi-relasi yang berhubungan sesuai dengan kriteria dari penggunanya.

2. Klausa WHERE yang diikuti oleh comparison predicate, yang digunakan untuk membatasi jumlah tupel yang dihasilkan oleh query. Klausa WHERE digunakan sebelum klausa GROUP BY.

(9)

3. Klausa GROUP BY yang digunakan untuk menggabungkan atau mengelompokkan tupel-tupel dengan nilai yang berhubungan menjadi himpunan tupel-tupel yang lebih kecil. GROUP BY sering digunakan bersamaan dengan fungsi agregasi atau untuk menghapus duplikasi tupel dalam sebuah result set.

4. Klausa HAVING yang mengikuti sebuah comparison predicate, digunakan untuk mengeliminasi tupel-tupel setelah klausa GROUP BY yang diaplikasikan pada sebuah

result set.

5. Klausa ORDER BY yang digunakan untuk mengidentifikasi atribut mana yang akan digunakan untuk mengurutkan data yang dihasilkan dan menspesifikasikan metode pengurutan yang digunakan.

Kode II-10 adalah contoh dari query SELECT yang menghasilkan sebuah daftar buku-buku dengan harga di atas 100.00. Query akan mendapatkan semua tupel dari relasi buku

dimana atribut harga nya mengandung nilai lebih dari 100.00. Hasilnya diurutkan secara menaik berdasarkan atribut judul. Tanda asterisk (*) setelah SELECT mengindikasikan bahwa semua atribut dari relasi buku disertakan ke dalam result set.

SELECT * FROM buku WHERE harga > 100.00 ORDER BY judul;

Kode II-10 - Contoh penggunaan klausa ORDER BY

Kode II-11 adalah contoh yang mendemonstrasikan penggunaan lebih dari satu relasi pada operasi join, grouping, dan aggregation di dalam sebuah query SQL. Query ini akan menghasilkan daftar buku dan nomor penulis dari tiap buku tersebut.

SELECT buku.judul, count(*) AS Penulis

FROM buku JOIN penulis_buku ON buku.isbn = penulis_buku.isbn GROUP BY buku.judul;

Kode II-11 - Contoh penggunaan statement SELECT

Contoh result set dari query di atas adalah sebagai berikut:

Tabel II-1 - Contoh result set

Judul Penulis

SQL Examples and Guide 3

The Joy of SQL 1

How to use Wikipedia 2

Pitfalls of SQL 1

(10)

II.2.2.3Data Control Language (DCL)

Bagian ketiga dari SQL adalah Data Control Language (DCL). DCL menangani aspek otoritas dari data dan mengijinkan pengguna untuk mengontrol siapa saja yang memiliki akses untuk melihat atau memanipulasi data yang ada di dalam basisdata. Dua statement utama dalam DCL adalah:

1. GRANT yang berguna untuk memberikan otoritas kepada satu atau lebih pengguna agar dapat melakukan satu atau lebih operasi pada sebuah objek. Kode II-12 adalah contoh pemberian otoritas select pada relasi buku kepada user U1, U2, dan U3.

GRANT SELECT ON buku TO U1, U2, U3

Kode II-12 - Contoh penggunaan statement GRANT

2. REVOKE yang berguna untuk menghapus atau membatasi kemampuan dari seorang pengguna untuk melakukan satu atau lebih operasi. Kode II-13 adalah contoh penghapusan otoritas select pada relasi buku dari user U1, U2, dan U3.

REVOKE SELECT ON buku FROM U1, U2, U3

Kode II-13 - Contoh penggunaan statement REVOKE

II.3

MySQL

MySQL adalah RDBMS yang menggunakan Structured Query Language (SQL) sebagai bahasa query

nya dan merupakan perangkat lunak open source yang menggunakan lisensi GNU General Public License (GPL) [DUB05]. MySQL terdiri atas MySQL Server, MySQL Client, tools administratif, dan

programming interface [DUB05].

Lahirnya MySQL berawal pada tahun 1979 saat tool basisdata UNIREG dibuat oleh Michael “Monty” Widenius untuk perusahaan Swedia, TcX. Pada tahun 1994, TcX mulai mencari sebuah RDBMS dengan sebuah interface SQL untuk digunakan dalam pengembangkan aplikasi Web. Mereka melakukan pengetesan beberapa server basisdata komersial, tapi semuanya masih terlalu lambat untuk tabel TcX yang besar. Akhirnya Monty mulai mengembangkan sebuah server baru. Programming interface nya didesain secara eksplisit agar mirip dengan yang digunakan oleh mSQL.

Pada tahun 1995, David Axmark dari Detron HB mulai mendorong TcX untuk meluncurkan MySQL. David juga mengerjakan dokumentasinya dan mengusahakan agar MySQL dibangun dengan GNU

configure utility. MySQL 3.11.1 diluncurkan di dunia pada tahun 1996 dalam bentuk binary distribution untuk Linux dan Solaris.

Saat ini MySQL dimiliki dan disponsori oleh perusahaan Swedia, MySQL AB, yang memiliki

copyright dari sebagian besar codebase-nya. MySQL AB didirikan oleh David Axmark, Allan Larsson, dan Michael “Monty” Widenius. MySQL telah tersedia untuk berbagai macam sistem

(11)

operasi dan pada berbagai arsitektur komputer. Hingga saat ini MySQL mendukung sistem operasi Linux, Windows 95/98/NT/2000/XP/Vista, Solaris, FreeBSD, MacOS X, HP-UX, AIX, SCO, SCI Irix, Dec OSF, dan BSDi. Versi Linux dapat berjalan pada berbagai arsitektur termasuk Intel libc6, Alpha, IA64, SPARC, dan S/390.

Awalnya, MySQL menjadi populer karena kecepatan dan kesederhanaannya. Tetapi ada yang mengkritik MySQL karena tidak memiliki fitur-fitur tertentu seperti transactions dan dukungan

foreign key. Kemudian MySQL terus berkembang, menambahkan berbagai macam fitur baru seperti

row-level locking, replication, subqueries, stored procedures, views, dan triggers.

MySQL adalah proyek open source yang dapat digunakan secara bebas dalam berbagai keadaan, dan ini menjadikannya populer di antara komunitas open source.Kepopuleran MySQL tidak hanya terbatas pada kalangan open source, tetapi menyentuh hingga kalangan pengguna komputer pribadi. Ini disebabkan oleh kemampuan MySQL yang dapat berjalan dengan mudah pada komputer yang memiliki spesifikasi rendah sekalipun.

MySQL menawarkan banyak fitur menarik yang diantaranya adalah:

• Kecepatan. MySQL diklaim oleh pengembangnya sebagai sistem basisdata yang tercepat. • Mudah dalam penggunaan. MySQL secara relatif merupakan sistem basisdata yang sederhana

dan tidak terlalu kompleks dalam pengaturannya.

Query language support. MySQL menggunakan SQL, bahasa standar yang digunakan sistem basisdata modern.

• Kapabilitas. MySQL Server adalah multi-threaded, sehingga memungkinkan banyak koneksi dari client dalam satu waktu. Setiap client dapat menggunakan beberapa basisdata secara simultan.

• Konektifitas dan keamanan. MySQL adalah sistem yang dirancang untuk jaringan, sehingga basisdata dapat diakses dari manapun melalui jaringan Internet. MySQL memiliki access control sehingga kemampuan akses user nya dapat diatur. Selain itu MySQL juga mendukung koneksi terenkripsi menggunakan protokol Secure Sockets Layer (SSL).

• Portabilitas. MySQL dapat berjalan pada berbagai macam sistem operasi dan arsitektur komputer.

• Ukuran kecil. MySQL memiliki ukuran distribusi yang relatif kecil dibanding sistem basisdata komersial yang ada.

Availability dan biaya. MySQL adalah proyek yang memiliki dua lisensi. Lisensi pertama adalah GPL yang berarti MySQL tersedia dengan tanpa biaya. Dan lisensi kedua adalah lisensi komersial yang diperuntukkan bagi organisasi yang tidak ingin terikat oleh GPL. • Open distribution dan open source code.

(12)

II.4

Protokol MySQL

Protokol MySQL adalah bagian dari DBMS MySQL. Karena itu protokol MySQL juga jatuh pada lisensi GNU General Public License (GPL). Salinan dari GPL tersedia pada website MySQL dan juga di dalam produk MySQL [FOR07].

Karena ini adalah protokol GPL, produk apapun yang menggunakannya untuk berkomunikasi dengan sebuah server MySQL, atau untuk mengemulasikan sebuah server MySQL, atau untuk tujuan lainnya yang serupa, maka produk tersebut juga terikat oleh lisensi GPL.

II.4.1 Elements

Dalam protokol MySQL terdapat beberapa jenis elemen untuk merepresentasikan string dan bilangan. Jenis elemen tersebut adalah:

1. Null-Terminated String

Digunakan untuk merepresentasikan string karakter dengan panjang tertentu. Karakter ‘\0’ (kadang ditulis dengan 0x00) menjadi tanda akhir dari string.

2. Length Coded Binary

Digunakan untuk merepresentasikan bilangan dengan panjang tertentu. Untuk menghitung nilai dari sebuah Length Coded Binary digunakan nilai dari byte pertamanya.

Tabel II-2 - Tipe Length Coded Binary

No. Nilai byte pertama Jumlah byte selanjutnya

Deskripsi

1 0 – 250 0 = nilai dari byte pertama

2 251 0 Nilai kolom = NULL. Hanya digunakan pada

paket Row Data.

3 252 2 16-bit word

4 253 4 32-bit word

5 254 8 64-bit word

Sehingga panjang dari sebuah Length Coded Binary, termasuk byte pertama, bervariasi dari 1 sampai 9 byte. Semua angka disimpan dengan byte yang least significant terlebih dahulu. Semua angka adalah unsigned.

3. Length Coded String

Digunakan untuk merepresentasikan string karakter dengan panjang tertentu. Berbeda dengan

Null-Terminated String, tipe data ini tidak diakhiri dengan karakter ‘\0’. Bagian pertama dari sebuah Length Coded String adalah sebuah angka Length Coded Binary yang merepresentasikan panjang dari string. Dan bagian kedua adalah data yang sebenarnya. Contohnya adalah tiga byte heksadesimal berikut: 02 61 62, yang berarti string dengan panjang 2 dan berisi ‘ab’.

(13)

II.4.2 Header Paket

Header paket dari protokol MySQL terdiri dari dua bagian yaitu: 1. Packet Length (panjang paket)

Bagian ini mempunyai panjang 3 byte yang merepresentasikan panjang dari paket, tidak termasuk header, dalam satuan byte. Panjang maksimum dari paket adalah 16MB.

2. Packet Number (nomor paket)

Sebuah angka untuk memastikan kelengkapan dan keterurutan paket yang dikirimkan. Paket pertama untuk melakukan query dari client akan memiliki nomor paket 0. Untuk setiap

statement SQL, nomor paket akan diinisialisasi ulang. II.4.3 Tipe Paket

Terdapat dua jenis sesi komunikasi paket yang umum pada protokol MySQL, yaitu: 1. Handshake

Ini terjadi ketika client akan membuka koneksi dengan MySQL Server. Yang terjadi adalah: a. Server mengirim Handshake Initialization Packet kepada client.

b. Client mengirim Client Authentication Packet kepada server. c. Server mengirim OKPacket atau Error Packet kepada client. 2. Command

Ini terjadi ketika client akan meminta server untuk melakukan sesuatu. Yang terjadi adalah: a. Client mengirim Command Packet kepada server.

b. Server mengirim OK Packet, Error Packet, atau Result Set Packet kepada client.

II.4.3.1Handshake Initialization Packet

Paket yang dikirimkan dari server ke client untuk melakukan inisialisasi handshake. Komposisi dari paket ini dapat dilihat pada Tabel II-13.

Tabel II-3 - Komposisi Handshake Initialization Packet

No. Byte Nama

1 1 protocol_version

2 n (Null-Terminated String) server_version

3 4 thread_id 4 9 scramble_buff (1) 5 2 server_capabilities 6 1 server_language 7 2 server_status 8 13 filler (selalu 0x00) 9 13 scramble_buff (2)

Berikut keterangan dari tabel komposisi Handshake Initialization Packet:

• protocol_version: server mengambil nilainya dari konstanta PROTOCOL_VERSION pada

(14)

• server_version: server mengambil nilainya dari konstanta MYSQL_SERVER_VERSION pada file “/include/mysql_version.h” dalam source code MySQL. Contoh nilainya adalah “4.1.1-alpha”.

• thread_id: identitas dari thread server untuk koneksi pada saat itu. • scramble_buff: digunakan untuk mekanisme otentikasi.

• server_capabilities: berisi informasi dari server. Nilai yang mungkin dapat dilihat pada Tabel A-1 Lampiran A.

• server_language: kode character set dari server.

• server_status: status dari server. Nilai yang mungkin ada pada Tabel A-2 Lampiran A. Contoh Handshake Initialization Packet dapat dilihat pada Tabel II-4.

Tabel II-4 - Contoh Handshake Initialization Packet

Nama variable Hexadecimal ASCII Keterangan

protocol_version 0a . Protokol versi 10

server_version 34 2e 31 2e 31 2d 71 6c 70 68 61 2d 64 65 62 75 67 00 4.1.1-al pha-debu g.

Server versi 4.1.1-alpha-debug

thread_id 01 00 00 00 …. Thread ID = 1

scramble_buff (1) 79 46 2f 57 48 43 57 6a 00 yF/WHCWj. scramble_buff bagian 1 =

“yF/WHCWj” sever_capabilities 2c 82 .. MULTI_RESULTS SSL COMPRESS CONNECT_WITH_DB FOUND_ROWS

server_language 08 . Character set = Latin-1

server_status 02 00 .. Server status = AUTOCOMMIT

Filler 00 00 00 00 00 00 00 00 00 00 00 00 00 …….. ….. scramble_buff (2) 47 5b 72 4e 6c 58 52 72 66 2b 3f 3a 00 G[rNlXRr f+?:. scramble_buff bagian 2 = “G[rNlXRrf+?:”

II.4.3.2Client Authentication Packet

Paket ini dikirimkan dari client untuk server ketika proses inisialisasi handshake. Komposisi dari paket ini dapat dilihat pada Tabel II-5.

Tabel II-5 - Komposisi Client Authentication Packet

No. Byte Nama

1 4 client_flags

2 4 max_packet_size

3 1 charset_number

4 23 filler (selalu 0x00)

5 n (Null-Terminated String) User

6 21 (Length Coded Binary) hashed_password

(15)

Berikut keterangan dari komposisi Client Authentication Packet:

• client_flags: berisi informasi dari client. Nilai yang mungkin adalah sama dengan nilai yang mungkin untuk variabel server_capabilities.

• max_packet_size: jumlah byte maksimum dalam sebuah paket yang diterima oleh client.

• charset_number: kode character set dari client.

• user: username dari pengguna sebagai client.

• hashed_password: password yang telah di-hash jika diperlukan. hashed_password = SHA1(password) XOR

SHA1(scramble_buff + SHA1(SHA1(password)))

• database_name: nama database yang akan digunakan. Variabel ini boleh dikosongkan. Contoh Client Authentication Packet dapat dilihat pada Tabel II-6.

Tabel II-6 - Contoh Client Authentication Packet

Nama variable Hexadecimal ASCII Keterangan

client_flags 85 a6 03 00 …. MULTI_RESULTS MULTI_STATEMENTS SECURE_CONNECTION PROTOCOL_41 LOCAL_FILES INTERACTIVE TRANSACTIONS LONG_FLAG LONG_PASSWORD max_packet_size 00 00 00 01 …. 224 bytes

charset_number 08 …. Character set = Latin-1

Filler 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …….. …….. ……. User 72 65 64 66 65 72 6e 69 00 redferni . User = “redferni” encrypted_passwor d 14 database_name 70 67 75 6c 75 74 7a 61 6e 00 pgulutzan .

Nama database = “pgulutzan”

II.4.3.3Command Packet

Paket ini dikirimkan oleh client kepada server ketika client menginginkan server untuk melakukan sesuatu. Komposisi dari paket ini dapat dilihat pada Tabel II-7.

Tabel II-7 - Komposisi Command Packet

No. Byte Nama

1 1 Command

(16)

Berikut keterangan dari komposisi Command Packet:

• command: tipe perintah yang dikirimkan client. Nilai yang biasa digunakan adalah 03 (COM_QUERY), dimana operasi INSERT, UPDATE, DELETE, dan SELECT menggunakan tipe perintah ini. Nilai yang mungkin dapat dilihat pada Tabel A-3 Lampiran A.

• arg: argumen perintah dalam format tekstual. Contoh Command Packet dapat dilihat pada Tabel II-8.

Tabel II-8 - Contoh Command Packet

Nama variable Hexadecimal ASCII Keterangan

Command 02 . COM_INIT_DB

Arg 74 65 73 74 Test Nama database = “test”

II.4.3.4Result Packet

Paket ini adalah paket yang dikirimkan dari server kepada client sebagai respon dari Client Authentication Packet atau Command Packet. Untuk membedakan tipe dari Result Packet, client

harus memperhatikan byte pertama dari paket. Selanjutnya byte ini akan disebut dengan “field_count”. Daftar tipe dari Result Packet dapat dilihat pada Tabel II-9.

Tabel II-9 - Daftar tipe Result Packet

No. Tipe Nilai heksadesimal dari field_count

1 OK Packet 00

2 Error Packet Ff

3 Result Set Header Packet 1-250

4 Field Packet 1-250

5 Row Data Packet 1-250

6 EOF Packet Fe

Berikut adalah beberapa aliran paket antara client dan MySQL Server:

1. Ketika client mengirimkan paket Client Authentication kepada MySQL Server, MySQL Server dapat mengembalikan paket OK jika proses otentikasi berhasil atau paket Error jika proses otentikasi gagal.

2. Ketika client mengirimkan paket Command yang tidak membutuhkan kembalian result set

kepada MySQL Server, MySQL Server akan mengembalikan paket Error jika terjadi suatu kesalahan, atau paket OK jika MySQL Server berhasil menjalankan perintah dari client. 3. Ketika client mengirimkan paket Command yang dapat mengembalikan result set kepada

MySQL Server, MySQL Server akan mengembalikan paket Error jika terjadi suatu kesalahan, atau paket Result Set Header yang diikuti oleh paket Field, paket Row Data, dan paket EOF.

(17)

II.4.3.4.1 OK Packet

Paket ini dikirimkan dari server untuk client sebagai respon dari Command Packet jika tidak terjadi

error atau tidak ada hasil query yang harus dikembalikan oleh server. Komposisi dari paket ini terdapat pada Tabel II-10.

Tabel II-10 - Komposisi OK Packet

No. Byte Nama

1 1 (Length Coded Binary) field_count, selalu 0

2 1 – 9 (Length Coded Binary) affected_rows

3 1 – 9 (Length Coded Binary) insert_id

4 2 server_status

5 2 warning_count

6 n (Length Coded String) Message

Berikut keterangan dari komposisi OK Packet: • field_count: selalu 0.

• affected_rows: jumlah baris yang terpengaruh oleh query.

• insert_id: nilai dari “last INSERT id”, yaitu nilai dari kolom dengan atribut auto_increment yang dibangkitkan oleh operasi INSERT terakhir.

• server_status: client dapat menggunakannya untuk mengecek apakah sedang di dalam sebuah

transaction.

• warning_count: jumlah warnings.

• message: pesan yang dikembalikan berdasarkan perintah yang dikirimkan. Variabel ini adalah opsional.

Contoh OK Packet dapat dilihat pada Tabel II-11.

Tabel II-11 - Contoh OK Packet

Nama variable Hexadecimal ASCII Keterangan

field_count 00 . Selalu 0

affected_rows 01 . 1 baris terpengaruh

insert_id 00 . Tidak ada kolom auto_increment

server_status 02 00 .. Status = AUTOCOMMIT

warning_count 00 00 .. Tidak ada peringatan

II.4.3.4.2 Error Packet

Paket ini dikirimkan dari server kepada client sebagai respon dari Command Packet jika terjadi error.

Komposisi dari paket ini dapat dilihat pada Tabel II-12.

Tabel II-12 - Komposisi Error Packet

No. Byte Nama

1 1 field_count, selalu 0xff

2 2 Errno

3 1 Selalu ‘#’

4 5 Sqlstate

(18)

Berikut keterangan dari komposisi paket di atas: • field_count: selalu 0xff.

• errno: kode error.

• sqlstate: server menerjemahkan nilai errno menjadi nilai sqlstate. • message: pesan error.

Contoh Error Packet dapat dilihat pada Tabel II-13.

Tabel II-13 - Contoh Error Packet

Nama variable Hexadecimal ASCII Keterangan

field_count Ff . Selalu ff Errno 1b 04 .. BAD_TABLE_ERROR (1051) sqlstate marker 23 # Sqlstate 34 32 53 30 32 42S02 Message 55 63 6b 6e 6f 77 6e 20 74 61 62 6c 6c 65 20 27 71 27 Unknown table ‘ q’ “Unknown table ‘q’”

II.4.3.4.3 Result Set Header Packet

Paket ini dikirimkan dari server kepada client sebagai respon dari Command Packet jika tidak terjadi

error dan terdapat hasil query yang harus dikembalikan oleh server. Result Set Header Packet adalah awal dari beberapa atau banyak paket yang selanjutnya dikirimkan oleh server sebagai result set.

Urutan pengiriman paket untuk sebuah result set adalah:

1. Result Set Header Packet: berisi informasi jumlah kolom. 2. Field Packets: berisi descriptor dari kolom.

3. EOF Packet: sebagai penanda akhir dari Field Packets. 4. Row Data Packets: berisi data dari tiap baris.

5. EOF Packet: sebagai penanda akhir dari Row Data Packets. Komposisi dari Result Set Header Packet dapat dilihat pada Tabel II-14.

Tabel II-14 - Komposisi Result Set Header Packet

No. Byte Nama

1 1 – 9 (Length Coded Binary) field_count

2 1 – 9 (Length Coded Binary) Extra

Berikut keterangan dari komposisi Result Set Header Packet: • field_count: berisi informasi jumlah kolom.

(19)

Contoh Result Set Header Packet dapat dilihat pada Tabel II-15.

Tabel II-15 - Contoh Result Set Header Packet

Nama variable Hexadecimal ASCII Keterangan

field_count 03 . Server akan mengembalikan result set

yang terdiri atas 3 kolom. II.4.3.4.4 Field Packet

Paket ini dikirimkan dari server kepada client sebagai bagian dari Result Set Packet sebanyak jumlah kolom yang telah diinformasikan oleh Result Set Header Packet. Komposisi dari Field Packet dapat dilihat pada Tabel II-16.

Tabel II-16 - Komposisi Field Packet

No. Byte Nama

1 n (Length Coded String) Catalog

2 n (Length Coded String) Db

3 n (Length Coded String) Table

4 n (Length Coded String) org_table

5 n (Length Coded String) Name

6 n (Length Coded String) org_name

7 1 Filler 8 2 Charsetnr 9 4 Length 10 1 Type 11 2 Flags 12 1 Decimals 13 2 filler (selalu 0x00)

14 n (Length Coded Binary) Default

Berikut keterangan dari komposisi Field Packet: • catalog: berisi informasi catalog. • db: nama database atau nama schema.

• table: identifier tabel yang didefinisikan setelah klausa AS jika ada.

• org_table: nama tabel yang asli yang disebutkan sebelum klausa AS jika ada. • name: identifier kolom yang didefinisikan setelah klausa AS jika ada.

• org_name: nama kolom yang asli yang disebutkan sebelum klausa AS jika ada. • charsetnr: kode character set.

• length: panjang maksimal dari kolom sesuai yang didefinisikan.

• type: tipe data dari kolom. Nilai yang mungkin dapat dilihat pada Tabel A-4 Lampiran A. • flags: penanda untuk kolom. Nilai yang mungkin dapat dilihat pada Tabel A-5 Lampiran A. • decimals: informasi tingkat ketelitian bilangan desimal

(20)

Contoh Field Packet dapat dilihat pada Tabel II-17.

Tabel II-17 - Contoh Field Packet

Nama variable Hexadecimal ASCII Keterangan

Catalog 03 73 74 64 .std Catalog = “std”

Db 03 64 62 31 .db1 Database = “db1”

Table 02 54 37 .T7 Alias tabel = “T7”

org_table 02 74 37 .t7 Nama tabel = “t7”

Name 02 53 31 .S1 Alias kolom = “S1”

org_name 02 73 31 .s1 Nama kolom = “s1”

Filler 0c . Selalu 0x0c

Charsetnr 08 00 .. Char set = Latin-1

Length 01 00 00 00 …. Panjang = 1

Type Fe . Tipe = FIELD_TYPE_STRING

Flags 01 00 .. NOT_NULL_FLAG

Decimal 1f . Decimal = 31

Filler 00 00 .. Selalu 0x00 0x00

II.4.3.4.5 EOF Packet

Paket ini dikirimkan oleh server untuk client sebagai penanda akhir dari Field Packets dan Row Data Packets. Komposisi dari EOFPacket dapat dilihat pada Tabel II-18.

Tabel II-18 - Komposisi EOF Packet

No. Byte Nama

1 1 field_count, selalu 0xfe

2 2 warning_count

3 2 status_flags

Berikut keterangan dari komposisi EOF Packet: • field_count: nilainya selalu 0xfe (254). • warning_count: jumlah peringatan.

• server_status: dapat berisi penanda seperti SERVER_STATUS_MORE_RESULTS. Contoh EOF Packet dapat dilihat pada Tabel II-19.

Tabel II-19 - Contoh EOF Packet

Nama variable Hexadecimal ASCII Keterangan

field_count Fe . Selalu 0xfe

warning_count 00 00 .. Jumlah peringatan = 0

server_status 00 00 ..

II.4.3.4.6 Row Data Packet

Paket ini dikirimkan dari server untuk client yang berisi data dari tiap baris result set.

Tabel II-20 - Komposisi Row Data Packet

No. Byte Nama

1 n (Length Coded String) column_value

2 (variable seperti di atas dengan jumlah sesuai dengan jumlah kolom yang telah didefinisikan)

(21)

Berikut keterangan dari komposisi Row Data Packet pada Tabel II-20:

• column_value: merupakan data dari kolom dalam bentuk character string. Jika kolom didefinisikan sebagai non-character string, server akan mengubah nilainya menjadi character string.

Contoh Row Data Packet dapat dilihat pada Tabel II-21:

Tabel II-21 - Contoh Row Data Packet

Nama variabel Hexadecimal ASCII Keterangan

column_value 1 01 58 .X Nilai kolom pertama = “X”

column_value 2 02 35 35 .55 Nilai kolom kedua = “55”

II.5

Java Database Connectivity

Java Database Connectivity (JDBC) adalah sebuah API untuk bahasa pemrograman Java yang mendefinisikan bagaimana cara mengakses suatu basisdata. JDBC merupakan sebuah call-level API untuk mengakses basisdata berbasis SQL [JAV07b]. API ini menyediakan metode untuk melakukan

query dan memanipulasi data pada sebuah basisdata. JDBC diorientasikan untuk basisdata relasional. JDBC memungkinkan untuk melakukan tiga hal, yaitu:

1. Membangun sebuah koneksi dengan sebuah basisdata atau mengakses sumber data tabular apapun.

2. Mengirimkan statement SQL. 3. Memproses hasilnya.

JDBC telah menjadi bagian dari Java Standard Edition (Java SE) sejak rilis dari JDK 1.1. Kelas-kelas JDBC terdapat pada package java.sql. Mulai dari versi 3.0, JDBC dikembangkan di bawah Java Community Process (JCP).

JDBC memungkinkan berbagai macam implementasi untuk dapat digunakan oleh aplikasi yang sama. JDBC menyediakan mekanisme untuk me-load package-package Java yang dibutuhkan secara dinamis dan mendaftarkannya dengan JDBC Driver Manager. Driver Manager tersebut digunakan sebagai connection factory untuk membuat koneksi JDBC. Koneksi JDBC mendukung pembuatan dan pengeksekusian statement.

Ada beberapa jenis statement, yaitu:

1. Statement, statement yang dikirimkan ke server basisdata seketika itu juga.

2. PreparedStatement, statement yang di-cached terlebih dahulu dan kemudian pada server basisdata ditentukan execution path. Hal ini memungkinkan statement ini dapat dieksekusi berkali-kali dengan cara yang efisien.

(22)

3. CallableStatement, statement yang digunakan untuk mengeksekusi stored procedures

pada basisdata.

Statement dapat berupa update statement ataupun query statement. Update statement akan mengembalikan jumlah row yang terpengaruh dalam basisdata. Sedangkan query statement akan mengembalikan sebuah JDBC result set. Result set ini memiliki metadata yang menjelaskan nama dan tipe dari kolom-kolomnya.

Kode II-14 adalah contoh penggunaan JDBC [MED07d].

Class.forName( "com.somejdbcvendor.TheirJdbcDriver" ); Connection conn = DriverManager.getConnection(

"jdbc:somejdbcvendor:other data ", "myLogin", "myPassword" ); Statement stmt = conn.createStatement();

try {

ResultSet rs = stmt.executeQuery( "SELECT * FROM MyTable" ); try {

while ( rs.next() ) {

int numColumns = rs.getMetaData().getColumnCount(); for ( int i = 1 ; i <= numColumns ; i++ ) {

System.out.println("COLUMN " + i + " = " + rs.getObject(i)); } } } finally { rs.close(); } } finally { stmt.close(); }

Kode II-14 - Contoh penggunaan JDBC

Pertama kali driver JDBC yang diinginkan harus di-load dengan menggunakan fungsi Class.forName(String). Kemudian koneksi dapat dibuat dengan memanggil fungsi DriverManager.getConnection(). Selanjutnya objek Statement dapat dibuat dengan memanggil fungsi createStatement(). Dan statement SQL dapat dieksekusi dengan memanggil fungsi execute(String)atau executeQuery(String).

II.6

Java ME

Sun Microsystems memperkenalkan Java 2, Micro Edition pada konferensi JavaOne bulan Juni 1999. Untuk keperluan marketing, J2ME dirubah namanya menjadi Java Platform, Micro Edition atau disingkat menjadi Java ME pada konferensi JavaOne 2005 (27-30 Juni 2005) [JAV07a]. Java ME adalah lingkungan pengembangan yang didesain untuk meletakkan perangkat lunak Java pada alat-alat elektronik dan embedded device. Java ME didesain oleh Sun Microsystems sebagai pengganti teknologi mereka sebelumnya yang mirip, PersonalJava.

(23)

Java ME telah menjadi opsi yang populer untuk membuat aplikasi dan game pada telepon seluler dikarenakan kemampuannya untuk mengemulasikan aplikasi pada sebuah PC dan memasangkannya pada telepon seluler dengan mudah. Ini berbeda dengan platform lain yang memiliki kesulitan dalam melakukan pengetesan dan pemasangan aplikasi pada perangkat kerasnya, bahkan kadang membutuhkan perangkat keras tambahan yang mahal harganya.

Sun Microsystems telah memutuskan untuk tidak menyediakan binary implementasi dari Java ME

runtime environment untuk perangkat mobile, tetapi menyerahkannya kepada pihak ketiga untuk mengimplementasikannya. Ini berbeda dengan apa yang dilakukan Sun Microsystems pada platform

Java yang lain seperti Java SE dan Java EE, dimana mereka sendiri yang menyediakan binary

implementasinya.

Pada tanggal 22 Desember 2006, Sun Microsystems telah menyediakan source code dari Java ME yang berada dalam lisensi GNU General Public License (GPL). Penyediaan source code ini diberi nama proyek phoneME.

Berikut adalah ringkasan dari tujuan yang ingin dicapai dari adanya arsitektur Java ME:

• Menyediakan dukungan untuk berbagai peralatan dengan kemampuan yang berbeda-beda. Yang dimaksud dengan berbeda di sini adalah berbeda pada area user interface, penyimpanan data, keterhubungan jaringan dan bandwith, kapasitas memori, konsumsi tenaga, keamanan, dan pengembangannya.

• Menyediakan sebuah arsitektur yang dapat dioptimasi untuk lingkungan yang relatif kecil. • Mengutamakan pada peralatan yang tinggi tingkat personalisasinya, dan biasanya dimiliki

oleh satu orang saja.

• Menyediakan konektivitas jaringan melalui berbagai jenis kemampuan jaringan dan servis. • Menyediakan kemampuan untuk menyampaikan aplikasi dan data melalui koneksi jaringan. • Memaksimalkan kemampuan lintas platform dari bahasa Java sementara mengambil

keuntungan dari setiap alat yang memiliki kemampuan dan batasan yang unik.

• Menyediakan kemampuan untuk mengembangkan aplikasi antar device yang memiliki kemampuan dan fitur yang berbeda-beda.

Java ME adalah bagian dari Java Platform, Standard Edition (Java SE), karena itu tidak semua

library yang ada pada Java SE dapat digunakan pada Java ME. Namun Java ME memiliki beberapa

(24)

Gambar II-1 - Arsitektur Java ME [WIL03]

Java ME memperkenalkan dua konsep arsitektur yaitu configuration dan profile. Configuration

adalah sebuah bagian yang menyediakan fungsionalitas dasar, sedangkan profile adalah bagian yang dibangun di atas configuration tersebut dan menyediakan banyak fungsionalitas untuk dapat menggunakan kemampuan dari perangkat target. Selain itu, package opsional dapat didefinisikan di atas profile dan configuration. Setiap configuration dapat mendukung satu atau lebih profile serta sebuah configuration dan sebuah profile dapat memiliki satu atau lebih package opsional.

Configuration menyusun seperangkat API yang merupakan karakteristik runtime dari sebuah lingkungan Java ME tertentu. Configuration menentukan Core Java Classes, Java Programming Language Feature, dan Virtual Machine Feature. Java ME menyediakan dua buah configuration

yaitu CLDC (Connected Limited Device Configuration) dan CDC (Connected Device Configuration). CLDC biasanya digunakan pada perangkat kecil seperti pada telepon seluler, pager, dan PDA. CDC digunakan pada perangkat yang lebih besar seperti internet TV, Nokia Communicator, dan car TV.

Profile adalah seperangkat API yang menyediakan fungsionalitas-fungsionalitas dan keunggulan tertentu dari suatu perangkat spesifik. Untuk CLDC, profile yang biasa digunakan untuk perangkat telepon seluler adalah Mobile Information Device Profile (MIDP). Pada saat ini terdapat MIDP 1.0 dan MIDP 2.0. Fitur tambahan pada MIDP 1.0 dibandingkan dengan MIDP 2.0 adalah API untuk membuat lingkungan game, memainkan multimedia, dan membuat koneksi secure.

Aplikasi yang ditulis untuk MIDP disebut MIDlet. Aplikasi MIDlet adalah bagian dari kelas javax.microedition.MIDlet yang didefinisikan pada MIDP. MIDlet memiliki beberapa method

yang harus ada yaitu: • constructor()

(25)

• protected void pauseApp()

• protected void destroyApp(boolean unconditional)throws MIDletStateChangeException.

Ketika device menerima pesan untuk menjalankan MIDlet maka MIDlet diinstansiasi dan method startApp() dipanggil. Pada saat pengguna keluar dari MIDlet maka method destroyApp() akan dipanggil. Method ini akan melakukan terminasi MIDlet serta membersihkan semua resource yang mengacu pada MIDlet. Siklus hidup MIDlet dapat dilihat pada Gambar II-2.

Gambar

Tabel II-1 - Contoh result set
Tabel II-2 - Tipe Length Coded Binary
Tabel II-3 - Komposisi Handshake Initialization Packet
Tabel II-5 - Komposisi Client Authentication Packet
+7

Referensi

Dokumen terkait

Dari fenomena tersebut menunjukan bahwa selama tahun 2009, penjualan untuk sepeda motor Yamaha “SCORPIO” di Surabaya, tidak sesuai dengan apa yang diinginkan oleh perusahaan,

Dalam m akalah ini akan dibahas perh i tungan kctebalan perisa.i rad ia si pada saat penyinara n dengan posisi sumber isotop terarah pada pasi en, sehiugga bagia n

Berdasarkan Gambar 45, alternatif strategi pengembangan pengelolaan dilakukan oleh lembaga khusus yang dibentuk bersama oleh PEMDA (PPLKB) mempunyai rasio kepentingan paling

Bahan yang digunakan adalah salak pondoh nglumut yang merupakan salak khas Banjarnegara dengan variasi perendaman menggunakan Natrium metabisulfit, Kalsium hidroksida dan

Hal ini sangat berguna ketika kita ingi menghubungkan sintak PHP dengan MySQL karena untuk menghubungkannya kita membutuhkan nama user yang memiliki database tertentu dengan

bahwa Aplikasi Perangkat lunak bantu bertopik sistem pendataan Jamkesmas yang akan diberi nama Kartu Multifingsi pada Jamkesmaskot ini menggunakan obyek penelitian warga

Dengan kata lain para manajer diberi tanggung jawab untuk menentukan kegiatan yang memungkinkan setiap individu dapat memberikan sumbangan yang terbaik untuk

Berdasarkan hasil penelitian yang telah diuraikan pada penjelasan sebelumnya maka dapat diambil kesimpulan bahwa nilai kemampuan menulis teks eksposisi siswa dengan penerapan