5 BAB II DASAR TEORI 2.1. Java Java adalah

advertisement
5
BAB II
DASAR TEORI
2.1. Java
Java adalah bahasa pemrograman yang dapat dijalankan di berbagai
komputer termasuk telepon genggam. Java merupakan bahasa pemrograman yang
bersifat umum/non-spesifik (general purpose), dan secara khusus dirancang untuk
memanfaatkan
dependensi
implementasi
seminimal
mungkin.
Karena
fungsionalitasnya yang memungkinkan aplikasi Java mampu berjalan di beberapa
platform sistem operasi yang berbeda, Java dikenal pula dengan slogannya, “Tulis
sekali, jalankan di manapun”. Tahap kompilasi:
1. Tulis/ubah. Pemrogram menulis program dan menyimpannya di
media dalam bentuk berkas ‘.java’.
2. Kompilasi. Compiler membentuk bytecodes dari program menjadi
bentuk berkas ‘.class’.
3. Muat. Pemuat kelas memuat bytecodes ke memori.
4. Verifikasi. Peng-verifikasi memastikan bytecodes tidak mengganggu
sistem keamanan Java.
5. Jalankan. Penerjemah menerjemahkan bytecodes ke bahasa mesin [2].
Bahasa pemrograman Java menyediakan library-library standar yang telah
di-compile dan dapat langsung digunakan dalam implementasi pembuatan sebuah
aplikasi. Pada library, terdapat berbagai macam class yang dapat digunakan dan
telah dikelompokkan di dalam package [2]. Dalam hal ini, penulis hanya akan
membahas 2 package yaitu package IO (java.io) dan Network (java.net), yang mana
Universitas Sumatera Utara
6
class-class pada kedua package ini merupakan komponen utama yang dipakai
dalam pembuatan aplikasi lelang online berbasis Java.
2.1.1. Java.io
Package java.io pada java class library menyediakan class-class yang
mendukung untuk sistem input dan output melalui data stream, serialisasi dan
sistem file [1].
2.1.2. Java.net
Package java.net menyediakan class untuk implementasi aplikasi network.
Paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui
jaringan. Package java.net dapat dibagi dalam 2 bagian, yaitu: A Low-Level API,
yang berkaitan dengan masalah berikut:
1. Addresses, yaitu pengidentifikasian jaringan, seperti IP Addresses.
2. Sockets, yang merupakan dasar mekanisme data dua arah.
3. Interfaces, menggambarkan interface dari jaringan tersebut.
A High-Level API, yang berkaitan dengan masalah berikut:
1. URI, yang mewakili Universal Resource Identifier.
2. URL, yang mewakili Universal Resource Locators.
3. Connections, yang merupakan koneksi ke sumber daya yang
ditunjukkan oleh URL.
Salah satu keunggulan Java adalah dukungannya terhadap pengembangan
aplikasi multithread sebagai bagian terpadu bahasa Java. Java merupaka bahasa
pemrograman yang pertama kali memiliki dukungan intensif operasi-operasi thread
di bahasanya. Semantiks java.lang.object di mana semua instance merupakan
Universitas Sumatera Utara
7
instance java.lang.object memiliki monitor locking terhadap objek atau metode
(notify(), notifyAll(), wait()) hanya memiliki arti di konteks aplikasi multithreading.
Java menyediakan kata kunci synchronized untuk mengendalikan perilaku di
lingkungan multithreading [5].
2.2. Thread
Thread adalah prinsip yang memperbolehkan sebagian dari program untuk
berjalan secara independen dengan berbagai program lainnya. Dalam threading
dapat dijalankan beberapa pointer ataupun tugas/metode tertentu secara sekaligus
[5]. Artinya dua atau lebih bagian dari kode dapat dijalankan secara simultan.
Sebuah thread merupakan sebuah pengontrol aliran program. Dengan kata lain,
thread menyatakan program komputer untuk melakukan lebih dari satu tugas di
satu waktu yang sama.
Sebelumnya perlu dibedakan antara thread dan proses. Thread dan proses
sama-sama merupakan urutan kode yang dieksekusi. Pada Android, yang dasarnya
adalah Linux, setiap aplikasi yang dijalankan berada di proses yang terpisah. Satu
proses kemudian dapat memiliki satu atau lebih thread. Thread-thread di dalam
proses yang sama berbagi memori, walaupun setiap thread punya register dan stack
sendiri. Proses independen satu sama lain, sedangkan thread-thread pada proses
yang sama saling terkait.
Thread merupakan cara di Java untuk menjalankan banyak bagian secara
kongruen. Thread merupakan lightweight process yang tidak banyak menghabiskan
banyak overhead layaknya proses normal. Thread-thread dapat saling mengakses
data. Pengaksesan memori bersama mempermudah komunikasi antar-thread,
Universitas Sumatera Utara
8
namun menimbulkan permasalahan sinkronisasi pengaksesan data. Java
menyediakan kata kunci synchronized untuk mengendalikan perilaku thread di
lingkungan multithreading [5].
2.3. Android
Android adalah sistem operasi berbasis Linux yang dirancang untuk
perangkat bergerak (mobile) layar sentuh seperti smartphone dan komputer tablet.
Android merupakan sistem operasi yang opensource, dan Google merilis kodenya
di bawah lisensi Apache. Kode opensource dan lisensi perizinan pada Android
memungkinkan
perangkat
lunak
untuk
dimodifikasi
secara
bebas
dan
didistribusikan oleh para pembuat perangkat, operator nirkabel, dan pengembang
aplikasi.
Android merupakan subset perangkat lunak untuk perangkat mobile yang
meliputi sistem operasi, middleware dan aplikasi inti yang dirilis oleh Google.
Android dilengkapi dengan Android SDK (Software Development Kit) yang
menyediakan tools dan mendukung kebutuhan API (Application Programming
Interface) yang diperlukan untuk mengembangkan aplikasi pada platform Android
dengan menggunakan bahasa pemrograman Java.
Aplikasi Android ditulis dalam bahasa pemrograman Java, yaitu kode Java
yang terkompilasi bersama-sama dengan data dan file resources yang dibutuhkan
oleh aplikasi yang digabungkan oleh app tools menjadi paket Android, menjadi
sebuah file yang ditandai dengan ekstensi ‘.apk’. File ini didistribusikan sebagai
aplikasi dan diinstal pada perangkat mobile [4].
Universitas Sumatera Utara
9
2.3.1. Arsitektur Android
Arsitektur Android diibaratkan seperti sebuah tumpukan software. Pendapat
tersebut dikemukakan oleh Open Handset Alliance yang mengasuh Google sebagai
pencipta Android, yang mana setiap lapisan dari tumpukan ini menghimpun
beberapa program yang mendukung fungsi-fungsi spesifik dari sistem operasi. Pada
Gambar 7.1 di bawah ini akan menggambarkan arsitektur Android dari setiap
arasnya yang mana diibaratkan seperti tumpukan software.
Gambar 2.1 Arsitektur Android
Sumber: Android Anatomy and Physiology. Google I/O. 28 Mei 2008
Tumpukan paling bawah adalah kernel. Google menggunakan kernel Linux
versi 2.6 untuk membangun Android, yang mencakup memory management,
security setting, power management, dan beberapa driver hardware. Bertempat di
level yang sama dengan library adalah lapisan runtime yang mencakup serangkaian
inti library Java. Dengan ini, programmer dapat mengembangkan aplikasi untuk
Universitas Sumatera Utara
10
Android menggunakan bahasa pemrograman Java. Lapisan selanjutnya adalah
application framework, yang mencakup program untuk mengatur fungsi-fungsi
dasar smartphone [3].
2.3.2. Android SDK
Android
SDK
mencakup
seperangkat
alat
pengembangan
yang
komperhensif. Android SDK terdiri atas debugger, libraries, handset emulator,
dokumentasi, contoh kode dan tutorial. Saat ini Android sudah mendukung
arsitektur x86 pada Linux (distribusi Linux apapun untuk desktop modern), MacOS
X 10.4.8 atau lebih, Windows XP atau Vista. Persyaratan mencakup JDK, Apache
Ant dan Python 2.2 atau yang lebih baru. IDE yang didukung secara resmi adalah
Eclipse 3.2 atau lebih dengan menggunakan plug-in Android Development Tools
(ADT), dengan ini pengembang dapat menggunakan teks editor untuk meng-edit
file Java dan XML serta menggunakan peralatan command line untuk menciptakan,
membangun, melakukan debug aplikasi Android dan pengendalian perangkat
Android (misalnya reboot, menginstal paket perangkat lunak dari jarak jauh) [3].
2.4. Socket
Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai
suatu “terminal” dari suatu hubungan antara dua mesin atau proses yang saling
berinterkoneksi [6]. Socket adalah suatu class yang digunakan oleh aplikasi untuk
saling berhubungan. Komunikasi socket terutama diciptakan untuk tujuan
menjembatani komunikasi antara dua buah program yang dijalankan pada mesin
yang berbeda. Namun tentu saja berarti dua program pada mesin yang sama juga
dapat saling berkomunikasi.
Universitas Sumatera Utara
11
Socket merupakan fasilitas IPC (Inter Process Communication) untuk
aplikasi jaringan. Agar suatu socket dapat berkomunikasi dengan socket lainnya,
maka socket perlu diberi suatu alamat unik sebagai identifikasi. Alamat socket
terdiri atas Alamat IP dan Nomor Port. Contoh alamat socket adalah 192.168.29.30:
3000, di mana angka 3000 adalah nomor port-nya. Alamat IP dapat menggunakan
alamat jaringan lokal (LAN) maupun alamat internet [6]. Jadi socket dapat
digunakan untuk IPC pada LAN maupun internet. Logika dasar dari pemrograman
socket adalah sebagai berikut:
1. Jika ada 2 node yang ingin berkomunikasi, maka mereka harus
menentukan port mana yang akan digunakan untuk berkomunikasi
dan membuka port tersebut melalui deklarasi socket.
2. Jika sudah membuka port untuk berkomunikasi, yang perlu dilakukan
adalah membuat jalur untuk berkomunikasi yang menghubungkan
kedua port tersebut.
3. Jalur tersebut terbagi atas:

