Selasa, 24 Juli 2012


Sebelum melangkah pada fitur-fitur menarik yang ada pada Java, alangkah baiknya kita mempelajari tentang perbedaan konsep-konsep berorientasi object dalam Java.
Konsep Berorientasi object
  1. Desain Berorientasi object
Desain berorientasi object adalah sebuah teknik yang memfokuskan desain pada object dan class berdasarkan pada skenario dunia nyata. Hal ini menegaskan keadaan(state), behaviour dan interaksi dari object. Selain itu juga menyediakan manfaat akan kebebasan pengembangan, meningkatkan kualitas, mempermudah pemeliharaan, mempertinggi kemampuan dalam modifikasi dan meningkatkan penggunaan kembali software.

  1. Class
Class mengizinkan Anda dalam mendeklarasikan tipe data baru. Ia dijalankan sebagai blueprint, dimana model dari object yang Anda buat berdasarkan pada tipe data baru ini.

  1. Object
Sebuah object adalah sebuah entiti yang memiliki keadaan, behaviour dan identitas yang yang tugasnya dirumuskan dalam suatu lingkup masalah dengan baik. Inilah instance sebenarnya dari sebuah class. Ini juga dikenal sebagai instance. Instance dibuat sewaktu Anda meng-instantiate class menggunakan kata kunci new. Dalam sistem registrasi siswa, contoh dari sebuah object yaitu entiti Student.

  1. Atribut
Atribut menunjuk pada elemen data dari sebuah object. Atribut menyimpan informasi tentang object. Dikenal juga sebagai member data, variabel instance, properti atau sebuah field data. Kembali lagi ke contoh sistem registrasi siswa, atribut dari sebuah siswa adalah nomor siswa.

  1. Method
Sebuah method menjelaskan behaviour dari sebuah object. Method juga dikenal sebagai fungsi atau prosedur. Sebagai contoh, method yang mungkin tersedia untuk entiti siswa adalah method register.
  1. Konstruktor
Konstruktor adalah sebuah tipe khusus dari method yang digunakan untuk membuat dan menginisialisasi sebuah object baru. Ingat bahwa konstruktor bukan member(yaitu atribut, method atau inner class dari sebuah object).

  1. Package
Package menunjuk pada pengelompokkan class dan / atau subpackages. Strukturnya dapat disamakan dengan direktorinya.

  1. Enkapsulasi
Enkapsulasi menunjuk pada prinsip dari menyembunyikan desain atau mengimplementasikan informasi yang tidak sesuai pada object yang ada.

  1. Abstraksi
Sementara enkapsulasi menyembunyikan detail, abstraksi mengabaikan aspek dari subyek yang tidak sesuai dengan tujuan yang ada supaya lebih banyak mengkonsentrasikan yang ada.

  1. Pewarisan
Pewarisan adalah hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain. Pewarisan menunjuk pada properti dan behaviour yang diterima dari nenek moyang dari class. Ini dikenal juga sebagai hubungan “is-a”. Perhatikan pada hirarki berikut.
SuperHero
 


FlyngSuperHero                           UnderwaterSuperHero

Gambar 1.1: Contoh Pewarisan
SuperHero adalah superclass dari class FlyingSuperHero dan UnderwaterSuperHero. Catatan bahwa FlyingSuperHero “is-a” SuperHero. Sebagaimana juga UnderwaterSuperHero “is-a” SuperHero.

  1. Polimorfisme
Polimorfisme adalah kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. Menunjuk pada contoh sebelumnya pada pewarisan, kita lihat bahwa object SuperHero dapat juga menjadi object FlyingSuperHero atau object UnderwaterSuperHero.

  1. Interface
Sebuah interface adalah sebuah contract dalam bentuk kumpulan method dan deklarasi konstanta. Ketika sebuah class implements sebuah interface, ini mengimplementasikan semua method yang dideklarasikan dalam interface.

Struktur program Java :
v  Mendeklarasikan class Java

