Pengantar Java

Pendahuluan

Pada catatan ini kita akan mempelajari latar belakang Java mulai dari sejarahnya, teknologi Java, dan keistimewaan dari teknologi Java sepeti Java Virtual Machine (JVM), garbage collection dan keamanan kode. Selain itu juga akan dibahas tahap dari pemrograman Java.

Sejarah Java

Java dibuat pada tahun 1991 oleh James Gosling (Sun Microsystems), pada awalnya dinamakan Oak, tetapi karena sudah ada bahasa yang memakai nama Oak kemudian diganti menjadi Java.

Awal mulanya Java dibuat untuk kebutuhan sebagai bahasa yang platform independent yang dapat di embedded dalam bermacam-macam consumer electronic products seperti pemanggang roti dan refrigerator (kulkas). Salah satu proyek pertama yang dikembangkan menggunakan Java adalah personal hand-held remote control yang dinamakan Star 7. Pada saat yang sama, World Wide Web (WWW) dan Internet sedang mengalami masa kepopuleran. Gosling menyadari bahwa Java dapat digunakan untuk pemrograman Internet.

Teknologi Java

Apa itu teknologi Java? Teknologi Java adalah bahasa pemrograman, development environment, application environment dan deployment environment.

Sebagai bahasa pemrograman, dengan bahasa Java kita dapat membuat berbagai macam aplikasi seperti yang dapat kita buat dengan menggunakan bahasa konvensional apapun.

Sebagai development environment, teknologi Java menyediakan sederetan besar tools seperti compiler (javac), interpreter (java), documentation generator (javadoc), tool untuk pemaketan file class, dan seterusnya.

Aplikasi teknologi Java merupakan program untuk kegunaan umum (general-purpose) yang dapat berjalan pada mesin (komputer) apapun dimana dengan Java Runtime Environment terpasang.

Ada dua deployment environment utama:

  • JRE yang disediakan Java 2 Software Development Kit (SDK) berisi kumpulan lengkap file-file class untuk semua paket teknologi Java, dimana di dalamnya termasuk class-class dasar bahasa, class-class komponen GUI, dan seterusnya.

  • Deployment environment utama yang lainnya adalah web browser. Kebanyakan browser komersial menyediakan interpreter dan runtime environment teknologi Java.

Fitur-fitur Java

Beberapa fitur Java adalah Java Virtual Machine, Garbage Collection, keamanan kode. Java Virtual Machine merupakan mesin imajiner (imaginary machine) yang diimplementasikan oleh software emulasi diatas mesin nyata. Selain itu JVM juga menyediakan spesifikasi platform hardware untuk yang mana kita melakukan compile semua kode teknologi Java. Hasil compile dari program Java akan menghasilkan bytcode yang merupakan bahasa mesin khusus yang dapat dimengerti oleh Java Virtual Machine. Bytcode yang dihasilkan ini bersifat independen, jadi setiap komputer yang terpasang Java interpreter dapat mengeksekusi program Java yang sudah di-compile, tidak peduli apa tipe komputer yang digunakan untuk meng-compile program tersebut.

Garbage collection thread bertanggung jawab untuk membebaskan memori apa saja yang dapat dibebaskan. Proses ini terjadi secara otomatis selama lifetime dari program Java. Programmer tidak lagi disusahkan dengan tugas untuk mendealokasikan memori yang sudah dipakai program tersebut.

Kode keamanan dicapai melalui implementasi dari JRE-nya. JRE menjalankan kode yang sudah dicompile untuk JVM dan melakukan class loading (melalui class loader), verifikasi kode (melalui bytecode verifier) dan akhirnya eksekusi kode. Class loader bertanggung jawab untuk me-load semua class-class untuk program Java. Selain itu juga menambahkan keamanan dengan memisahkan namespace untuk class-class dari sistem file lokal dengan yang di-import dari network sources. Setelah me-load semua class-class, susunan memori dari executable ditentukan. Ini menambahkan perlindungan terhadap akses yang tidak sah ke area terbatas dari kode sejak memori ditentukan pada waktu runtime. Bytecode verifier bertugas untuk menguji format dari fragment kode dan memeriksa kodel ilegal dari fragment kode yang dapat melanggar hak akses ke objek.

