Sejarah bahasa pemrograman java dimulai sejak tahun 1991, yaitu ketika sebuah proyek perusahaan Sun Microsystems dengan nama sandi “The Green Project”. Proyek ini dipelopori oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill Joy, dan sembilan pemrogram lainnya dari Sun Microsystems yang berjalan selama 18 bulan. Proyek ini kemudian ditutup pada musim panas 1992 dan menghasilkan sebuah program java OAK yang pertama yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar sentuh (touch screen).
Setelah proyek ini selesai sebuah anak perusahaan TV kabel tertarik menambah beberapa orang dari proyek The Green Project tersebut. Pemusatkan kegiatan ini berada pada sebuah kantor di 100 Hamilton Avenue, Palo Alto dan dalam sekejap kegiatan ini berkembang dengan pesat dengan meningkatnya jumlah karyawan hingga 70 orang. Selain itu juga media internet mulai digunakan sebagai penopang kerja mereka. Pada tahun 1995, nama Oak diganti dengan nama JAVA karena ada produk lain yang telah mematenkan nama tersebut dan sebagai tambahan nama JAVA ini menurut para pekerja Sun merupakan nama sejenis kopi favorit James Gosling. Bersamaan dengan lahirnya nama Java ini, Sun juga mengganti nama web-browser mereka dari WebRunner menjadi HotJava. Sun kemudian mengumumkan bahasa Java sebagai bahasa yang mampu menjalankan Web secara interaktif dan aman. Pada pertengahan tahun 1995, Netscape mengumumkan akan mengadopsi Java di dalam browser mereka. Kemudian,  sehingga pada waktu itu secara defacto menjadi bahasa standar di dunia maya Internet. Perkembangan Java dipermudah lagi dengan tersedianya JDK (Java Development Kit) di situs milik Sun yang dapat di-download gratis. Pada akhir tahun 1995, IBM dan Microsoft memutuskan untuk membeli lisensi Java untuk dipakai dalam teknologi mereka. Bahasa Java itu sendiri dikembangkan dari bahasa sebelumnya yaitu C++, hal ini dikarenakan proyek Green tersebut telah dikembangkan oleh orang-rang yang dulunya bekerja dengan bahasa C++. JAVA lahir dari kebutuhan akan sebuah pemrograman berorientasi objek. JAVA itu sendiri diciptakan karena ketidakpuasan akan kinerja C++ karena dinilai memiliki banyak bug, berbiaya besar dan tergantung pada platform.

Versi Awal
Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya:
       java.lang: Peruntukan kelas elemen-elemen dasar.
       java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
       java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.
       java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.
       java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
       java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.
Kelebihan
       Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.
       OOP (Object Oriented Programming – Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis oebjek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.
       Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
       Bergaya C++, memiliki sintaks seperti bahasa pemrograman [C++] sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.
       Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).
Kekurangan
       Tulis sekali, perbaiki 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 koe 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.
Referensi : wikipedia, femaramoklet.blogspot.com