<classDeclaration> ::=
<modifier> class <name> {
<attributeDeclaration>*
<constructorDeclaration>*
<methodDeclaration>*
}
dimana <modifier> adalah sebuah access modifier, yang mana boleh dikombinasikan dengan tipe yang laen dari modifier.
Petunjuk Penulisan Program:
* = berarti bahwa boleh ada 0 atau lebih kejadian dari deret tersebut yang menggunakannya
juga.
<description> = menunjukkan bahwa Anda harus mengganti nilai sebenarnya untuk bagian ini
daripada menguranginya penulisannya.
Ingat bahwa untuk class teratas, acces modifier yang valid hanyalah public dan package(yakni
jika tidak ada acces modifier mengawali kata kunci class).

Contoh berikut ini mendeklarasikan blueprint SuperHero.

 Class SuperHero {
 String superPowers[];
 void setSuperPowers(String superPowers[]) {
 this.superPowers = superPowers;
 }
 void printSuperPowers() {
 for (int i = 0; i < superPowers.length; i++) {
      System.out.println(superPowers[i]);
}
}
  }

v  Mendeklarasikan Atribut

<attributeDeclaration> ::=
     <modifier> <type> <name> [= <default_value>];
<type> ::=
     byte | short | int | long | char | float | double | boolean
              | <class>
Petunjuk Penulisan Program:
[ ] = Menunjukkan bahwa bagian ini hanya pilihan.


Inilah contohnya.
         
          public class AttributeDemo {
      private String studNum;
                public boolean graduating = false;
                protected float unitsTaken = 0.0f;
                String college;
                     }

v  Mendeklarasikan Method

<methodDeclaration> ::=
      <modifier> <returnType> <name>(<parameter>*) {
           <statement>*
      }
<parameter> ::=
      <parameter_type> <parameter_name>[,]

Sebagai contoh :

class MethodDemo {
     int data;
     int getData() {
         return data;
     }
     void setData(int data) {
this.data = data;
     }
     void setMaxData(int data1, int data2) {
        data = (data1>data2)? data1 : data2;
     }
          }

v  Mendeklarasikan sebuah Konstruktor

<constructorDeclaration> ::=
    <modifier> <className> (<parameter>*) {
         <statement>*
         }

Jika tidak ada konstruktor yang disediakan secara jelas, konstruktor default secara otomatis membuatkannya untuk Anda. Konstruktor default tidak membawa argumen dan tidak berisi pernyataan pada tubuh class.
Petunjuk Penulisan Program:
Nama konstruktor harus sama dengan nama class.
<modifier> yang valid untuk konstruktor adalah public, protected, dan private.
Konstruktor tidak memiliki nilai return.

Perhatikan contoh berikut.

class ConstructorDemo {
    private int data;
    public ConstructorDemo() {
         data = 100;
    }
    ConstructorDemo(int data) {
         this.data = data;
    }
}

v  Meng-instansiasi sebuah class

Untuk meng-instantiate sebuah class, dengan sederhana kita gunakan kata kunci new diikuti dengan pemanggilan sebuah konstruktor. Mari lihat langsung ke contohnya.

class ConstructObj {
     int data;
     ConstructObj() {
           /* menginisialisasi data */
       }
       public static void main(String args[]) {
             ConstructObj obj = new ConstructObj(); //di-instantiate
       }
             }

v  Mendeklarasikan sebuah Konstruktor
<constructorDeclaration> ::=
     <modifier> <className> (<parameter>*) {
          <statement>*
          }
Jika tidak ada konstruktor yang disediakan secara jelas, konstruktor default secara otomatis membuatkannya untuk Anda. Konstruktor default tidak membawa argumen dan tidak berisi pernyataan pada tubuh class.
Petunjuk Penulisan Program:
Nama konstruktor harus sama dengan nama class.
<modifier> yang valid untuk konstruktor adalah public, protected, dan private.
Konstruktor tidak memiliki nilai return.

Perhatikan contoh berikut.
class ConstructorDemo {
     private int data;
     public ConstructorDemo() {
           data = 100;
     }
     ConstructorDemo(int data) {
           this.data = data;
     }
}
Sumber dari : JENI-Intro2-Bab01-Review-Konsep-Dasar.pdf

Apa itu JAVA ???