Tahap Pemrograman Java

Dalam pemrograman terdapat tiga tahap, yaitu write, compile, dan run. Pada tabel di bawah merupakan penjelasan lebih lanjut mengenai tools yang digunakan dan hasil output dari proses tersebut.

Tugas Tools yang digunakan Output
Menulis program Menggunakan teks editor apapun File dengan ekstensi .java
Meng-compile program Java compiler (javac) File dengan ekstensi .class (Java bytecode)
Menjalankan program Java interpreter (java) Output program

An overview of the software development process

An overview of the software development process

Referensi

  1. “Introduction to Java”, http://www.javapassion.com/javase/javaintro.pdf

Download

  1. ghaNOZ 2480 – Pengantar Java, http://ghanoz2480.files.wordpress.com/2008/12/ghanoz-2480-pengantar-java.pdf
  2. ghaNOZ 2480 – Pengantar Java, http://www.ziddu.com/download/2900132/ghaNOZ2480-PengantarJava.pdf.html

Revision History
ghaNOZ 2480

Fitur yang ada pada Bahasa Java

Oleh: M. Ghazali a.k.a ghaNOZ 2480

 

1. Sederhana dan Ampuh

 Banyak sistem pemrograman memiliki puluhan cara untuk mengerjakan satu hal. Jika suatu bahasa cukup terbuka sehingga orang dapat melihat lebih mendalam, kita bebas dan dapat melakukan apa saja dengan cara kita. Mungkin cara ini menawarkan kinerja yang sangat memuaskan bagi programmer yang ahli dan teliti, tetapi kebebasan tersebut harus dibayar mahal dengan kerumitan dan cukup sulit untuk dimengerti. Dengan Java, hanya ada sedikit cara untuk menyelesaikan suatu pekerjaan. Java memberi Anda kemampuan untuk menuangkan ide Anda dalam cara berorientasi objek yang mudah dan jelas, tanpa harus melihat proses bagian dalam sistem yang sering kali berbahaya. 

Java dirancang agar mudah dipelajari dan digunakan secara efektif. Java tidak menyediakan fitur-fitur rumit bahasa pemrograman level tinggi, serta banyak pekerjaan pemrograman yang mulanya harus dilakukan manual, sekarang dapat dikerjakan oleh Java secara otomatis. Java tidak mendukung fitur-fitur rumit berikut ini :

·         Explicit pointer manipulation

·         Implicit type casting

·         Structure atau Unions

·         Operator Overloading

·         Templates

·         Header Files

·         Multiple Inheritance 

2. Bahasa Berorientasi Objek

 Meskipun Java dipengaruhi bahasa-bahasa terdahulu, namun Bahasa Java bukan turunan langsung dari bahasa manapun, dan juga tidak dirancang untuk kompatibel secara kode sumber dengan bahasa-bahasa sebelumnya. Bahasa Java sepenuhnya baru. Kebijakan ini memberi kebebasan perancang Java. Kebebasan ini menghasilkan rancangan Bahasa Java yang bersih, berguna, serta sekaligus menerapkan pendekatan pragmatic terhadap objek. 

Java merupakan penyeimbangan antara mazhab berorientasi objek “murni” yang memandang “semua harus objek / semua adalah objek” dan mazhab pragmatis yang menerapkan pragmatis “stay out my way” (model hacker “jangan iktut campur”). Model objek Java adalah sederahana dan mudah dikembangkan, namun sejalan dengan itu, bilangan dan tipe data sederahana lain dianggap sebagai non-objek berkinerja tinggi. 

