FITUR-FTUR JAVA
Fitur-fitur Java antara lain;
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.      Gerbage Collection
Dimana disini terdapat banyak bahasa pemrograman lain dengan memberi kebebasan seorang programmer untuk mengalokasikan memory pada saat program yang dijalankan yang selanjutnya memory tersebut harus ditempatkan kembali blok memory tersebut supaya program lain juga dapat menggunakannya. Dalam C, C++dan bahasa lainnya, yang bertanggungjawab adalah seorang programmer tentang hal ini. Namun apabila programmer tersebut lupa, akan menyebabkan suatu keadaan yang biasa disebut dengan nama memory leaks. Memory leaks, adalah suatu keadaan dimana suatu blok memory yang dialokasikan, namun tidak pernah dibebaskan oleh pihak yang bertanggungjawab (program), jika memory yang dialokasikan tidak dibebaskan dari memory, maka akan mengurangi ketersediaan memory yang akan digunakan oleh sistem operasi dan aplikasi lainnya. Dengan demikian apabila terdapat dalam jumlah yang besar , sudah tentu sangat mempengaruhi kinerja sistem operasi dan aplikasi lainnya. Dengan gerbage collection program tidak perlu menghapus sendiri objek-objek yang tidak digunakan lagi, sehingga akan mengurangi beban pengelolaan memory oleh programmer dan mengeleminasi sumber kesalahan memory leaks tersebut.
3.      Code Security
Code security ini terimplementasi pada Java dengan melalui penggunaan Java Runtime Environment (JRE). Java menggunakan tiga lapis model pengamanan untuk melindungi sistem dari untrusted Java Code, yaitu diantaranya;
a.       Clas loader, menangani pemuatan kelas java ke runtime interpreter, local disk denga kelas-kelas yang diambil dari jaringan. Hal ini membatasi aplikasi Trojan karena kelas - kelas di local disk di muat terlebih dahulu. proses ini menyediakan pengamanan dengan memisahkan kelas-kelas yang berasal dari local disk yang dimuat terlebih dahulu.
b.      Bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan-aturan dasar bahasa Java
c.       Manajemen keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti file , port jaringan , proses eksternal dan sistem widowing. Sistem windowing adalah komponen dari GUI yang khususnya pada lingkungan desktop yang mendukung pelaksanaan manajer window dan memberikan dukungan dasar untuk perangkat keras grafis, perangkat penunjuk seperti mouse dan keyboard.
Sementara itu teknik pengamanan lain yang disediakan Java, antara lain yaitu;
1.      Bahasa dirancang untuk mempersulit eksekusi kode perusak. Peniadaan pointer merupakan langkah besar pengamanan. Java tidak mengenal operasi pointer. Di tangan programmer handal, operasi pointer merupakan hal yang luar biasa untuk optimasi dan pembuatan program yang efisien serta mengagumkan. Namun mode ini dapat menjadi petaka di hadapan programmer jahat. Pointer merupakan sarana luar biasa untuk pengaksesan tak diotorisasi. Dengan peniadaan operasi pointer, Java dapat menjadi bahasa yang lebih aman.
2.      Java memeiliki pengamanan terhadap applet. Untuk mencegah program bertindak mengganggu media penyimpanan,  maka applet tidak diperbolehkan melakukan open, read ataupun write terhadap berkas secara sembarangan. Karena Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai logo Java dan teks identifikasi terhadap jendela  yang dibuka. Hal ini  mencegah jendela  pop-up menipu sebagai permintaan keterangan username dan password. Applet sendiri dapat didefinisikan sebuah program kecil yang ditulis dengan menggunakan bahasa pemrograman Java yang diakses melalui halaman web dan dapat di-download ke dalam mesin klien yang kemudian menjalankannya didalam jendela penjelajah web.
Dalam pemrograman Java, terdapat pula fitur-ftur yang tersedia dalam bahasa pemrograman Java. Sehingga banyak orang menyebut java memiliki prospek yang bagus, diantaranya yaitu seperti;
·         Aksesibilitas dari berbagai lokasi dunia
Java sebagai bahasa pemrograman yang ditujukann untuk internet, sehingga java dapat diakses melalui wolrd wide web serta dapat di akses dari lokasi manapun di seluruh dunia. Dengan demikian ini sangat memudahkan bagi pengguna di seluruh dunia. Untuk mengakses mereka hanya membutuhkan akses internet agar dapat mengakses java.
·         Sistem yang bebas virus
Java mengimplementasikan strong type-cheking pada komputer pengguna, perubahan pada program akan ditandai sebagai error dan program tidak akan dapat dijalankan. Type checking adalah sistem pengecekan dimana kode akan dicek apakah terdapat perubahan dalam kode asli. Jika firus mengubah kode tersebut, maka program tidak akan dijalankan. Sehingga komputer aman dari serangan virus.
·         Aplikasi yang cocok dengan berbagai platform.
Java juga merupakan pemrograman bahasa yang dapat digunakan diberbagai platfrom (platfrom independent Application). Java compiler meng-compile java code menjadi intermediate bytecode yang dapat dibaca oleh JMV (Java Virtual Machine). Java Interpreter pada browser yang mendukung java agar dapat mengeksekusi bytecode ini. Dengan proses kompilasi bytecode dan interpretasinya oleh web browser, program pada java dapat dijalankan diberbagai hardwaredan sistem operasi, asalkan sistem operasi ini memiliki web browser yang mendukung Java atau Java Interpreter.  
·         Java 2D/3D
Menyediakan sekumpulan API yang digunakan untuk membangun grafik 2D/3D.
·         Java Server Page (JSP)
Berkembang dari Java Servlet yang dipakai untuk mengganti aplikasi CGI, JSP yang mirip ASP dan PHP merupakan alternatif untuk solusi aplikasi internet.
·         Java Native Interface (JNI)
Menyediakan sekumpulan API yang digunakan untuk mengakses fungsi – fungsi di library yang dibuat dari bahasa penrograman lain.
·         Java Sound
Menyediakan sekumpulan API yang digunakan untuk memanipulaisi Sound.
·         Java Interface Definition Language + COBRA(Common Object Request Broker) 
·         Java IDL menyediakan dukungan Java untuk implementasi COBRA yang merupakan model distributed Object untuk solusi aplikasi besar di dunia networking.
·         Java Card
Digunakan pada aplikasi smart card.
·         Java Telephony API (JTAPI)
Menyediakan sekumpulan API untuk memanfaatkan peralatan telephony, sehingga cocok untuk aplikasi Computer Telephony Integration yang diperlukan seperti Automatic Call Distribution, PC-PBX dan lain sebagainya.
·         Bahasa Berorientasi Objek
Meskipun Java dipengaruhi bahasa-bahasa yang lalu, namun Bahasa Java bukan turunan langsung dari bahasa manapun, dan juga tidak dirancang untuk kompatibel secara kode sumber dengan bahasa-bahasa sebelumnya. Bahasa Java secara menyeluruh baru.
·         Bahasa Statically Typed
Seluruh objek dalam program harus dideklarasikan lebih dahulu sebelum digunakan. Ini memungkinkan kompiler Java menentukan dan melaporkan terjadinya pertentangan (ketidakkompatibelan) tipe yang merupakan barikade awal untuk mencegah kesalahan yang tidak perlu (seperti mengurangkan variable bertipe integer dengan variable bertipe string).  Kelebihan lain dari fitur ini adalah kode program dapat dioptimasi untuk menghasilkan program berkinerja tinggi. 
·         Bahasa Dikompilasi
Sebelum menjalankan program di bahasa Java, program dikompilasi menggunakan Java compiler. Kompilasi akan menghasilkan file bytecode yang sama fungsinya dengan file kode mesin dan dapat dieksekusi disemua Java Interpreter. Java Interpreter membaca file “bytecode” dan menerjemahkan perintah “bytecode” menjadi perintah-perintah bahasa mesin yang dapat dieksekusi. 
·         Bahasa yang Aman
Salah satu prinsip kunci pembuatan Java adalah keselamatan dan keamanan. Bahasa Java (implementasinya) telah memperoleh pengalaman aspek keamanan dari Java Applet.
·         Bahasa Independen terhadap Platform
Platform independence adalah kemampuan program bekerja di sistem operasi atau sistem komputer berbeda. Bahasa Java merupakan bahasa yang secara sempurna tidak bergantung pada platform. Tipe variabel Java mempunyai ukuran yang sama di semua platform sehingga variabel bertipe integer (int, long) berukuran sama tidak peduli dimana program Java dikompilasi.
·         Bahasa Multithreading
Thread adalah untuk menyatakan program komputer melakukan lebih dari satu tugas di satu waktu yang sama. Java menyediakan kakas untuk menulis program multithread, program mempunyai lebih dari satu thread eksekusi pada saat yang sama sehingga memungkinkan program menangani beberapa tugas secara baik. Semua aplikasi pasti sedikitnya mempunyai satu thread yang merepresentasikan jalur utama eskekusi. 
·         Bahasa  yang Didukung Garbage Collector
Program Java melakukan garbage collection yang berarti pemrogram tidak perlu menghapus sendiri objek-objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolan memori oleh pemrogram dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat di bahasa yang memungkinkan kesalahan alokasi dinamis. 
·         Bahasa yang Mampu Diperluas
Program Java mendukung native method, yaitu fungsi ditulis di bahasa lain, biasanya C atau C++. Dukungan native method memungkinkan pemrogram menulis fungsi yang dapat dieksekusi lebih cepat dibanding fungsi ekivalen di Java. Native method secara dinamis akan di-link ke program Java, yaitu diasosiasikan dengan program saat jalan.  Bahasa mempunyai banyak fitur modern yang bagus untuk pengelolaan sistem kompleks.

Sumber :