Perbedaan antara java dan javascript sangat banyak karena sebenarnya javascript bukanlah bagian dari java. JavaScript sendiri adalah bahasa scripting untuk HTML yang dikembangkan oleh Netscape,Inc. Sedangkan Java adalah bahasa pemrograman yang dikembangkan oleh Sun Microsystems.
James Gosling adalah Inventor Java yang kemudian dikenal sebagai Bapak Java. Ada beberapa perbedaan antara Java dan JavaScript yaitu :
1. Execution
Perbedaan pertama antara Java dan JavaScript adalah bahwa Java di compile ke dalam file yang berisi byte code dan dijalankan oleh JVM, sedangkan untuk kode JavaScript secara langsung dieksekusi oleh browser. Satu perbedaan lagi yaitu bahwa Java dijalankan di dalam JVM dan membutuhkan JDK atau JRE untuk menjalankannya, sedangkan JavaScript berjalan di dalam browser dan hampir setiap browser modern saat ini telah mendukung JavaScript.
2. Static and dinamis
Perbedaan utama antara JavaScript dan Java adalah pada jenis bahasanya, jika pada JavaScript merupakan bahasa dinamis sedangkan Java termasuk jenis bahasa statis.
3. Dukungan closures
JavaScript mendukung closures, berupa fungsi anonim. Dengan kata lain kita dapat melewati fungsi sebagai argumen ke fungsi lain. Java tidak memberlakukan metode tersebut dan satu-satunya cara untuk mensimulasi closures adalah dengan menggunakan class anonim. Menurut artikel yang pernah saya baca, Java 8 telah membawa dukungan closures nyata di Java dalam bentuk Lambda dan membuat hal ini lebih mudah dalam menulis kode ekspresif tanpa banyak kerumitan di Java 8.
4. OOP
Bahasa java adalah Object Oriented Programming, meskipun JavaScript juga mendukung class dan objek, ini lebih seperti sebuah bahasa scripting yang berorentasi objek. Java menyediakan paket untuk kelompok class yang terkait dan menyediakan deployment control yang lebih baik menggunakan JAR, WAR, dan EAR juga.
5. Berjalan dimanapun
Java menggunakan byte code untuk memperoleh platform independence, JavaScript langsung berjalan pada browser, akan tetapi kode yang ditulis dalam JavaScript sering bermasalah, misalnya untuk kode tertentu dapat berjalan dengan baik di Mozila Firefox tetapi bisa saja tidak bekerja di Internet Explore 7 atau 8. Hal ini dikarenakan terdapat masalah pada kompatibilitas browser, karena implementasi berbasis JavaScript buruk akhirnya muncullah jQuery.
6. Blok vs fungsi berdasarkan scoping
Java menggunakan scoping berdasarkan blok yaitu variabel keluar dari ruang lingkup sebagai kontrol keluar dari blok, kecuali class variabel. Sedangkan JavaScript menggunakan scoping berdasarkan fungsi, variabel dapat diakses dinyatakan dengan fungsi. Jika kita memiliki variabel lokal dan global dengan nama yang sama, maka yang akan diutamakan adalah lokal dalam JavaScript
7. Konstruktor
Java memiliki konsep konstruktor yang memiliki beberapa sifat seperti memastikan bahwa class konstruktor bejalan sebelum sub class. Disisi lain konstruktor JavaScript hanya fungsi lain, yang artinya tidak ada aturan khusus untuk konstruktor dalam JavaScript misalnya saja tidak dapat memiliki jenis kembali atau nama yang harus sama dengan class
8. NullpointerExeption
JavaScript jauh lebih fleksibel daripada Java, karena ketika kita tidak memiliki NullPointerException dalam JavaScript, variabel dapat menerima berbagai jenis data karena JavaScript mempunyai tipe bahasa yang dinamis
9. Penerapan
JavaScript memiliki ruang tersendiri untuk HTML dan CSS dalam pengembangan web. Sementara pada Java ada di mana-mana.