OOP adalah cara ampuh dalam pengembangan dan pengorganisasian perangkat lunak. Pada OOP, program computer sebagai sekelompok objek yang berinteraksi. Deskripsi ringkas OOP adalah mengorganisasikan program sebagai kumpulan komponen, disebut objek. Objek- Objek ini ada secara independent, mempunyai aturan-aturan berkomunikasi dengan objek lain dan untuk memerintahkan objek lain guna meminta informasi tertentu atau meminta objek lain mengerjakan sesuatu. 

Kebanyakan sistem berorientasi-objek lain memilih hirarki objek yang kaku dan susah diatur, atau memilih menggunakan model objek dinamik yang tidak memiliki kinerja tinggi dan kelengkapan. Java sekali lagi memiliki keseimbangan, menyediakan, menyediakan mekanisme peng-class-an sederhana, dengan model antarmuka dinamik yang intuitif hanya jika diperlukan. Java tidak mengijinkan pewarisan jamak namun menyelesaikan kebutuhan pewarisan jamak dengan fasilitas yang lebih elegan. 

3. Bahasa Statically Typed

 Seluruh objek dalam program harus dideklarasikan lebih dahulu sebelum digunakan. Ini memungkinkan kompilator Java menentukan dan melaporkan terjadinya pertentangan (ketidakkompatibelan) tipe yang merupakan barikade awal untuk mencegah kesalahan yang tidak perlu (seperti mengurangkan variable bertipe integer dengan variable bertipe string). 

Kebaikan lain dari fitur ini adalah kode program dapat dioptimasi untuk menghasilkan program berkinerja tinggi. 

4. Bahasa Dikompilasi

 Sebelum menjalankan program di bahasa Java, program dikompilasi menggunakan Java compiler. Kompilasi akan menghasilkan file bytecode yang serupa fungsinya dengan file kode mesin dan dapat dieksekusi disembarang Java Interpreter. Java Interpreter membaca file “bytecode” dan menerjemahkan perintah “bytecode” menjadi perintah-perintah bahasa mesin yang dapat dieksekusi. 

5. Bahasa yang Aman

 Salah satu prinsip kunci perancangan Java adalah keselamatan dan keamanan. Bahasa Java (implementasinya) telah memperoleh pengalaman aspek keamanan dari Java Applet. Cara kerja applet adalah sebagai berikut :

Saat web browser mengetahui adanya Java Applet dihalaman web yang sedang diinterpretasi (atau web rendering), maka browser akan melakukan download applet dan keseluruhan halaman web. Applet itu kemudian dijalankan dikomputer dimana browser berada. Hal ini tentu dapat menjadi sangat berbahaya, banyak aksi buruk yang dapat dilakukan applet terhadap computer yang mengeksekusinya. Untuk itu Java telah memberi pengamanan terhadap applet dengan model pengamanan berlapis.   

Java menggunakan model pengamanan tiga lapis (three-layer security model) untuk melindungi system dari untrusted Java code.

1.      Bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan-aturan dasar bahasa Java.

2.      Class loader menangani pemuatan kelas Java ke runtime interpreter.  

3.      Manajer keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port, jaringan, proses eksternal dan sistem windowing. 

Java juga menyediakan beragam teknik pengamanan, yaitu:

1.      Java tidak mengenal pointer. Peniadaan pointer merupakan langkah besar pengamanan. Bagi pemrogram handal, operasi pointer merupakan anugrah besar untuk optimasi program dan pembuatan program yang efisien serta mengagumkan. Namun juga dapat menjadi petaka yang besar, pointer merupakan sarana luar biasa untuk pengaksesan tak diotorisasi. Dengan peniadaan operasi pointer, Java dapat menjadi bahasa yang lebih aman.

2.      Program Java dikompilasi menjadi serangkaian bytecode. Sebelum Java dijalankan, terdapat Java verifier yang memeriksa bytecode untuk menjamin ketiadaan kode yang mencurigakan.

