Bahasa Pemrograman Java
Bahasa Java dapat dikategorikan sebagai sebuah bahasa pemrograman berorientasi objek, pemrograman terdistribusi dan bahasa pemrograman multithrreaded. Objek Java dispesifikasi dengan membentuk kelas. Untuk masing-masing kelas Java, kompiler Java memproduksi sebuah file keluaran arsitektur netral yang akan jalan pada berbagai implementasi dari Java Virtual Machine (JVM). Awalnya Java sangat digemari oleh komunitas pemrograman internet, karena Java mendukung untuk applets, dimana program dengan akses sumber daya terbatas yang jalan dalam sebuah web browser. Java juga menyediakan dukungan level tinggi untuk networking dan objek terdistribusi.
Java juga dianggap sebagai sebuah bahasa yang aman. Tampilan ini pada khususnya penting menganggap bahwa sebuah program Java boleh mengeksekusi silang sebuah jaringan terdistribusi.
Java API
Java API terdiri dari tiga bagian utama:
*
Java Standard Edition (SE), sebuah standar API untuk merancang aplikasi desktop dan applets dengan bahasa dasar yang mendukung grafis, M/K, keamanan, konektivitas basis data dan jaringan.
*
Java Enterprose Edition (EE), sebuah inisiatif API untuk merancang aplikasi server dengan mendukung untuk basis data.
*
Java Macro Edition (ME), sebuah API untuk merancang aplikasi yang jalan pada alat kecil seperti telepon genggam, komputer genggam dan pager.
Java Virtual Machine
Java Virtual Machine (JVM) adalah sebuah spesifikasi untuk sebuah komputer abstrak. JVM terdiri dari sebuah kelas pemanggil dan sebuah interpreter Java yang mengeksekusi kode arsitektur netral. Kelas pemanggil memanggil file .class dari kedua program Java dan Java API untuk dieksekusi oleh interpreter Java. Interpreter Java mungkin sebuah perangkat lunak interpreter yang menterjemahkan satu kode byte pada satu waktu, atau mungkin sebuah just-intime (JIT) kompiler yang menurunkan bytecode arsitektur netral kedalam bahasa mesin untuk host computer.
Sistem Operasi Java
Sistem operasi biasanya ditulis dalam sebuah kombinasi dari kode bahssa C dan assembly, terutama disebabkan oleh kelebihan performa dari bahasa tersebut dan memudahkan komunikasi dengan perangkat keras.
Satu kesulitan dalam merancang sistem basis bahasa adalah dalam hal proteksi memori, yaitu memproteksi sistem opeasi dari pemakai program yang sengaja memproteksi pemakai program lainnya. Sistem operasi tradisional mengaharapkan pada tampilan perangkat keras untuk menyediakan proteksi memori. Sistem basis bahasa mengandalkan pada tampilan keamanan dari bahasa. Sebagai hasilnya, sistem basis bahasa menginginkan pada alat perangkat keras kecil, yang mungkin kekurangan tampilan perangkat keras yang menyediakan proteksi memori.
Dasar Pemrograman
Java2 adalah generasi kedua dari Java platform (generasi awalnya adalah Java Development Kit). Java berdiri di atas sebuah mesin interpreter yang diberi nama JVM. JVM inilah yang akan membaca bytecode dalam file .class dari suatu program sebagai representasi langsung program yang berisi bahasa mesin. Oleh karena itu, bahasa Java disebut sebagai bahasa pemrograman yang portable karena dapat dijalankan pada berbagai sistem operasi, asalkan pada sistem operasi tersebut terdapat JVM.
Platform Java terdiri dari kumpulan library, JVM, kelas- kelas loader yang dipaket dalam sebuah lingkungan rutin Java, dan sebuah compiler, debuger, dan perangkat lain yang dipaket dalam Java Development Kit (JDK). Java2 adalah generasi yang sekarang sedang berkembang dari platformJava. Agar sebuah program Java dapat dijalankan, maka file dengan ekstensi ''.java'' harus dikompilasi menjadi file bytecode. Untuk menjalankan bytecode tersebut dibutuhkan JRE ( Java Runtime Environment) yang memungkinkan pemakai untuk menjalankan program Java, hanya menjalankan, tidak untuk membuat kode baru lagi. JRE berisi JVM dan libraryJava yang digunakan.
PlatformJava memiliki tiga buah edisi yang berbeda, yaitu J2EE ( Java2 Enterprose Edition), J2ME ( Java2 Micro Edition) dan J2SE ( Java2 Second Edition). J2EE adalah kelompok dari beberapa API ( Application Programming Interface) dari Java dan teknologi selain Java. J2EE sering dianggap sebagai middleware atau teknologi yang berjalan di server, namun sebenarnya J2EE tidak hanya terbatas untuk itu. Faktanya J2EE juga mencakup teknologi yang dapat digunakan di semua lapisan dari sebuah sistem informasi. Implementasi J2EE menyediakan kelas dasar dan API dari Java yang mendukung pengembangan dari rutin standar untuk aplikasi klien maupun server, termasuk aplikasi yang berjalan di web browser. J2SE adalah lingkungan dasar dari Java, sedangkan J2ME merupakan edisi library yang dirancang untuk digunakan pada device tertentu seperti pagers dan mobile phone.
Java merupakan bahasa pemrogrman yang bersifat case sensitive yang berarti penulisan menggunakan huruf besar ataupun huruf kecil pada kode program dapat berarti lain. Misalnya penulisan "System" akan diartikan berbeda dengan "system" oleh interpreter. Java tidak seperti C++, Java tidak mendukung pemrograman prosedural, tapi mendukung pemrograman berorientasi objek sehingga ada sintaks class pada kode programnya.
Objek dan Kelas
Sebuah kelas menyerupai sebuah struktur yang merupakan tipe data sendiri, misalkan tipe data titik yang terdiri dari koordinat x dan y. Bahasa Java telah menggunakan sebuah kelas untuk menyatakan tipe data titik karena bahasa pemrograman Java merupakan bahasa pemrograman berorientasi objek murni sehingga tidak mengenal struktur tapi mengenal apa yang disebut dengan kelas.
Perbedaan sebuah kelas dengan sebuah struktur adalah sebuah kelas dapat berdiri sendiri dan dapat digunakan untuk berbagai keperluan kelas-kelas yang lain, sedangkan sebuah struktur tidak dapat berdiri sendiri. Sebuah kelas lebih fleksibel untuk digunakan oleh kelas lain tanpa harus membongkar kode program utama, sedangkan jika digunakan struktur maka kode program harus dibongkar unuk disalin bagian strukturnya ke kode program utama yang lain. Sebuah file dapat terdiri dari berbagai kelas, namun biasanya pada bahasa pemrograman Java sebuah file hanya terdiri dari satu kelas yang disimpan dengan nama kelas, misal file List.java berisi kelas List. Namun jika kelas yang dibuat misalnya public class nama_kelas, maka kelas itu harus disimpan dalam satu file hanya untuk satu kelas. Setelah dilakukan kompilasi maka pada Java akan ada sebuah file ''.class'' yang berisi bytecode dari setiap kelas. Jika sebuah file terdiri dari dua kelas maka setelah dikompilasi akan dihasilkan dua buah file ''.class'' yang nantinya akan dibaca oleh interpreter Java saat program dieksekusi.
Sebuah kelas saat program dieksekusi dan perintah new dijalankan, maka akan dibuat sebuah objek. Objek adalah elemen pada saat runtime yang akan diciptakan, dimanipulasi dan dihancurkan saat eksekusi sehingga sebuah objek hanya ada saat sebuah program dieksekusi, jika masih dalam bentuk kode, disebut sebagai kelas jadi pada saat runtime (saat sebuah program dieksekusi), yang kita punya adalah objek, di dalam teks program yang kita lihat hanyalah kelas.
Atribut
Atribut dari sebuah kelas adalah variabel global yang dimilki sebuah kelas, misalkan pada kelas sebagai berikut:
class Elemen
NilaiMatKul elmt
Elemen next
Elemen()
{end constructor}
{end class}
maka elmt dan next adalah atribut dari kelas Elemen. Atribut pada sebuah kelas memiliki izin akses jika kelas digunakan oleh kelas lain, izin akses itu seperti private, public dan protected
Atribut Private
Izin akses private pada sebuah atribut biasanya digunakan oleh sebuah kelas untuk melindungi atribut-atributnya agar tidak dapat diakses oleh kelas lain. Sebuah atribut yang dinyatakan sebagai private hanya dapat diakses secara langsung oleh kelas yang membungkusnya, sedangakan kelas lainnya tidak dapat mengakses atribut ini secara langsung, misalkan kelas sebagai berikut:
class Elemen
private NilaiMatKul elmt
private Elemen next
Elemen()
{end constructor}
{end class}
maka yang dapat mengakses elmt dan next hanyalah kelas Elemen sehingga jika sebuah kelas List di dalamnya mempunyai kode sebagai berikut:
Elemen e <- new Elemen
maka pengaksesan e.next tidak dizinkan pada kelas List. Agar isi dari sebuah atribut private dapat diakses oleh kelas lain dapat dibuat sebuah metode yang mengembalikan nilai atribut itu, misalnya sebagai berikut:
public getNext() -> Elemen
-> next
{end getNext}
sehingga kelas lain akan mengakses atribut next pada kelas Elemen dengan kode Elemen n < e.getNext().
Atribut Public
Izin akses public sebuah kelas, jika sebuah atribut diperbolehkan diakses secara langsung oleh kelas lain. Sebuah atribut yang dinyatakan sebagai public dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya, misalkan pada kelas Elemen sebagai berikut:
class Elemen
public NilaiMatKul elmt
Elemen next
Elemen ()
{end constructor}
{end class}
maka aatribut elmt dan next dapat diakses secara langsung oleh kelas lain, misalkan dengan kode:
Elemen e <- new Elemen()
e.next <- NULL
Jika sebuah atribut tidak ditulis izin aksesnya misalkan hanya ditulis Element next, maka interpreter Java akan menganggap atribut next mempunyai izin akses public.
Atribut Protected
Izin akses protected sebuah atribut biasanya digunakan oleh sebuah kelas, jika sebuah atribut diperbolehkan diakses secara langsung oleh kelas lain yang merupakan kelas turunannya ( inheritance). Sebuah atribut yang dinyatakan sebagai protected tidak dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya, kecuali kelas yang mengaksesnya adalah kelas turunan dari kelas yang membungkusnya, misalkan pada kelas Elemen sebagai berikut:
class Elemen
protected NilaiMatKul elmt
protected Elemen next
Elemen()
{end constructor}
{end class}
maka atribut elmt dan next dapat diakses secara langsung oleh kelas lain yang merupakan turunan kelas Elemen. Izin akses protecteddimaksudkan untuk melindungi atribut agar tidak diakses secara langsung oleh sembarang kelas lain, namun diizinkan diakses secara langsung oleh kelas turunannya.
Konstruktor
Sebuah kelas harus memiliki sebuah metode yang disebut sebagai konstruktor. nama sebuah konstruktor harus sama dengan nama dari sebuah kelas, misalkan kelas Elemen maka konstruktornya adalah Elemen(). Sebuah konstruktor juga dapat menerima sebuah masukan seperti halnya prosedur pada pemrograman prosedural. Fungsi dari sebuah konstruktor adalah: mengalokasikan sebuah objek saat program dieksekusi, memberikan nilai awal sebagai inisialisasi dari semua atribut yang perlu diinisialisasi dan mengerjakan proses- proses yang diperlukan saat sebuah objek dibuat.
Namun pada kenyataannya sebuah konstruktor dapat tidak berisi apa-apa, hal ini jika memang tidak diperlukan adanya inisialisasi atau proses yang dikerjakan ketika sebuah objek dibuat. Konstruktor harus bersifat publickarena sebuah konstruktor akan diakses oleh kelas lain untuk membuat objek suatu kelas.
Sebuah kelas dapat memiliki konstruktor lebih dari satu. Pada saat eksekusi program, kompiler atau interpreter akan mencari konstruktor mana yang sesuai dengan konstruktor yang dipanggil, hal ini disebut sebagai overloading.
Metode
Metode pada sebuah kelas hampir sama dengan fungsi atau prosedur pada pemrograman prosedural. Pada sebuah metode di dalam sebuah kelas juga memiliki izin akses seperti halnya atribut pada kelas, izin akses itu antara lain private, publicdan protectedyang memiliki arti sama pada izin akses atribut yang telah dibahas sebelumnya. Sebuah kelas boleh memiliki lebih dari satu metode dengan nama yang sama asalkan memiliki parameter masukan yang berbeda sehingga kompiler atau interpreter dapat mengenali metode mana yang dipanggil.
Di dalam sebuah kelas, terdapat juga yang disebut sebagai metode atau atribut statis yang memiliki kata kunci static. Maksud dari statis di sini adalah metode yang dapat diakses secara berbagi dengan semua objek lain tanpa harus membuat objek yang memiliki metode statis tadi (tanpa proses new), tapi sebuah metode statis mempunyai keterbatasan yaitu hanya dapat mengakses atribut atau metode lain di dalam kelas yang membungkusnya yang juga bersifat statis. Metode statis biasanya diimplementasikan untuk metode main.
Inheritance
Inheritanceatau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:
class Titik
private integer x
private integer y
Titik()
x < 0
y < 0
{end Titik}
public getX() -> integer
-> x
{end getX}
public getY() -> integer
-> y
{end getY}
{end class}
class Titik3D: Titik
private integer z
Titik3D()
z <- 0
{end Titik3D}
public getZ() -> integer
-> z
{end getZ}
{end class}
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:
Titik3D p <- new Titik3D()
integer x <- p.getX()
integer y <- p.getY()
integer z <- p.getZ()
Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.
Abstract
Pada bahasa pemrograman Java juga ada sebuah kata kunci abstractyang dapat digunakan pada sebuah metode, namun jika digunakan pada sebuah metode, maka metode tersebut harus berada di dalam sebuah kelas yang juga menggunakan kata kunci abstract. Metode abstracttidak boleh memiliki badan program, badan program metode ini dapat diimplementasikan pada kelas turunannya.
Fungsi dari kelas atau metode abstractpada bahasa pemrograman Java adalah menyediakan sebuah abstraksi kelas atau metode sehingga dapat dilihat metode apa saja yang ada di dalam kelas tanpa harus melihat isi badan program dari metode-metode itu. Prinsipnya sama dengan fungsi sebuah daftar isi pada sebuah buku, dengan melihat daftar isi bisa diketahui isi sebuah buku tanpa harus membaca semua isi buku terlebih dahulu
Package
Packageadalah sebuah kontainer atau kemasan yang dapat digunakan untuk mengelompokkan kelas- kelas sehingga memungkinkan beberapa kelas yang bernama sama disimpan dalam packageyang berbeda. Sebuah packagepada Java dapat digunakan oleh packageyang lain ataupun kelas-kelas di luar Package. Jika dalam bahasa pemrograman Java terdapat kode import example.animal.Mamalia; maka program tersebut memakai kelas mamalia yang ada pada packageexample.animal. Jika terdapat kode import example.animal.*; maka program tersebut memakai semua kelas yang ada pada packageexample.animal.
Packagepada bahasa pemrograman Java dinyatakan dengan kode: package nama_package;
Misalnya: package example.animal;
yang ditulis pada bagian atas kode program kelas anggota package. Misal sebuah kelas dengan nama Mamalia ada di dalam packagedengan nama example.animal maka file yang menyimpan kode program kelas Mamalia dimasukkan dalam direktori.
Interface
Interfaceatau antar muka pada bahasa pemrograman Java sangat mirip dengan kelas, tapi tanpa atribut kelas dan memiliki metode yang dideklarasikan tanpa isi. Deklarasi metode pada sebuah interfacedapat diimplementasikan oleh kelas lain. Sebuah kelas dapat mengimplementasikan lebih dari satu interfacebahwa kelas ini akan mendeklarasikan metode pada interfaceyang dibutuhkan kelas itu sekaligus mendefiniskan isinya pada kode program kelas itu. Metode pada interfaceyang diimplementasikan pada suatu kelas harus sama persis dengan yang ada pada interface. Misalnya pada interfaceterdapat deklarasi void printAnimal(); maka pada kelas yang mengimplementasikan metode itu harus ditulis sama yaitu:
void printAnimal(){ .....................
}
Sebuah interfacedideklarasikan dengan kode:
interface nama_antarmuka{ metode_1 metode_2
..................... metode_n }
misalnya:
interface Animal{ void printAnimal();
}
Adapun deklarasi kelas yang mengimplementasikan interface sebagai berikut:
class nama_kelas implements interface_1,
interface_2, ..., interface_n{ metode_1 metode_2
...................................... metode_n }
misalnya:
class Mamalia implements Animal{ Mamalia (){ }
void prontAnimal(){ system.out.println("printAnimal dalam kelas
Mamalia"); } }
Rangkuman
Java adalah sebuah teknologi yang diperkenalkan oleh Sun Microsystems pada pertengahan tahun 1990. Menurut definisi dari Sun, Java adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat luinak pada komputer standaloneataupun pada lingkungan jaringan. Teknologi Java memiliki tiga komponen penting, yaitu: Programming-language specification, Application- programming interface, Application-programming interface.
Java2 adalah generasi kedua dari Java platform(generasi awalnya adalah Java Development Kit). Java berdiri di atas sebuah mesin interpreter yang diberi nama JVM. JVM inilah yang akan membaca bytecodedalam file .classdari suatu program sebagai representasi langsung program yang berisi bahasa mesin. Oleh karena itu, bahasa Java disebut sebagai bahasa pemrograman yang portablekarena dapat dijalankan pada berbagai sistem operasi, asalkan pada sistem operasi tersebut terdapat JVM.