Pengertian Bahasa Pemrograman Java
Mengutip wikipedia, bahasa pemrograman Java adalah “general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible”.
Terjemahan bebasnya, Java adalah “bahasa pemrograman umum (general-purpose) yang konkuren (menjalankan banyak hal secara bersamaan), berbasis class, berorientasi object dan dirancang secara khusus agar tidak bergantung pada sistem tertentu“.
Dari pengertian ini kita bisa melihat fitur-fitur terpenting dalam bahasa Java:
# General-purpose computer-programming language #
Java dirancang sebagai bahasa pemrograman umum yang bisa dipakai untuk membuat berbagai aplikasi, mulai untuk aplikasi desktop, website, aplikasi mobile, hingga embedded device seperti microprocessor atau perangkat pintar.
Ini berbeda dengan bahasa pemrograman yang secara khusus dipakai untuk pembuatan aplikasi tertentu. Sebagai contoh, bahasa pemrograman PHP secara khusus dipakai untuk membuat website saja.
# Concurrent #
Dalam teori komputasi, concurrent programming adalah fitur di sebuah bahasa pemrograman yang bisa menjalankan banyak hal dalam satu waktu. Lawan dari kata concurrent adalah sequential programming, dimana alur pemrograman di proses secara berurutan dari awal hingga akhir.
Secara umum, concurrent programming akan meningkatkan performa dari aplikasi yang dibuat.
# Class-based, object-oriented #
Mungkin inilah fitur paling terkenal di bahasa Java, yakni pemrograman berbasis object. Berbeda dengan kebanyakan bahasa pemrograman yang mendukung pemrograman prosedural dan object sekaligus (seperti C++PHP, atau Python), bahasa Java hanya menyediakan konsep object saja.
Fitur pemrograman object ini memang akan memudahkan dalam pembuatan aplikasi yang kompleks, namun di sisi lain ini juga membuat bahasa Java relatif lebih susah dipelajari terutama bagi pemula.
Saya sendiri menyarankan tidak menjadikan bahasa Java sebagai bahasa pemrograman pertama. Konsep pemrograman object baru pas dipelajari jika sebelumnya anda sudah pernah belajar bahasa pemrograman procedural, seperti bahasa Pascal, C, atau C++.
# Designed to have as few implementation dependencies as possible #
Bahasa Java memiliki moto “Write once, run anywhere“, yang menekankan bahwa satu kode kode program Java yang kita tulis, bisa langsung berjalan di banyak perangkat dan berbagai sistem informasi, tanpa perlu di-compile ulang.
Untuk mendapatkan fitur seperti ini, bahasa Java menggunakan konsep byte code dan JVM (Java Virtual Machine). Penjelasan lebih lengkap tentang byte code dan JVM ini akan kita bahas dalam tutorial selanjutnya.
Teknologi Java memiliki tiga komponen penting, yaitu:
1.    Programming-language specification
            Java2 adalah generasi kedua dari Java platform (generasi awalnya adalah Java Development Kit). Java berdiri di atas sebuah mesin interpreter yang diberi nama JVM. JVM inilah yang akan membaca bytecode dalam file .class dari suatu program sebagai representasi langsung program yang berisi bahasa mesin. Oleh karena itu, bahasa Java disebut sebagai bahasa pemrograman yang portable karena dapat dijalankan pada berbagai sistem operasi, asalkan pada sistem operasi tersebut terdapat JVM. Platform Java terdiri dari kumpulan library, JVM, kelas- kelasloader yang dipaket dalam sebuah lingkungan rutin Java, dan sebuahcompiler, debuger, dan perangkat lain yang dipaket dalam Java Development Kit (JDK).
            Java2 adalah generasi yang sekarang sedang berkembang dari platform Java. Agar sebuah program Java dapat dijalankan, maka file dengan ekstensi ''.java'' harus dikompilasi menjadi file bytecode. Untuk menjalankan bytecode tersebut dibutuhkan JRE ( Java Runtime Environment) yang memungkinkan pemakai untuk menjalankan program Java, hanya menjalankan, tidak untuk membuat kode baru lagi. JRE berisi JVM dan libraryJava yang digunakan.
            Platform Java memiliki tiga buah edisi yang berbeda, yaitu J2EE ( Java2 Enterprose Edition), J2ME ( Java2 Micro Edition) dan J2SE (Java2 Second Edition). J2EE adalah kelompok dari beberapa API (Application Programming Interface) dari Java dan teknologi selain Java. J2EE sering dianggap sebagai middleware atau teknologi yang berjalan di server, namun sebenarnya J2EE tidak hanya terbatas untuk itu. Faktanya J2EE juga mencakup teknologi yang dapat digunakan di semua lapisan dari sebuah sistem informasi. Implementasi J2EE menyediakan kelas dasar dan API dari Java yang mendukung pengembangan dari rutin standar untuk aplikasi klien maupun server, termasuk aplikasi yang berjalan di web browser. J2SE adalah lingkungan dasar dari Java, sedangkan J2ME merupakan edisilibrary yang dirancang untuk digunakan pada device tertentu sepertipagers dan mobile phone.
            Java merupakan bahasa pemrogrman yang bersifat case sensitive yang berarti penulisan menggunakan huruf besar ataupun huruf kecil pada kode program dapat berarti lain. Misalnya penulisan "System" akan diartikan berbeda dengan "system" oleh interpreter. Java tidak seperti C++, Java tidak mendukung pemrograman prosedural, tapi mendukung pemrograman berorientasi objek sehingga ada sintaks class pada kode programnya
