Senin, 12 Maret 2012

Cara Instalasi Java

Pendahuluan
"Bagaimana saya memulai programming Java ?"

Pertanyaan di atas seringkali diajukan pada saat kita ingin belajar programming dengan bahasa Java,
  • Apa yang harus diinstal terlebih dahulu ?
  • Bagaimana saya menulis code dan kompilasi ? Bagaimana saya menjalankan program tersebut ?
  • dan seterusnya...
Oleh karena itu saya tertarik untuk menulis 2 rangkaian artikel dengan topik "Memulai Programming Java" ini, terdiri dari :
1. Instalasi Java
2. Menulis aplikasi sederhana, "Hello World" !

Instalasi Java

Sebelum saya memulai dengan langkah-langkah instalasi Java, perlu diluruskan dulu bahwa Java sebenarnya terdiri dari atas 2 pengertian, yaitu :
  1. Teknologi Java sebagai suatu platform yang biasa disebut sebagai Java Runtime Environment (JRE). Platform ini diperlukan sebagai lapisan atau layer untuk menjalankan program Java yang telah dikompilasi (bytecode).

    Untuk melakukan kompilasi kita memerlukan tools tambahan yang ditambahkan ke dalam JRE dan dikenal sebagai Java Development Kit (JDK). Jadi di dalam JDK sendiri secara otomatis sudah terdapat platform JRE.
  2. Bahasa programming Java.

    Bahasa inilah yang mungkin dirujuk sebagai "Java" secara umum. Java merupakan bahasa Object Oriented Programming yang bisa diklaim telah diimplementasikan secara penuh . OOP di Java merupakan pengembangan lebih lanjut dari dari bahasa C++.


JRE dan JDK merupakan suatu aplikasi/program yang perlu diinstalasi terlebih dahulu. Paket untuk JRE dan JDK tersedia untuk berbagai sistem operasi populer seperti Microsoft Windows, Macintosh, Unix, Linux, dan Solaris.

Karena ketersediaan JRE/JDK yang multi-platform dan karena aplikasi Java berjalan di atas JRE ini, maka seringkali teknologi Java dikenal dengan motto "Write Once Run Everywhere" (Ditulis sekali saja untuk satu platform tetapi dapat dijalankan di berbagai platform sistem operasi).

Jadi setelah konsep-konsep Java kita "luruskan" dengan keterangan di atas, sekarang kita melangkah ke instalasi JDK.

Instalasi Java Development Kit (JDK)
  1. Download
    • Masuk ke situs http://java.sun.com/javase/downloads/index.jsp
    • Pilih paket JDK terbaru (pada saat penulisan JDK sudah memasuki versi 6 update 5 seperti terlihat pada gambar di bawah ini). Klik tombol Download.


    • Pilih paket sesuai sistem operasi yang kita gunakan. Untuk contoh, saya pilih Microsoft Windows.
    • Klik "Accept" dan pilih link "Windows Offline Installation, Multi Language"


    • Sering sekali kita masih diminta registrasi account di Sun untuk melanjutkan download. Apabila kita sudah memiliki account Sun kita tinggal login saja, tetapi apabila belum maka lakukan registrasi terlebih dulu.

    • Download paket JDK.
  2. Jalankan program yang telah kita download tersebut.
    • Jalankan setup program jdk-6u5-windows-i586-p.exe atau sesuai yang Anda download.
    • Muncul dialog awal instalasi JDK

    • Tekan Accept untuk menerima persetujuan lisensi dari Sun.


    • Pilih semua fitur yang kita inginkan pada langkah "Custom Setup" dan tekan next untuk melanjutkan. Perhatikan bahwa folder instalasi adalah di C:\Program Files\Java\jdk1.6.0_05


    • Akan keluar progress dialog untuk instalasi JDK. Tunggu hingga selesai.


    • Setelah selesai melakukan instalasi JDK akan dilanjutkan dengan instalasi JRE seperti terlihat pada gambar di bawah. Lanjutkan dengan mengklik tombol Next.


    • Akan keluar progress dialog untuk instalasi JRE.

    • Setelah selesai, klik tombol Finish.


  3. Set environment variable, %PATH%.
    • Klik "Start" pada sistem Windows Anda
    • Klik kanan icon "My Computer", pilih "Properties"


    • Pada dialog "System Properties", klik tab "Advanced" kemudian dilanjutkan dengan klik tombol "Environment Variables"

    • Cari variable "Path" pada bagian System variables dan klik edit.

    • Tambahkan satu nilai pada Variable Value yaitu folder binary instalasi JDK. Untuk contoh pada blog ini maka path kita adalah C:\Program Files\Java\jdk1.6.0_05\bin. Perhatikan pada gambar bahwa antar satu path/folder yang satu dengan path yang lain kita pisahkan dengan tanda titik koma.


    • Klik tombol OK
    • Selesai
  4. Test hasil instalasi kita di Windows.
    • Masuk ke command prompt (Start => Command Prompt atau Start=>Run=>cmd )
    • Ketik "java -version" dan apabila berhasil akan menghasilkan output sebagai berikut :

    • Ketik "javac -version" dan apabila berhasil akan menghasilkan output sebagai berikut:

    • Selesai

