Java adalah pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuan kemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula). Java diciptakan oleh James Gosling, developer dari Sun Microsystem pada tahun 1991.
Macam-macam Java 2 Software Developer Kit (J2SDK) antara lain :
1. J2SE (Java 2 Standard Edition)
Digunakan pada pembuatan aplikasi desktop
2. J2EE (Java 2 Enterprise edition)
Digunakan pada pemrograman aplikasi server atau aplikasi berbasis web server.
3. J2ME(Java 2 Micro Edition)
Karakteristik Java antara lain :
1. Sederhana (Simple)
Syntax untuk java seperti syntax pada C++ tetapi syntax java tidak memerlukan :
a. Header file
b. Pointer arithmatic
c. Struktur union
d. Operator overloading
e. Class virtual base
f. dan yang lainnya
Jika anda mengenal C++ dengan baik, maka anda dapat berpindah ke syntax java dengan mudah tetapi jika tidak, anda pasti berpendapat bahwa java sederhana.
2. Berorientai Object (Object Oriented)
Rancangan berorientasi objek merupakan suatu teknik yang memusatka rancangan pada data (objek) dan interface. Fasilitas pemrograman berorientasi objek pada java pada dasarnya adalah sama dengan C++. Feature pemrograman berorientasi objek pada java benar-benar sebanding dengan C++. Perbedaan utama antara Java denga C++ terletak pada penurunan berganda (multiple inheritance), untuk ini java memiliki cara penyelesaian yang lebih baik.
3.Terdistribusi (Distributed)
Java memiliki library rutin yang luas untuk dirangkai pada protokol TCP/IP seperti HTTP dan FTP dengan mudah. Aplikasi Java dapat membuka dan mengakses objek untuk segala macam NET lewat URL sama mudahnya seperti yang biasa dilakukan seorang programmer ketika mengakses file sistem secara lokal.
4. Interpreter
Intrepeter java dapat meng-eksekusi kode byte Java secara langsung pada komputer-komputer yang memiliki intrepeter. Dan karena proses linking dalam java merupakan proses yang kenaikannya tahap demi tahap dan berbobot ringan, maka proses pengembangan dapat menjadi lebih cepat dan masih dalam penelitian.
5. Kuat (Robust)
Java dimaksudkan untuk membuat suatu program yang benar-benar dipercaya dalam berbagai hal. Java banyak menekankan pada :
a. Pengecekan awal untuk kemungkinan terjadinya masalah
b. Pengecekan pada saat runtime
c. Mengurangi kemungkinan timbulnya kesalahan (error)
Perbedaa utamaantara Java dan C++ adalah Java memiliki sebuah model pointer yang mengurangi kemungkinan penimpaan(overwriting) pada memory dan kerusakan data (data corript).
6. Aman (Secure)
Java dimaksudkan untuk digunakan pada jaringan terdistribusi. Sebelum sampai pada bagian tersebut, penekanan terutama ditujukan pada masalah keamanan. Java memungkinkan penyusunan program yang bebas virus dan sistem yang bebas dari kerusakan.
7. Netral arsitektur
Kompiler membangkitkan sebuah format file dengan objek arsitektur syaraf. Program yang di kompile dapat dijalankan pada banyak procesor, disini diberikan sistem runtime dari java. Kompiler java melakukan dengan membangkitkan instruksi instruksi kode byte yang tidak dapat dilakukan oleh arsitektur komputer tertentu. Java dirancang untuk mempermudah penerjemahan pada banyak komputer dengan mudah dan diterjemahkan pada komputer asal pada saat runtime.
8. Portable (Portable)
Tidak seperti pada C dan C++, di java terdapat ketergantungan pada saat implementasi (implement dependent). Ukuran type data primitif ditentukan, sebagaimana kelakuan aritmatik padanya. Library atau pustaka merupakan bagian dari sistem yang mendefinisikan interface yang portabel.
9. Kinerja yang tinggi (high performance)
Meskipun kinerja kode byte yang diintrepetasi biasanya lebih dari memadai, tetapi masih terdapat situasi yang memerlukan kinerja yang lebih tinggi. Kode byte dapat diterjemahkan (pada saat run time) ke dalam kode mesin untuk CPU tertentu dimana aplikasi sedang berjalan.
10. Multithreaded
Multitherading adalah kemampuan sebuah prorgam untuk melakukan lebih dari satu pekerjaan sekaligus. Keuntungan dari multithreading adalah sifat respons yang interaktif dan realtime.
11. Dinamis
Java dirancang untuk beradaptasi dengan lingkungan yang terus berkembang. Librari dapat dengan mudah menambah metode dan variabel contoh yang baru tanpa banyak mempengaruhi klien. Informasi run-time dalam java adalah langsung (straightforward).