2.    Application-programming interface
Java API terdiri dari tiga bagian utama:
·        Java Standard Edition (SE), sebuah standar API untuk merancang aplikasi desktop dan applets dengan bahasa dasar yang mendukung grafis, M/K, keamanan, konektivitas basis data dan jaringan.
·         Java Enterprose Edition (EE), sebuah inisiatif API untuk merancang aplikasi server dengan mendukung untuk basis data.
·        Java Macro Edition (ME), sebuah API untuk merancang aplikasi yang jalan pada alat kecil seperti telepon genggam, komputer genggam dan pager.
3.    Virtual-machine specification
            Java Virtual Machine (JVM) adalah sebuah spesifikasi untuk sebuah komputer abstrak. JVM terdiri dari sebuah kelas pemanggil dan sebuah interpreter Java yang mengeksekusi kode arsitektur netral. Kelas pemanggil memanggil file .class dari kedua program Java dan Java API untuk dieksekusi oleh interpreter Java. Interpreter Java mungkin sebuah perangkat lunak interpreter yang menterjemahkan satu kode byte pada satu waktu, atau mungkin sebuah just-intime (JIT) kompiler yang menurunkanbytecodearsitektur netral kedalam bahasa mesin untuk host computer.
    
     Kelebihan dan Kekurangan Java
Slogan Java adalah “Tulis sekali, jalankan di manapun”. Sekarang ini Java menjadi sebuah bahasa pemrograman yang populer dan dimanfaatkan secara luas untuk pengembangan perangkat lunak. Kebanyakan perangkat lunak yangmenggunakan Java adalah ponsel feature dan ponsel pintar atau smartphone.
    1.    Kelebihan Java
Java mempunyai beberapa keunggulan dibandingkan dengan bahasa pemrograman lainnya. Keunggulan bahasa pemrograman Java antara lain:
·         Berorientasi pada objekJava adalah bahasa pemrograman yang berorientasi pada objek. Java membagi program menjadi objek-objek serta memodelkan sifat dan tingkah laku masing-masing dalam menyelesaikan suatu masalah.
·         Java bersifat multiplatform Java dirancang untuk mendukung aplikasi yang dapat beroperasi di lingkungan jaringan berbeda. Untuk mengakomodasi hal tersebut, Java compiler membangkitkan bytecodes (sebuah format yang tidak tergantung pada arsitektur tertentu yang didesain untuk mengirimkan kode ke banyak platform perangkat keras dan perangkat lunak secara efisien). Java dapat dijalankan oleh banyak platform seperti Linux, Unix, Windows, Solari, maupun Mac.
·         Java bersifat multithread Multithreading adalah kemampuan suatu program komputer untuk mengerjakan beberapa proses dalam suatu waktu. Thread dalam Java memiliki kemampuan untuk memanfaatkan kelebihan multi prosessor apabila sistem operasi yang digunakan mendukung multi prosessor.
·         Dapat didistribusi dengan mudah Java memiliki library rutin yang lengkap untuk dirangkai pada protocol TCP/IP (seperti HTTP dan FTP) dengan mudah. Kemampuan networking Java lebih kuat dan lebih mudah digunakan. Java memudahkan tugas pemrograman jaringan yang sulit seperti membuka dan mengakses sebuah soket koneksi. Java juga mamudahkan pembuatan CGI (Common Gateway Interface).
·         Bersifat dinamisJava dirancang untuk beradaptasi dengan lingkungan yang sedang berkembang. Java bersifat dinamis dalam tahap linking. Class yang ada dapat di link sebatas yang diperlukan, apabila diperlukan modul kode yang baru dapat di link dari beberapa sumber, bahkan dari sumber dalam jaringan Internet.
·         Mirip c++, Mempunyai sintaks yang mirip dengan bahasa pemrograman c++ . Sehingga para pengguna c++ banyak yang hijrah menggunakan Java. 
·         Perkembangan yang luas, Dari game sampai sistem operasi handphone menggunakan program java . Misalnya Handphone Sonny Ericsson dan Opera Mini 3 yang bertipe .jar ( Java Archive ).
·         Mempunyai pengumpulan sampah otomatis.
     2.    Kekurangan Java
·         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.

Sumber  :