Pengertian Generic

Generic diperkenalkan pada Java versi 5. Apa sebenarnya generic itu ? Kenapa sampai diperlukan generic ? Berikut saya akan coba uraikan latar belakang dan cara penggunaan generic ini.

Latar Belakang

Generic dikenal juga sebagai tipe data berparameter (parameterized types), yaitu tipe data yang biasanya didefinisikan di bagian argumen/parameter dan bersifat generik atau dikenali pada saat runtime.

Jika kita memiliki data untype (bertipe Object), maka biasanya kita melakukan casting untuk mengambil nilainya. Kesalahan konversi tipe data ini pada saat runtime sangat mungkin dan sering sekali terjadi. Untuk menghindarinya inilah kita perlu menempatkan tipe data generic ini.

Mari kita buat satu contoh konkret....
ArrayList adalah sebuah class yang sangat berguna dan merupakan bagian dari tipe data Collection. ArrayList bisa menampung data dalam bentuk list dengan Object sebagai nilainya.

Dengan demikian, input atau masukan nilai ke objek bertipe ArrayList ini sangatlah flexible karena seperti yang kita tahu, semua class di Java pasti diturunkan dari class Object.

Pada contoh class BeforeGeneric1 di bawah ini, objek arrList bertipe ArrayList dan dapat menerima 3 input. Kita beri nilai masing-masing 10, new Integer(100), dan "Hello World".

Ketiganya adalah tipe data yang berbeda satu sama lain tetapi valid.



  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. public class BeforeGeneric1 {  
  5. public static void main(String[] args) {  
  6.     List arrList = new ArrayList();  
  7.   
  8.     arrList.add(10);  
  9.     arrList.add(new Integer(100));  
  10.     arrList.add("Hello World !");  
  11. }  
  12. }  



Untuk mengambil kembali nilai yang disimpan oleh arrList ini maka kita harus "hafal" urutan input dengan meta / tipe datanya masing-masing. Kita modifikasi kode di atas sehingga menjadi seperti berikut ini.

Contoh:


  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. public class BeforeGeneric1 {  
  5.  public static void main(String[] args) {  
  6.   List arrList = new ArrayList();  
  7.   
  8.   arrList.add(10);  
  9.   arrList.add(new Integer(100));  
  10.   arrList.add("Hello World !");  
  11.   
  12.   
  13.   int a = ((Integer) arrList.get(0)).intValue(); //casting ke int  
  14.   Integer b = (Integer) arrList.get(1); //casting kembali ke objek bertipe Integer  
  15.   String c = (String) arrList.get(2); //casting kembali ke objek bertipe String  
  16.   
  17.   System.out.println(a);  
  18.   System.out.println(b);  
  19.   System.out.println(c);  
  20.  }  
  21. }  



Output:

10
100
Hello World !


Perhatikan bahwa untuk setiap akses nilai dari arrList ini, kita perlu melakukan konversi (casting) untuk tiap variabel dengan benar sesuai tipe data asalnya sehingga tidak terjadi error.

Jika kita melakukan kesalahan casting maka pada saat kompilasi akan diberikan pesan error seperti pada contoh di bawah ini.

