Ko sep U u Bahasa Pe rogra a Java
Sevendi Eldrige Rifki Poluan, Alexander Reski Rantepadang
Alamat e-mail ([email protected], [email protected])Teknik Informatika, Fakultas Ilmu Komputer, Universitas Klabat
Abstrak – Perkembangan teknologi membuat segala sesuatu yang awalnya kelihatan sulit untuk diselesaikan menjadi mudah. Kemudahan-kemudahan yang diperoleh membuat ketertarikkan bagi masyarakat untuk mengkonsumsinya. Perkembangan teknologi di dasarkan atas pengetahuan manusia yang terus mengalami perkembangan seiring terus berjalannya waktu. Memperhitungkan perbedaan kedudukan aplikasi yang akan diinstall diberbagai platform dan ukuran chip memory yang tertanam di dalam cable TV Box dengan berbagai platform yang hanya memiliki kemampuan untuk menampung ukuran kecil data, maka dipertimbangkanlah suatu bahasa pemrograman yang mampu menjadi solusi terbaik mengatasi hal tersebut. Di dalam chip tertanam sistem operasi yang adalah otak pengoperasian setiap aplikasi yang telah diinstall di atasnya. Keterbatasan ukuran memory yang ditanam di dalam cable TV Box yang memiliki latar belakang platform yang berbeda-beda, membuka wawasan para developer untuk membuat aplikasi khusus berukuran kecil yang memungkinkan aplikasi tersebut bisa dijalankan di berbagai platform. Maka muncullah suatu bahasa pemrograman yang dengan kemampuan Virtual Machinenya mampu menguasai setiap platform mesin untuk menjalankan setiap produk hasil kompilasinya yaitu bahasa pemrograman Java. Seiring berjalannya waktu, bahasa pemrograman terus mengalami perkembangan bukan lagi hanya sebatas mesin cable TV Box saja, tetapi terus berkembang sampai pada pebuatan aplikasi Desktop, aplikasi Web, aplikasi mobile dan berbagai jenis embedded system.
Kata kunci: Java, Object Oriented Programming, multi-platform, Write Once Run Anywhere.
I.
Pendahuluan
Tahun 1991 sampai tahun 1992 adalah tahun-tahun awal sejarah pebentukan Java [1]. Di pelopori oleh James Gosling, Patrick Naughton, Chris Warth, Ed Frank, dan Mike Sheridan dalam suatu proyek yang dipelopori oleh Sun Microsystem [2], untuk membuat suatu bahasa pemrograman yang memiliki kemampuan untuk bisa running pada berbagai mesin yang berlatar belakang platform yang berbeda-beda dan memiliki kemampuan dalam penggunaan kapasitas ukuran memory yang berukuran kecil untuk diterapkan pada cable TV Box. Terciptalah suatu bahasa pemrograman yang saat ini dikenal dengan bahasa pemrograman Oak yang pada tahun 1995 diubah namanya dengan bahasa pemrograman Java [2].
Java adalah bahasa pemrograman open source berorientasi objek yang memiliki kemampuan untuk dijalankan pada berbagai platform, sehingga bahasa pemrograman ini sering disebut sebagai bahasa pemrograman Write Once Run Anywhere (WORA) dimana memungkinkan program tidak diperlukannya lagi pengkompilasian ulang setiap kode sumber program untuk dijalankan di berbagai mesin karena adanya perbedaan platform setiap mesin[3]. Java dikembangankan untuk berbagai
jenis platform sistem operasi yang bersifat open source.
Mengadopsi sedikit konsep bahasa pemrograman C++ (Objek Oriented Programming), menyebabkan bahasa pemrograman Java memiliki sedikit kemiripan sintaks dengan bahasa pemrograman C++ [4]. Penggunaan automatic memory allocation dan memory garbage collection adalah salah sebagian fitur yang dimiliki oleh Java yang juga dimiliki oleh C++. Namun, penggunaan sintaks yang ada pada Java telah banyak dilakukan perbaikan seperti penggunaan pointer pada bahasa C++ tidak diadopsi di dalam bahasa pemrograman Java.
Pada paper ini, penulis akan membahas tentang konsep dasar pengintegrasian hasil kompilasi baris perintah Java terhadap jenis mesin yang memiliki latar belakang platform yang berbeda-beda.
II.
Kerangka Teori
A.
Pengertian Java
Java adalah bahasa pemrograman berorientasi objek pengembangan dari bahasa C++ yang dirancangan untuk memberikan kemudahan peningkatan pemanfaatan setiap baris perintah untuk pengembangan atau pembangunan suatu program atau aplikasi serta memberikan portabilitas yang tinggi bagi setiap baris perintah yang ditulis oleh developer untuk bisa running atau dieksekusi pada setiap mesin tanpa memandang latar belakang platform mesin tersebut. Dengan memanfaatkan sebuah mesin virtual JVMTM (Java Virtual Machine), setiap baris perintah yang sudah dieksekusi berupa bytecodes, akan diinterpretasikan oleh JVM sehingga memungkinkan bytecodes hasil kompilasinya bisa dijalankan di berbagai platform tanpa harus menulis ulang setiap kode baris perintah [5]. ]Di dalam bahasa pemrograman C setiap baris perintah yang dicompile, akan membentuk kumpulan-kumpulan instruksi (bytecodes) yang terbentuk berdasarkan latar belakang platform mesin yang digunakan mengikuti prosedur perintah platform tersebut dan setiap instruksi yang dibentuk hanya dimungkinkan untuk bisa dijalankan pada platform dimana program tersebut dicompile dan untuk membuat program tersebut bisa berjalan pada diplatform yang lain, maka membutuhkan pengkompilasian ulang untuk melakukan penyesuaian dengan environtment platform tersebut[4].
Gambar 1. Struktur Kompilasi Baris Perintah Program Selain Java [4]
Setiap baris perintah yang dikompilasi dengan bahasa pemrograman selain Java akan membentuk bycodes yang hanya dapat dikenal dan dieksekusi dimana baris perintah tersebut dikompilasi. Seperti pada Gambar 1, menunjukkan bahwa baris perintah yang dikompilasi di Pentium akan membentuk kumpulan instruksi atau bytecodes berdasarkan procedure perintah yang disyaratkan oleh Pentium sehingga hanya bisa dieksekusi pada platform dengan latar belakang Pentium saja. Begitu juga dengan PowerPC dan SPARC, setiap bytecodes yang dibentuk hanya dapat dieksekusi sesuai dengan latar belakang masing-masing platform dimana baris perintah tersebut dieksekusi. Lain halnya dengan Java, baris-baris perintah Java yang dikompilasi akan membentuk bytecodes yang memungkinkan untuk bisa dijalankan diberbagai latar belakang platform yang ada. Inilah salah satu kemampuan yang
Gambar 2. Struktur Kompilasi Program Java [4]
dimiliki oleh bahasa pemrograman Java yang tidak dimiliki oleh bahasa-bahasa pemrograman lainnya. Baris perintah yang dikompilasi di Pentium, membentuk bytecodes yang memungkinkan bisa dieksekusi di PowerPC dan SPARC, dan begitu juga sebaliknya seperti halnya baris perintah yang dijalankan pada Pentium bisa dijalankan pada PowerPC dan SPARC, pengompilasian baris perintah pada PowerPC dan SPARC juga bisa dieksekusi pada Pentium, PowerPC dan SPARC juga.
B.
Class
Di dalam kelas inilah semua operasi-operasi dilakukan atau diimplementasikan. Untuk mengaktifkann semua fungsi-fungsi yang ada di dalam suatu kelas, maka sebuah kelas itu harus dideklaraskan sebuah method yang memiliki tipe static karena method yang memilki tipe static, menginjinkan method tersebut mendapatkan pengalokasian tempat di dalam memory lebih awal dibandingkan dengan method-method lainnya ketika kelas tersebut dieksekusi dan nantinya method yang bertipe static tersebut akan menjadi mediary bagi method-method dan attributes lain yang bukan bertipe static untuk dieksekusi atau dikelola. Sebuah kelas juga memiliki identifier yang memungkinkan kelas tersebut membatasi ruang lingkup pengaksesan kelas lain terhadap kelas itu.
C.
Constructor
Constructor adalah adalah sebuah method yang digunakan sebagai media dalam menciptakan sebuah objek. Karena konstruktor bisa di overload, maka dengan objek setiap fungsi-fungsi dan attributes yang dimiliki sebuah kelas bisa diakses atau dikelola berdasarkan parameter setiap konstruktor yang dioveload. Overloading constructor adalah kondisi dimana sebuah kelas memiliki lebih dari satu buah konstruktor. Jadi penciptaan sebuah objek oleh konstruktor, diciptakan berdasarkan jumla parameter yang dimiliki oleh konstruktor tersebut. Secara default, sebuah kelas yang tidak dideklarasikan sebuah konstruktor, kelas tersebut akan menggunakan konstruktor defaultnya (konstruktor tanpa parameter) kelas itu sendiri sebagai media bagi kelas itu untuk menciptakan objek untuk mengelola fungsi-fungsi dan attirbutes yang dimiliki oleh kelas. Berdasarakan penerapannya di dalam kode program, konstruktor seperti halnya method atau fungsi dalam pendeklarasiannya, dideklarasikan dengan menggunakan modifier tetapi penamaan pada konstruktor harus mengikuti nama kelas itu sendiri. Dan yang membedakan konstruktor dengan method lainnya adalah konstruktor tidak bertipe void dan tidak memiliki pengembalian nilai seperti halnya method-method biasa.
D.
Method
Method adalah fungsi-fungsi yang dimiliki oleh suatu kelas. Seekor anjiing memiliki fungsi. Anjing bisa menggongong, Anjing bisa menggigit, Anjing bisa berkelahi, anjing bisa melihat, anjing bisa berjalan dan berbagai fungsi-fungsi lain yang dimiliki oleh seekor Anjing yang bisa dia lakukan. Fungsi-fungsi tersebut di dalam bahasa pemrograman Java, akan mengimplementasikan apa yang bisa dilakukan oleh suatu kelas dalam menonjolkan berbagai keunggulan-keunggulan atau
kelebihan-kelebihan yang ia miliki untuk dilakkukan.
E.
Attribute/Properties
Attribute/properties adalah semua perengkapan-perlengakapan yang dimiliki oleh sebuah kelas yang bekerja sama dalam menyokong pengimplementasian setiap fungsi-fungsi yang dimiliki oleh sebuah kelas.
F.
Objek Oriented Programming (OOP)
Objek Oriented Programming adalah suatu konsep bahasa pemrograman yang berorientasi objek yang diciptakan untuk mempermudah developer dengan mengikuti model yang sudah ada dalam kehidupan nyata [6]. Berikut adalah empat prinsip umum OOP yang adalah merupakan konsep dasar pemrograman Java: 1) EncapsulationEncapsulation biasanya disebut dengan data hiding [7]. Encapsulation adalah suatu teknik di dalam bahasa pemrograman Java dalam membuat sebuah field di dalam suatu kelas serta menyediakan akses kepada field tersebut melalui public methods. Jika field tersebut adalah field yang bertipe private, maka field tersebut tidak bisa diakses oleh kelas lain. Dengan demikian memungkinkkan kelas-kelas yang dibangun dan methods yang ciptakan di dalam suatu kelas dapat di kontrol keamanannya. Pengontrolan keamaan ini biasanya disebut dengan modifier. Di dalam bahasa pemrograman Java terdapat 4 jenis modifier,
yaitu
public,
private,
protected
dan
default
(biasanya tidak ditulis). Gambar dibawah
ini (Gambar 3) mendeskripsikan bagaimana hak akses yang dimiliki oleh setiap modifiers dalam penggunaannya.Setiap simbol menunjukkan seberapa luas hak akses yang dimilikinya dalam melakukan pengaksesan setiap resources yang ada.
public – Kelas atau fungsi yang bertipe public, menyatakan bahwa kelas atau fungsi tersebut bisa diakses pada semua kelas yang dibentuk meskipun kelas tersebut berada pada package yang berbeda.
private – Modifier yang bertipe private adalah modifier yang tidak menginjinkan kelas atau fungsi yang dimiliki oleh kelas itu diakses oleh kelas lain meskipun itu kelas turunannya (subclass).
protected –Seperti halnya fungsi atau kelas yang bertipe public, tetapi protected tidak
bisa mengakses kelas-kelas maupun fungsi-fungsi yang ada pada package yang berbeda tanpa instansiasi.
default –Hak akses yang dimiliki oleh suatu kelas dan fungsi-fungsinya yang hanya bisa mengakses kelas-kelas maupun fungsi-fungsi yang berada di dalam satu packagenya saja, itu berarti kelas tersebut tdak bisa mengakses kelas-kelas serta fungsi-fungsi yang berada ada package yang lain.
Gambar di bawah ini akan menunjukkan detail atau rincian hak akses setiap modifier dalam sebuah kelas.
Gambar 4. Hak Akses Modifier Pada Java [8]
2) Inheritance
Inheritance adalah suatu konsep pewarisan. Seperti halnya dikehidupan nyata, Java juga mengadopsi konsep pewarisan yang memungkinkan subclassnya mendapat warisan dari superclassnya. Semua attributes dan fungsi-fungsi yang dimilliki oleh kelas super adalah juga milik dari subclass (diwarisi oleh superclass).
Gambar 5. Pewarisan [9]
Implementasinya ke dalam program dioperasikan dengan menggunakan keyword extends. Kelas yang akan mengijinkan semua fungsi-fungsi dan attributes yang dimilikinya biasanya disebut dengan kelas parent, diturunkan kepada kelas yang akan mendapat warisan setiap
fungsi-fungsi dan attributes
yang dimiliki
oleh kelas
parent
(
super class
)
biasanya
disebut dengan kelas
child
(
sub class
).
Implementasinya
kelas
child
extends
kan kelas
parent.
3) Abstraction
Secara umum, abstraksi adalah suatu konsep di dalam bahasa pemrograman komputer yang menggambarkan konsep rill fungsi suatu program atau aplikasi yang ditampilkan dalam bentuk abstrak.
Gambar 6. Abstraction [4]
digambarkan nantinya, maka digambarkanlah suatu gambar abstrak yang akan menerangkan secara jelas bahwa itu adalah merupakan sebuah gambar pohon yang nantinya ketika gambar abstrak itu diimplementasikan, maka gambar abstrak itu bisa jadi bahwa pohon itu adalah pohon kelapa, atau bisa jadi pohon itu adalah pohon Pala, atau bisa jadi pohon itu adalah pohon Langsat, atau bisa jadi pohon itu adalah pohon Cengkeh dan lain-lain tergantung kebutuhan penggunaan.
Dalam implementasinya pada bahasa pemrograman Java, di dalam kelas abstract tidak mebuka perizinan untuk membuat instansiasi seperti halnya kelas-kelas biasa. Di dalam kelas abstrak berisi methods yang dideklarasikan tanpa adanya implementasi dari method tersebut sebagaimana penjelasan pada Gambar 6. Dan untuk membuat sebuah kelas itu menjadi kelas abstrak, maka kelas tersebut harus dideklarasikan sebagai kelas abstrak (menggunakan keywordabstract). Di dalam kelas abstract hanya berisi kumpulan method-method abstrak yang tidak memiliki body (belum diimplementasi) yang pengimplementasiannya akan diimplementasikan oleh kelas turunannya (kelas abstrak sebagai super class).
4) Polymorphism
Polymmorphism adalah konsep implementasi sebuah method pada kelas parent yang juga diimplementasikan pada kelas childnya yang dengan latar belakang method yang memiliki nama yang sama tetapi memiliki parameter yang berbeda. Biasanya polymorphism ini sering disebut sebagai sebuah kelas yang memiliki banyak bentuk. Bisa juga polymorphism ini disebut sebagai overloading method tetapi bukan pada kelas yang sama melainkan pada kelas turunannya.
G.
Kesimpulan
Semua perangkat lunak komputer dibangun di atas setidaknya satu bahasa pemrograman utama. Semua bahasa pemrograman menyediakan berbagai kemudahan-kemudahan untuk kelola oleh developer membangun berbagai jenis aplikasi.
Salah satu bahasa pemrograman dari sekian banyak bahasa pemrograman yang ada saat ini yang menyediakan kemudahan adalah bahasa pemrograman Java. Portabiltasnya membuat bahasa pemrograman Java berbeda dengan bahasa pemrogramana lainnya. Jadi,
kesimpulan yang bisa kita peroleh sehubungan dengan pengintegrasian hasil kompilasi bahasa pemrograman Java terhadap latar belakang platform mesin yang berbeda adalah: Java bersifat WORA (Write Once Run Anywhere). Portabilitas Java membuat Java banyak diminati oleh banyak developer. Sekali baris perintah Java dieksekusi disebuah platform, dengan memanfaatkan JVM (Java Virtual Machine), bytecodes hasil kompilasi platform tersebut bisa dijalankan pada berbagai platform mesin dengan latar belakangnya yang berbeda-beda karena bytecodes tersebut akan diinterpretasikan oleh JVM sesuai dengan latar belakang platform yang ada. Selain itu, Java juga menyediakan sebuah libraries khusus yang didalamnya berisi sejumlah besar kelas-kelas yang disertai dengan paket-paket fungsi khusus yang dipaketkan sesuai dengan kategori setiap kelas yang berbeda-beda. Kelas-kelas itu siap digunakan oleh developer memenuhi fungsi-fungsi aplikasinya dalam mencapai kesempurnaan target pembuatan aplikasinya.
Portabilitas Java sangat membantu developer membangun sebuah aplikasi dengan mudah, cepat dan efisien.
Daftar Pustaka
[1] Anne Ahira, Bahasa Pemrograman Java [Online].
Available: http://www.anneahira.com/java.htm
[2] He ert “ hildt, The Co plete Refere e JavaTM
Eight Editio , TATA M GRAW-HILL EDITION,
United State of America:The McGraw-Hill Companies, 2007.
[3] Sejarah Singkat Java [Online]. Available:
http://bpptik.kominfo.go.id/index.php/id/artike l/142-sejarah-singkat-java
[4] Laura Le ay, Charles L. Perki s, Tea h Yourself
JAVA i Days , 1st ed., United States of
Amerika:Macmillan Computer Publishing, 1996, Ch. 1, Pg. 4.
[5] Sun Microsystems, JavaTM Programming
Language , Sun Educational Services, Revision G.1, United State of America:Sun Microsystems Inc., 2007, Page 4 - 10.
[6] PT Masterweb Media (2002), Konsep OOP di
Java [Online].
Available:http://www.master.web.id/mwmag/i ssue/06/content/tutorial-java-3/tutorial-java-3.html.
[7] TP Simply Easy Learning, Java – Encapsulation
[Online].
available:http://www.tutorialspoint.com/java/j ava_encapsulation.htm
[8] (2012), Modifier Akses Pada Java [Online].
[9] Ora le, Java Progra i g La guagge Java “E
6, Activity Guide – Vol 2 (for Windows), Edition