Java adalah nama umum untuk bahasa pemrograman berorientasi objek Java dan platform Java yang diluncurkan oleh Sun Microsystems pada Mei 1995. Ini dikembangkan bersama oleh James Gosling dan rekannya dan diluncurkan secara resmi pada tahun 1995.
Java dibagi menjadi tiga sistem:
Pada bulan Juni 2005, konferensi JavaOne diadakan, dan SUN merilis Java SE 6. Pada saat ini, berbagai versi Java telah diganti namanya untuk menghilangkan nomor "2": J2EE berganti nama menjadi Java EE, J2SE berganti nama menjadi Java SE, dan J2ME berganti nama menjadi Java ME.
Pada tahun 2009, Sun diakuisisi oleh Oracle.
Pada tahun 2018, organisasi open source Eclipse Foundation mengumumkan bahwa JavaEE (Enterprise Edition) akan berganti nama menjadi JakartaEE (Jakarta).
Sintaks bahasa Java sangat mirip dengan bahasa C dan bahasa C++, sehingga mudah dipelajari dan digunakan oleh sebagian besar programmer. Di sisi lain, Java membuang fitur-fitur C++ yang jarang digunakan, sulit dipahami, dan membingungkan, seperti kelebihan operator, pewarisan ganda, dan transmisi otomatis. Secara khusus, bahasa Java tidak menggunakan pointer, melainkan referensi. Ini juga menyediakan mekanisme manajemen daur ulang memori otomatis sehingga pemrogram tidak perlu khawatir tentang manajemen memori.
Bahasa Java menyediakan primitif seperti kelas, antarmuka, dan pewarisan. Demi kesederhanaan, bahasa ini hanya mendukung pewarisan tunggal antar kelas, tetapi mendukung pewarisan berganda antar antarmuka, dan mendukung mekanisme implementasi antar kelas dan antarmuka (kata kuncinya adalah implementasi). Bahasa Java sepenuhnya mendukung pengikatan dinamis, sedangkan bahasa C++ hanya menggunakan pengikatan dinamis untuk fungsi virtual. Singkatnya, bahasa Java adalah bahasa pemrograman berorientasi objek murni.
Bahasa Java mendukung pengembangan aplikasi Internet. Di antara antarmuka pemrograman aplikasi Java dasar, terdapat antarmuka pemrograman aplikasi jaringan (java net), yang menyediakan perpustakaan kelas untuk pemrograman aplikasi jaringan, termasuk URL, URLConnection, Socket, ServerSocket, dll. Mekanisme RMI (Remote Method Activation) Java juga merupakan sarana penting dalam mengembangkan aplikasi terdistribusi.
Mekanisme pengetikan Java yang kuat, penanganan pengecualian, pengumpulan sampah otomatis, dll. merupakan jaminan penting bagi kekokohan program Java. Membuang pointer adalah pilihan cerdas untuk Java. Mekanisme pemeriksaan keamanan Java membuat Java lebih tangguh.
Java biasanya digunakan di lingkungan jaringan. Oleh karena itu, Java menyediakan mekanisme keamanan untuk mencegah serangan kode berbahaya. Selain banyak fitur keamanan bahasa Java, Java memiliki mekanisme pencegahan keamanan (kelas ClassLoader) untuk kelas yang diunduh melalui jaringan, seperti mengalokasikan ruang nama yang berbeda untuk mencegah penggantian kelas lokal dengan nama yang sama, inspeksi kode byte, dan menyediakan Mekanisme manajemen keamanan (kelas SecurityManager) memungkinkan aplikasi Java mengatur penjaga keamanan.
Program Java (file dengan akhiran java) dikompilasi ke dalam format bytecode netral arsitektur (file dengan kelas akhiran) pada platform Java, dan kemudian dapat dijalankan pada sistem apa pun yang mengimplementasikan platform Java ini. Pendekatan ini cocok untuk lingkungan jaringan dan distribusi perangkat lunak yang heterogen.
Portabilitas ini berasal dari netralitas arsitektur. Selain itu, Java juga mengatur secara ketat panjang setiap tipe data dasar. Sistem Java sendiri juga sangat portabel. Kompiler Java diimplementasikan di Java, dan lingkungan berjalan Java diimplementasikan dalam ANSI C.
Seperti disebutkan sebelumnya, program Java dikompilasi ke dalam format bytecode pada platform Java dan kemudian dapat dijalankan pada sistem apa pun yang mengimplementasikan platform Java ini. Saat runtime, juru bahasa Java di platform Java menafsirkan dan mengeksekusi bytecode ini, dan kelas yang diperlukan selama eksekusi dimuat ke lingkungan yang berjalan selama fase koneksi.
Dibandingkan dengan bahasa skrip tingkat tinggi yang ditafsirkan, Java memang memiliki performa tinggi. Faktanya, dengan berkembangnya teknologi compiler JIT (Just-In-Time), kecepatan berjalan Java semakin mendekati C++.
Dalam bahasa Java, thread adalah objek khusus yang harus dibuat oleh kelas Thread atau turunannya (cucunya). Biasanya ada dua cara untuk membuat thread: pertama, gunakan konstruktor bertipe Thread(Runnable) untuk menggabungkan objek yang mengimplementasikan antarmuka Runnable ke dalam thread, kedua, turunkan subkelas dari kelas Thread dan ganti Metode run, objeknya dibuat menggunakan subkelas ini adalah thread. Perlu dicatat bahwa kelas Thread telah mengimplementasikan antarmuka Runnable, sehingga setiap thread memiliki metode runnya sendiri, dan metode run berisi kode yang akan dijalankan oleh thread tersebut. Aktivitas thread dikendalikan oleh serangkaian metode. Bahasa Java mendukung eksekusi beberapa thread secara bersamaan dan menyediakan mekanisme sinkronisasi antara beberapa thread (kata kuncinya disinkronkan).
Salah satu tujuan desain bahasa Java adalah untuk beradaptasi dengan lingkungan yang berubah secara dinamis. Kelas-kelas yang dibutuhkan oleh program Java dapat dimuat secara dinamis ke dalam lingkungan yang sedang berjalan, atau kelas-kelas yang diperlukan dapat dimuat melalui jaringan. Ini juga memfasilitasi peningkatan perangkat lunak. Selain itu, kelas-kelas di Java memiliki representasi run-time dan dapat melakukan pemeriksaan tipe run-time.
Bahasa Java mencoba memastikan bahwa memori sistem di atas 1G. Alat lainnya adalah sebagai berikut:
Setelah menginstal alat di atas, kita dapat menampilkan program Java pertama "Hello World!"
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); } }
Pada bab selanjutnya kami akan memperkenalkan cara mengkonfigurasi lingkungan pengembangan java.