Contoh:


  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. public class BeforeGeneric1 {  
  5.  public static void main(String[] args) {  
  6.   List arrList = new ArrayList();  
  7.   
  8.   arrList.add(10);  
  9.   arrList.add(new Integer(100));  
  10.   arrList.add("Hello World !");  
  11.   
  12.   
  13.   int a = ((Integer) arrList.get(0)).intValue(); //casting ke int  
  14.   Integer b = (Integer) arrList.get(1); //casting kembali ke objek bertipe Integer  
  15.   String c = (Integer) arrList.get(2); //casting kembali ke objek bertipe String  
  16.   
  17.   System.out.println(a);  
  18.   System.out.println(b);  
  19.   System.out.println(c);  
  20.  }  
  21. }  



Error Output:
BeforeGeneric1.java:15: incompatible types
found   : java.lang.Integer
required: java.lang.String
String c = (Integer) arrList.get(2); //casting kembali 
ke objek bertipe String
                           ^
Note: BeforeGeneric1.java uses unchecked.
Note: Recompile with -Xlint:unchecked for details.
1 error

Tidak Ada Kesalahan Pada Saat Kompilasi

Pada prakteknya biasanya ArrayList ini digunakan untuk menyimpan list dengan tipe data yang sama dan diakses dengan melakukan iterasi (perulangan .loop).

Masalah kemudian timbul apabila pada saat kita mengambil nilai dari list tersebut dan terjadi kesalahan casting.

Lihat contoh berikut di bawah ini. Pada saat kompilasi kode ini tidak akan terjadi error karena compiler belum "mengenali" kesalahan tersebut. Error hanya akan terlihat setelah hasil kompilasi tersebut dijalankan atau pada saat runtime.

Contoh:


  1. import java.util.ArrayList;  
  2. import java.util.Iterator;  
  3. import java.util.List;  
  4.   
  5. public class BeforeGeneric2 {  
  6.  public static void main(String[] args) {  
  7.   List arrList = new ArrayList();  
  8.   for (int i = 0; i < 10; i++) {  
  9.    arrList.add("Hello World");  
  10.   }  
  11.   
  12.   Iterator i = arrList.iterator();  
  13.   
  14.   System.out.println("Deretan Angka Genap");  
  15.   System.out.println("===================");  
  16.   while (i.hasNext()) {  
  17.    int a;  
  18.    a = (Integer) i.next() * 2;  
  19.    System.out.print("Hasil = " + a + "\n");  
  20.   }  
  21.  }  
  22. }  

Error Output:
Deretan Angka Genap
===================
Exception in thread "main" java.lang.ClassCastException: 
java.lang.String 
at BeforeGeneric2.main(BeforeGeneric2.java:19)


Generic Sebagai Penyelamat

Untuk mengatasi hal tersebut di atas, maka digunakanlah suatu "parameter tipe" pada saat deklarasi objek yang disebut dengan generic.

Syntaxnya kira-kira sebagai berikut :

Class<tipe> objek = new Class<tipe>();

Untuk kasus di atas kita menetapkan bahwa tipe yang akan kita gunakan adalah Integer. Maka code di atas kita ubah menjadi :


  1. import java.util.ArrayList;  
  2. import java.util.Iterator;  
  3. import java.util.List;  
  4.   
  5. public class AfterGeneric {  
  6.  public static void main(String[] args) {  
  7.   List<integer> arrList = new ArrayList<integer>();  
  8.   for (int i = 0; i < 10; i++) {  
  9.    arrList.add(i);  
  10.   }  
  11.   
  12.   Iterator<integer> i = arrList.iterator();  
  13.   
  14.   System.out.println("Deretan Angka Genap");  
  15.   System.out.println("===================");  
  16.   while (i.hasNext()) {  
  17.    int a;  
  18.    a = i.next() * 2;  
  19.    System.out.print("Hasil = " + a + "\n");  
  20.   }  
  21.  }  
  22. }</integer></integer></integer>  

Output:
Deretan Angka Genap
===================
Hasil = 0
Hasil = 2
Hasil = 4
Hasil = 6
Hasil = 8
Hasil = 10
Hasil = 12
Hasil = 14
Hasil = 16
Hasil = 18