Java pertama kali diluncurkan pada tahun 1995 sebagai bahasa pemrograman umum (general purpose programming language) dengan kelebihan dia bisa dijalankan di web browser sebagai applet. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystems saat ini merupakan bagian dari Oracle dan dirilis tahun 1995. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. Aplikasi-aplikasi berbasis Java umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai [[Mesin virtual Java|Mesin Virtual Java (JVM)]]. Java merupakan bahasa pemrograman yang bersifat umum/non-spesifik (general purpose), dan secara khusus didesain 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, "Write Once, Run Anywhere " yang artinya “ Tulis Sekali, Jalankan Dimanapun “. Saat ini Java merupakan bahasa pemrograman yang paling populer digunakan, dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web.
Karakteristik Java antara lain :
*        Sederhana (Simple)
Yaitu Bahasa pemrograman Java menggunakan sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection.
*        Berorientasi Objek (Object Oriented)
Yaitu Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman berorientasi objek memodelkan dunia nyata kedalam objek dan melakukan interaksi antar objek-objek tersebut.

*        Terdistribusi (Distributed)
Yaitu Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya libraries networking yang terintegrasi pada Java.

*        Interpreted
Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.

*        Robust
Java mempuyai reliabilitas yang tinggi. Compiler pada Java mempunyai
kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa
pemrograman lain. Java mempunyai runtime-Exception handling untuk
membantu mengatasi error pada pemrograman.
*        Aman (Secure)
Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak sistem komputer yang menjalankan aplikasi tersebut.

*        Architecture Neutral
Program Java merupakan platform independent. Program cukup mempunyai satu buah versi yang dapat dijalankan pada platform yang berbeda dengan Java Virtual Machine.

*        Portable
Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang.

*        Performance
Performance pada Java sering dikatakan kurang tinggi. Namun performance Java dapat ditingkatkan menggunakan kompilasi Java lain seperti buatan Inprise, Microsoft ataupun Symantec yang menggunakan Just In Time Compilers (JIT).

*        Multithreaded
Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan.

*        Dinamis
Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan properties ataupun method dapat dilakukan tanpa menggangu program yang menggunakan class tersebut.

Sebagian fitur Java :
1. Java Virtual Machine (JVM)
JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM.
Aplikasi program Java diciptakan dengan file teks berekstensi .java . Program ini dikompilasi menghasilkan satu berkas bytecode berekstensi .class atau lebih. Bytecode adalah serangkaian instruksi serupa instruksi kode mesin. Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana kompilasi ditujukan, sementara bytecode berjalan pada java interpreter  yang tersedia di semua platform sistem komputer dan sistem operasi.

2. Garbage Collection

Banyak bahasa pemrogaman lain yang mengijinkan seorang programmer mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa lainnya, adalah programmer yang mutlak bertanggung jawab akan hal ini. Hal ini dapat menyulitkan bilamana programmer tersebut alpa untuk mengembalikan blok memori sehingga menyebabkan situasi yang dikenal dengan nama memory leaks.
Program Java melakukan garbage collection yang berarti program tidak perlu menghapus sendiri objek–objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh programmer dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.

3. Code Security
Code Security terimplementasi pada Java melalui penggunaan Java Runtime
Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari untrusted Java Code.
1. Pertama, class-loader menangani pemuatan kelas Java ke runtime
interpreter. Proses ini menyediakan pengamanan dengan memisahkan kelas–kelas yang berasal dari local disk dengan kelas–kelas yang diambil dari jaringan. Hal ini membatasi aplikasi Trojan karena kelas–kelas yang berasal dari local disk yang dimuat terlebih dahulu.
2. Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan
menjamin bytecode memenuhi aturan–aturan dasar bahasa Java.
3. Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan
mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing.

Nah, sekarang kita akan mengetahui kelebihan dan kekurangan java.
Kelebihan :
*      Multiplatform
Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis Java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.
*      OOP (Object Oriented Programming - Pemrogram Berorientasi Objek)
*      Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman Java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
*      Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika Serikat juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.
*      Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).
Kekurangan :
*      Tulis sekali, jalankan di mana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.
*      Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.
*      Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.
Cukup sampai disini dulu kawan-kawan, J. Eitss tapi masih ada kelanjutannya lhooo :D tunggu ya…
Sumber :
modul2.pdf