1 jalur untuk client mengirim data.

1 jalur untuk client menerima data.

1 jalur untuk server mengirim data.

1 jalur untuk server menerima data.
4. Jika keempat jalur tersebut sudah dibuat, maka server dan client sudah
dapat melakukan komunikasi.
Jika komunikasi sudah selesai, client dapat menutup jalur-jalur komunikasi yang
telah dibuat sebelumnya.
Universitas Sumatera Utara
12
2.5. Alamat IP
Alamat IP (Internet Protocol Address) adalah sederetan angka biner antara
32-bit sampai 128-bit yang dipakai sebagai alamat identifikasi untuk tiap komputer
host dalam jaringan internet. Panjang dari angka ini adalah 32-bit untuk IPv4 (IP
versi 4) dan 128-bit untuk IPv6 (IP versi 6) yang menunjukkan alamat pada
komputer agar komputer dapat saling terhubung dengan komputer lain. IP Address
terdiri dari 4 blok di mana setiap blok diisi oleh angka 0-255. Contoh IP Address
seperti 192.168.100.1 adalah IPv4.
2.6. Port
Dalam protokol jaringan TCP/IP, sebuah port adalah mekanisme yang
mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan
komputer lainnya dan program di dalam jaringan [6]. Port dapat mengidentifikasi
aplikasi dan layanan yang menggunakan koneksi di dalam jaringan TCP/IP.
Sehingga, port juga mengidentifikasi sebuah proses tertentu di mana sebuah server
dapat memberikan sebuah layanan kepada client atau bagaimana sebuah client
dapat mengakses sebuah layanan yang ada dalam server. Port dapat dikenali
dengan angka 16-bit (2 byte) yang disebut dengan Port Number dan diklarifikasi
dengan jenis protocol transport apa yang digunakan ke dalam Port TCP dan Port
UDP. Karena memiliki bilangan 16-bit, maka total maksimum jumlah port untuk
setiap protocol transport yang digunakan adalah 65536 buah.
2.7. Paradigma Client/Server
Paradigma client/server adalah dasar untuk framework jaringan Java.
Tentunya, penetapan ini terdiri dari dua elemen besar, yakni client dan server [6].
Universitas Sumatera Utara
13
Client adalah mesin yang membutuhkan beberapa jenis informasi, sedangkan
server adalah mesin yang menyimpan informasi dan menunggu untuk
menyampaikannya pada client. Paradigma ini menjelaskan sebuah skenario
sederhana. Tentunya, client terhubung dengan server dan meminta informasi.
Kemudian server mengingat permintaan dan mengembalikan informasi yang
tersedia kepada client.
Gambar 2.2 Model Client/Server
Sumber: JENI (Java Education Network Indonesia)
Model komunikasi client-server adalah model komunikasi dua arah yang
berjalan ketika client meminta sebuah layanan dari server. Model komunikasi
client-server harus berjalan dengan aturan yang sama. Semua proses berjalan dua
arah, client dan server saling berinteraksi, dan server hanya berjalan ketika client
meminta layanan darinya.
Universitas Sumatera Utara
14
Gambar 2.3 Model Komunikasi Client/Server
Sumber: JENI (Java Education Network Indonesia)
Gambar di atas adalah cara client dan server berkomunikasi. Secara
sederhana, model komunikasi client-server adalah:
1. Pertama-tama, server berada dalam keadaan LISTEN. Dalam keadaan
LISTEN ini, server menunggu dan siap menerima permintaan koneksi
dari client. Dalam hal ini, server membuka port dengan nomor tertentu
yang diketahui oleh client. Di sana ada service yang berjalan di pihak
server atau ada daemon yang berjalan dan menunggu port tertentu di
pihak server.
2. Hubungan antara client dengan server dimulai oleh client yang
bertindak meminta suatu koneksi ke server. Paketnya berupa Request
Connection pada gambar di atas.
3. Bila server menerima permintaan ini, server akan membalasnya dan
memberitau client bahwa permintaannya diterima berupa Accept
Universitas Sumatera Utara
15
Connection dari server seperti pada gambar di atas. Pada titik ini,
koneksi antara client dan server sudah terjalin.
4. Setelah terjalinnya koneksi, client dapat mengirimkan data ke server.
Begitu pula dengan sever boleh saling mengirimkan data antara satu
dengan lainnya yang disebut Data Transfer.
Setelah data selesai dikirim, client maupun server dapat saling mengakhiri
koneksi tersebut. Hal ini dikatakan sebagi Close Connection seperti pada gambar di
atas.
Universitas Sumatera Utara
Download