Dari kode di atas dapat dilihat bahwa kita "menetapkan" bahwa tipe data yang diterima oleh ArrList harus berupa Integer atau int, sedangkan tipe lain akan mengalami error pada saat kompilasi.

Ini kelihatan seperti array, lalu apa kelebihannya Generic ?

Salah satu permasalahan dengan menggunakan array adalah kita harus menetapkan jumlah elemen di array pada saat deklarasi, contohnya :


  Integer[] a = new Integer[5];


Sedangkan pada penggunaan generic, kita cukup mendeklarasikan :

  List<Integer> arrList = new ArrayList<Integer>();


dan kita bisa mengalokasikan jumlah elemen secara dinamis karena ArrayList merupakan collection di dalam Java.

Eclipse Hello Word


Membuat Project



Project adalah tempat dimana Anda menempatkan dan mengorganisasikan semua file Java dan file lain yang berkaitan.
 
Mulailah  membuat project Java dengan memilih dari menu toolbar File -> New -> Java Project.

Pada saat muncul dialog New Java Project, namakan project tersebut dengan "Pintar Java" dan klik tombol Finish.
 
Anda sudah membuat project pertama Anda dan siap memasukkan class-class Java ataupun resource lain di dalam project ini.



Hello World Class

Perhatikan pada jendela Package Explorer sudah terdapat project "Pintar Java".


Folder src adalah tempat kita meletakkan source code Java kita. Sedangkan JRE System Library [jre1.5.0_15] adalah keterangan bahwa project ini menggunakan pustaka Java versi 5.
  • Dari menu toolbar pilih File > New > Class.
  • Pada dialog New Java Class yang muncul, masukkan HelloWorld pada kotak teks Name | klik Finish.
  • Ketik source code untuk HelloWorld ini seperti pada artikel blog sebelumnya.
  • Jika semua benar maka jendela editor Eclipse akan tampak seperti pada gambar di bawah.

(Klik Pada Gambar untuk Memperbesar)
Perhatikan bahwa semua code highlight dan pengaturan indentasinya sangat rapi.
Pada bagian tab editor terdapat info nama file class kita yaitu HelloWorld.java. Editor ini juga telah dilengkapi intellisense sehingga jika terdapat kesalahan eja dapat diperbaiki dengan cepat dan juga fasilitas auto complete yang bisa diaktifkan dengan menekan CTRL+SPASI.

Menjalankan Aplikasi

 
Karena class HelloWorld ini memiliki method entry point, yakni method main maka class ini bisa dijalankan langsung.
  • Cari icon (run) dan klik pada tanda panah kecil di samping kanan
  • Klik pilihan Run As > 1 Java Application Alt+Shift+X, J
(Pilihan Run As -> Java Application)
  • Hasil eksekusi dapat dilihat di panel Console
(Hasil eksekusi dapat dilihat di jendela Console)

Penutup

 
Workbench Eclipse sudah menyediakan menu, toolbar, editor dan jendela yang intuitif sehingga kita dapat dengan mudah menyelesaikan satu project dan mengeksekusi satu program Java kecil.

Langkah-langkah untuk melakukan hal itu adalah :
  1. Membuat project dari menu File -> New -> Java Project.
  2. Membuat class dan mengetik source code pada editor yang sudah memiliki fasilitas auto complete dan intellisense.
  3. Melakukan eksekusi class dari menu run.
  4. Melihat hasil dari eksekusi pada jendela console jika terdapat output.

Override Method

Jika kita meng-extend suatu class, kadang kala kita perlu melakukan override method. Daftar method apa yang perlu di-override selain dari dokumentasi, tentunya perlu dibantu dari IDE yang baik... dan Eclipse memenuhi tuntutan tersebut.


Dalam Eclipse, kita bisa melihat daftar method yang bisa kita override dari class yang kita extend dengan langkah berikut :

  • Klik kanan pada ruang editor kita dan pilih menu "Source" | "Override/Implement Methods..."


  • Dari dialog daftar method, pilih method yang ingin kita override.


  • Method tersebut akan muncul pada editor kita, silahkan melakukan perubahan code.


  • Selesai.