3.      Java mempunyai beberapa pengaman terhadap applet. Untuk mencegah program bertindak mengganggu disk pemakai applet tidak diperbolehkan melakuukan open, read, atau write terhadap file di sistem pemakai secara sembarangan. Karena Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai Java logo dan teks indentifikasi terhadap jendela yang dibuka. Hal ini mencegah jendela pop-up menipu sebagai yang lain seperti untuk meminta nama pemakai dan password. Java telah menerapkan keamanan yang ketat namun fleksibel. Keamanan berdasar suatu file kebijakan sehingga dapat diatur dan dikendalikan untuk memperoleh kemampuan maksimal bagi program mandiri dan applet yang dipercaya (trusted code). 

6. Bahasa Independen terhadap Platform

 Platform independence adalah kemampuan program bekerja di sistem operasi atau sistem komputer berbeda. Bahasa Java merupakan bahasa yang secara sempurna tidak bergantung pada platform. 

Tipe variabel Java mempunyai ukuran yang sama di semua platform sehingga variabel bertipe integer (int, long) berukuran sama tidak peduli dimana program Java dikompilasi. Juga terhadap penggunaan Java applet di web adalah sama sekali tidak memerlukan perubahan sedikit pun terhadap file .class yang dihasilkan agar dapat dieksekusi di platform manapun. Begitu telah tercipta file  .class dengan menggunakan kompilator Java di platform manapun, maka file .class tersebut juga dapat dijalankan di platform manapun. Jadi dimanapun dibikin, dimanapun dapat dijalankan.  

7. Bahasa Multithreading

 Thread adalah untuk menyatakan program komputer melakukan lebih dari satu tugas di satu waktu yang sama. Java menyediakan kakas untuk menulis program multithread, program mempunyai lebih dari satu thread eksekusi pada saat yang sama sehingga memungkinkan program menangani beberapa tugas secara konkruen. Semua aplikasi pasti sedikitnya mempunyai satu thread yang merepresentasikan jalur utama eskekusi. 

8. Bahasa yang Didukung Garbage Collector

 Program Java melakukan garbage collection yang berarti pemrogram tidak perlu menghapus sendiri objek-objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolan memori oleh pemrogram dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat di bahasa yang memungkinkan kesalahan alokasi dinamis. 

9. Bahasa yang Tegar

 Java interpreter memeriksa semua akses sistem yang dilakukan. Program Java tidak dapat menyebabkan crash terhadap sistem. 

Java mempunyai mekanisme execption-handling yang ampuh. Exception handling menyediakan cara untuk memisahkan antara bagian penanganan kesalahan dengan bagian kode normal sehingga menuntun ke struktur kode program yang lebih bersih dan menjadikan aplikasi menjadi lebih tegar. Ketika kesalahan yang serius ditemukan, program Java menciptakan execption. Exception dapat ditangkap dan dikelola program tanpa resiko membuat sistem menjadi down.  

10. Bahasa yang Mampu Diperluas

 Program Java mendukung native method, yaitu fungsi ditulis di bahasa lain, biasanya C/C++. Dukungan native method memungkinkan pemrogram menulis fungsi yang dapat dieksekusi lebih cepat dibanding fungsi ekivalen di Java. Native method secara dinamis akan di-link ke program Java, yaitu diasosiasikan dengan program saat jalan. 

Bahasa mempunyai banyak fitur modern yang ampuh untuk pengelolaan sistem kompleks.  Namun perlu diingat bahwa bahasa Java tetap hanya bahasa pemrograman sekedar kakas. Seluruh kakas pengembangan tetap memerlukan pengembang (pemrogram) yang mampu menggunakannya.  

REFERENSI

Hariyanto, Bambang “Esensi-esensi Bahasa Pemrograman Java”, Cetakan kedua Penerbit INFORMATIKA, Bandung:2005.