BAB IV HASIL DAN ANALISIS
4.2. Analisis Aplikasi
4.2.1. Poin Penting dari Aplikasi
Berikut adalah beberapa poin penting dari aplikasi Lelang Online Sederhana Berbasis Android:
a. Aplikasi Lelang Online Sederhana ini dapat berjalan dengan baik di beberapa smartphone berbasis Android.
b. Aplikasi ini merupakan pengembangan dari aplikasi chat dan forum. c. Dengan threading, aplikasi server dapat menangani input-an yang
dilakukan secara serempak oleh client.
d. Perintah synchronized akan mengatur penyerempakan penerimaan data pada tiap thread saat proses pengiriman pesan leaderboard.
46
BAB V
KESIMPULAN DAN SARAN 5.1. Kesimpulan
Dari hasil pengujian dan analisis yang telah dilakukan pada bab sebelumnya, maka dapat diperoleh kesimpulan sebagai berikut:
1. Pengiriman perintah-perintah khusus dapat digantikan dengan tombol namun pada prinsipnya tetap mengirimikan pesan teks dengan jalur komunikasi yang sama.
2. Threading memungkinkan server untuk melayani input-an yang datang dari client secara serempak (selisih waktu ±50ms dianggap sebagai human error).
3. Keadilan (fairness) dalam pengiriman pesan kepada setiap client
tercapai dengan tundaan waktu antar client hanya sekitar 20 sampai 40ms.
5.2. Saran
Beberapa saran yang dapat diberikan sehubungan dengan pelaksanaan tugas akhir ini adalah:
1. Untuk perancangan selanjutnya diharapkan dapat diaplikasikan untuk jaringan internet (worldwide).
47
3. Untuk perancangan selanjutnya diharapkan dapat memanfaatkan fungsi-fungsi lain pada threading secara optimal seperti sleep, wait, dan sebagainya.
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
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
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.
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].
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
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.
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.
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].
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
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
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.
1
BAB I PENDAHULUAN 1.1. Latar Belakang
Threading dalam bidang komputasi dan jaringan telah digunakan sejak lama dan dikembangkan dalam berbagai aplikasi. Aplikasi ini biasanya berkaitan dengan
chat atau forum di mana setiap client akan menerima informasi yang dikirimkan
dari salah satu client dan proses dapat bekerja serempak untuk masing-masing client
yang terhubung.
Lelang melalui internet muncul seiring dengan perkembangan internet itu sendiri. Barang atau jasa yang diperjualbelikan dipasang di situs dan peserta lelang dapat mengikuti acara lelang secara daring (online). Perusahaan lelang yang berhasil menggunakan sarana internet salah satunya adalah Ebay. Di Indonesia, lelang melalui internet (online) sudah dipelopori oleh pemerintah dengan situs lelang online.
Lelang online yang umum dikembangkan saat ini adalah lelang yang dijalankan melalui situs yang tersedia. Hal ini melatarbelakangi penulis untuk mereancang dan membuat sebuah aplikasi lelang online berbasis Android dengan memanfaatkan multithreading sebagai poin utama dari aplikasi tersebut. Penulis menggunakan library yang disediakan oleh Java untuk mendukung proses
multithreading ini dan MySQL untuk pengelolaan database.
1.2. Rumusan Masalah
Adapun rumusan masalah dari Tugas Akhir ini adalah sebagai berikut :
2
a. Bagaimana merancang dan membuat aplikasi lelang online berbasis Android dengan threading.
b. Bagaimana pengelolaan database untuk login/register session dan
leaderboard.
c. Bagaimana peran server (sekaligus admin) dalam manajemen program yang dijalankan.
1.3. Tujuan
Tujuan dari penulisan Tugas Akhir ini adalah memodifikasi sistem yang umumnya digunakan dalam chat dan forum untuk diterapkan dalam aplikasi lelang
online berbasis Android.
1.4. Batasan Masalah
Untuk menghindari pembahasan yang meluas dalam tugas akhir ini, maka penulis menetapkan batasan-batasan masalah sebagai berikut :
a. Sistem operasi yang digunakan oleh smartphone adalah Android.
b. Pemrograman untuk server dibangun menggunakan NetBeans Java IDE. c. Jumlah client dibatasi sebanyak 7 client.
d. Alamat IP server sudah ditetapkan di dalam program. e. Koneksi yang digunakan adalah WLAN.
f. Nilai credit (uang elektronik) yang dimiliki client diisikan secara manual oleh
3
1.5. Manfaat
Adapun manfaat dari penelitian ini adalah untuk menciptakan aplikasi lelang online dengan sistem yang sederhana agar dapat dikembangkan oleh calon
enterpreneur sebagai aplikasi start-up-nya.
1.6. Tahapan Penelitian
Untuk dapat meyelesaikan penelitian tugas akhir ini, maka penulis menerapkan beberapa metode penelitian diantaranya:
1. Studi Literatur
Studi literatur dilakukan dengan mengumpulkan buku dan jurnal yang berhubungan dengan Threading pada Java dan Android yang menjadi bahan pada penulisan serta sebagai referensi bagi penulis.
2. Perancangan dan Membangun Sistem
Dilakukan perancangan perangkat lunak dengan membuat algoritma
threading dan proses perlelangan untuk server, algoritma client untuk
smartphone berbasis Android dan membuat activity diagram-nya. 3. Ujicoba dan Analisis Data
Pada tahap ini dilakukan pengujian aplikasi terhadap algoritma threading- nya lalu pengujian aplikasi client terhadap beberapa smartphone, pengujian terhadap database, hingga pengujian proses perlelangan.
4. Sistematika Penulisan
Untuk memberikan gambaran mengenai Tugas Akhir ini, maka penulis menyusun sistematika penulisan sebagai berikut:
4
BAB I PENDAHULUAN
Bab ini menguraikan tentang latar belakang masalah, rumusan masalah, tujuan penulisan, batasan masalah, manfaat penelitian, metodologi penulisan, serta sistematika penulisan
BAB II DASAR TEORI
Bab ini membahas sekilas mengenai beberapa teori Java, thread, Android,
socket, alamat IP, port dan paradigma client/server.
BAB III PERANCANGAN SISTEM
Bab ini membahas tentang gambaran umum aplikasi, perancangan aplikasi
server dan perancangan aplikasi client sesuai metodologi penelitian.
BAB IV HASIL DAN ANALISIS
Bab ini membahas tentang hasil dan analisis aplikasi yang dibuat. Baik pengujian pada server maupun pada client.