Bagi kamu yang baru mulai dengan program, pastinya tidak asing dengan bahasa pemrograman Java. Nah, kali ini saya akan menjelasankan mengenai bahasa pemrograman tersebut. Langsung saja lihat penjelasannya dibawah ini.
Java adalah bahasa pemrograman komputer tujuan umum yang berbarengan, berbasis kelas, berorientasi objek, dan dirancang khusus untuk memiliki sedikit dependensi implementasi semaksimal mungkin. Hal ini dimaksudkan agar pengembang aplikasi “menulis sekali, jalankan di mana saja” (WORA), yang berarti kode Java yang dikompilasi dapat berjalan di semua platform yang mendukung Java tanpa memerlukan kompilasi ulang. Aplikasi Java biasanya disusun untuk bytecode yang dapat dijalankan pada mesin virtual Java (JVM) terlepas dari arsitektur komputer.
Pada tahun 2016, Java adalah salah satu bahasa pemrograman terpopuler yang digunakan, terutama untuk aplikasi web client-server, dengan 9 juta pengembang yang dilaporkan. Java awalnya dikembangkan oleh James Gosling di Sun Microsystems (yang sejak saat itu diakuisisi oleh Oracle Corporation) dan dirilis pada tahun 1995 sebagai komponen inti dari platform Java Sun Microsystems. Bahasa ini menghasilkan banyak sintaksnya dari C dan C ++, namun memiliki lebih sedikit fasilitas tingkat rendah daripada keduanya.
Implementasi asli dan referensi kompiler Java, mesin virtual, dan perpustakaan kelas awalnya dirilis oleh Sun di bawah lisensi proprietary. Pada bulan Mei 2007, sesuai dengan spesifikasi Proses Komunitas Java, Sun menarik sebagian besar teknologi Java-nya di bawah GNU General Public License. Lain juga telah mengembangkan implementasi alternatif teknologi Sun ini, seperti GNU Compiler untuk Java (compiler bytecode), GNU Classpath (perpustakaan standar), dan IcedTea-Web (plugin browser untuk applet).
Versi terbaru adalah Java 9, dirilis pada 21 September 2017, dan merupakan salah satu dari dua versi yang saat ini didukung secara gratis oleh Oracle. Versi yang lebih awal dari Java 8 didukung oleh perusahaan secara komersial; misalnya oleh Oracle kembali ke Java 6 pada bulan Oktober 2017 (sementara mereka masih “sangat menyarankan agar Anda mencopot pemasangannya) pra-Java 8 dari setidaknya komputer Windows).
Sejarah
James Gosling, Mike Sheridan, dan Patrick Naughton memprakarsai proyek bahasa Java pada bulan Juni 1991. Java pada awalnya dirancang untuk televisi interaktif, tapi terlalu maju untuk industri televisi kabel digital saat itu. Bahasa itu awalnya disebut Oak setelah pohon ek yang berdiri di luar kantor Gosling. Kemudian proyek tersebut berjalan dengan nama Green dan akhirnya berganti nama menjadi Java, dari kopi Java. Gosling mendesain Java dengan sintaks C/C ++ – style yang bisa dikenali oleh programmer sistem dan aplikasi.
Sun Microsystems merilis implementasi publik pertama sebagai Java 1.0 pada tahun 1995. Ini menjanjikan “Tulis Sekali, Lari ke Mana Saja” (WORA), tidak menyediakan jadwal biaya pada platform populer. Cukup aman dan menampilkan keamanan yang dapat dikonfigurasi, ini memungkinkan pembatasan akses jaringan dan file. Browser web utama segera menggabungkan kemampuan untuk menjalankan applet Java di dalam halaman web, dan Java dengan cepat menjadi populer.
Kompilator Java 1.0 ditulis ulang di Java oleh Arthur van Hoff untuk mematuhi secara ketat spesifikasi Java 1.0 bahasa. Dengan munculnya Java 2 (dirilis awalnya sebagai J2SE 1.2 pada bulan Desember 1998 – 1999), versi baru memiliki beberapa konfigurasi yang dibangun untuk berbagai jenis platform. J2EE menyertakan teknologi dan API untuk aplikasi enterprise yang biasanya dijalankan di lingkungan server, sementara J2ME menampilkan API yang dioptimalkan untuk aplikasi mobile. Versi desktop berganti nama menjadi J2SE. Pada tahun 2006, untuk tujuan pemasaran, Sun mengganti nama J2 baru sebagai Java EE, Java ME, dan Java SE.
Pada tahun 1997, Sun Microsystems mendekati badan standar ISO/IEC JTC 1 dan kemudian Ecma International meresmikan Java, namun segera menarik diri dari prosesnya. Java tetap standar de facto, dikendalikan melalui Java Community Process. Pada suatu waktu, Sun membuat sebagian besar implementasi Java-nya tersedia tanpa biaya, terlepas dari status perangkat lunak berpemiliknya. Sun menghasilkan pendapatan dari Java melalui penjualan lisensi untuk produk khusus seperti Java Enterprise System.
Pada tanggal 13 November 2006, Sun merilis sebagian besar mesin virtual Java-nya (JVM) sebagai perangkat lunak bebas dan open-source, (FOSS), sesuai dengan GNU General Public License (GPL). Pada tanggal 8 Mei 2007, Sun menyelesaikan prosesnya, membuat semua kode inti JVM-nya tersedia dengan persyaratan distribusi perangkat lunak/open source gratis, selain sebagian kecil kode yang tidak dimiliki Sun sebagai hak cipta.
Wakil presiden Sun Rich Green mengatakan bahwa peran ideal Sun berkenaan dengan Java adalah sebagai “penginjil”. Setelah akuisisi Oracle Corporation terhadap Sun Microsystems pada tahun 2009-10, Oracle telah menggambarkan dirinya sebagai “pramugara teknologi Java dengan komitmen tanpa henti untuk mendorong komunitas partisipasi dan transparansi”. Ini tidak mencegah Oracle mengajukan tuntutan hukum kepada Google segera setelah itu karena menggunakan Java di dalam Android SDK (lihat bagian Google di bawah). Perangkat lunak Java berjalan dengan segala hal mulai dari laptop hingga pusat data, konsol game hingga superkomputer ilmiah. Pada tanggal 2 April 2010, James Gosling mengundurkan diri dari Oracle.
Pada bulan Januari 2016, Oracle mengumumkan bahwa lingkungan runtime Java berdasarkan JDK 9 akan menghentikan plugin browser.
Prinsip
Ada lima tujuan utama dalam penciptaan bahasa Java:
- Harus “sederhana, berorientasi objek, dan familiar”. (“simple, object-oriented, and familiar”)
- Harus “kuat dan aman”. (“robust and secure”)
- Harus “arsitektur-netral dan portabel”. (“architecture-neutral and portable”)
- Harus dijalankan dengan “performa tinggi”. (“high performance”)
- Harus “ditafsirkan, diulang, dan dinamis”.(“interpreted, threaded, and dynamic”)
Versi
Pada 2017, baik Java 8 dan 9 secara resmi didukung. Versi rilis utama Java, beserta tanggal rilisnya:
- JDK 1.0 (23 Januari 1996)
- JDK 1.1 (19 Februari 1997)
- J2SE 1.2 (8 Desember 1998)
- J2SE 1.3 (8 Mei 2000)
- J2SE 1.4 (6 Februari 2002)
- J2SE 5.0 (30 September 2004)
- Java SE 6 (11 Desember 2006)
- Java SE 7 (28 Juli 2011)
- Java SE 8 (18 Maret 2014)
- Java SE 9 (21 September 2017)
Praktik
Platform Java
Salah satu tujuan desain Java adalah portabilitas, yang berarti bahwa program yang ditulis untuk platform Java harus berjalan sama pada kombinasi perangkat keras dan sistem operasi dengan dukungan runtime yang memadai. Hal ini dicapai dengan mengkompilasi kode bahasa Java ke representasi perantara yang disebut bytecode Java, bukan langsung ke kode mesin khusus arsitektur. Instruksi bytecode Java analog dengan kode mesin, namun dimaksudkan untuk dijalankan oleh mesin virtual (VM) yang ditulis khusus untuk perangkat keras host. Pengguna akhir umumnya menggunakan Java Runtime Environment (JRE) yang diinstal pada mesin mereka sendiri untuk aplikasi Java mandiri, atau di browser web untuk applet Java.
Perpustakaan standar menyediakan cara generik untuk mengakses fitur khusus host seperti grafis, threading, dan networking.
Penggunaan bytecode universal membuat port sederhana. Namun, biaya overhead untuk menafsirkan bytecode ke dalam instruksi mesin yang dibuat program interpretasi hampir selalu berjalan lebih lambat daripada executable native. Kompiler just-in-time (JIT) yang mengkompilasi bytecode ke kode mesin saat runtime diperkenalkan dari tahap awal. Java sendiri adalah platform-independen dan disesuaikan dengan platform tertentu yang dijalankan oleh mesin virtual Java untuk itu, yang menerjemahkan bytecode Java ke dalam bahasa mesin platform.
Implementasi
Oracle Corporation adalah pemilik implementasi resmi platform Java SE saat ini, setelah mengakuisisi Sun Microsystems pada tanggal 27 Januari 2010. Implementasi ini didasarkan pada implementasi Java yang asli oleh Sun. Implementasi Oracle tersedia untuk Microsoft Windows (masih berfungsi untuk XP, sementara versi yang baru saja didukung secara resmi), macos, Linux, dan Solaris. Karena Java tidak memiliki standarisasi formal yang diakui oleh Ecma International, ISO/IEC, ANSI, atau organisasi standar pihak ketiga lainnya, penerapan Oracle adalah standar de facto.
Implementasi Oracle dikemas dalam dua distribusi yang berbeda: Java Runtime Environment (JRE) yang berisi bagian-bagian dari platform Java SE yang dibutuhkan untuk menjalankan program Java dan ditujukan untuk pengguna akhir, dan Java Development Kit (JDK), yang dimaksudkan untuk pengembang perangkat lunak dan termasuk alat pengembangan seperti compiler Java, Javadoc, Jar, dan debugger.
OpenJDK adalah implementasi Java SE lainnya yang memiliki lisensi di bawah GNU GPL. Implementasinya dimulai saat Sun mulai merilis kode sumber Java di bawah GPL. Pada Java SE 7, OpenJDK adalah implementasi referensi Java resmi.
Tujuan Java adalah untuk membuat semua implementasi Java yang kompatibel. Secara historis, lisensi merek dagang Sun untuk penggunaan merek Java menegaskan bahwa semua implementasi “kompatibel”. Hal ini mengakibatkan perselisihan hukum dengan Microsoft setelah Sun mengklaim bahwa implementasi Microsoft tidak mendukung RMI atau JNI dan telah menambahkan fitur khusus platform mereka sendiri. Sun menuntut pada tahun 1997 dan pada tahun 2001, memenangkan penyelesaian sebesar US $ 20 juta, serta perintah pengadilan yang memberlakukan persyaratan lisensi dari Sun. Akibatnya, Microsoft tidak lagi mengapalkan Java dengan Windows.
Platform-independent Java sangat penting untuk Java EE, dan validasi yang lebih ketat pun diperlukan untuk mengesahkan sebuah implementasi. Lingkungan ini memungkinkan aplikasi sisi server portabel.
Kinerja
Program yang ditulis di Java memiliki reputasi yang lebih lambat dan membutuhkan lebih banyak memori daripada yang ada di C ++. Namun, kecepatan eksekusi program Java meningkat secara signifikan dengan diperkenalkannya kompilasi just-in-time pada tahun 1997/1998 untuk Java 1.1, penambahan fitur bahasa yang mendukung analisis kode yang lebih baik (seperti kelas dalam, kelas StringBuilder, opsional asersi, dll), dan optimasi di mesin virtual Java, seperti HotSpot menjadi default untuk Sun’s JVM pada tahun 2000. Dengan Java 1.5, kinerjanya ditingkatkan dengan penambahan paket java.util.concurrent, termasuk implementasi Lock free dari ConcurrentMaps dan koleksi multi-core lainnya, dan kemudian ditingkatkan lagi dengan Java 1.6.
Beberapa platform menawarkan dukungan perangkat keras langsung untuk Java; ada mikrokontroler yang dapat menjalankan Java di perangkat keras dan bukan perangkat lunak mesin virtual Java dan beberapa pengolah berbasis ARM dapat meminta dukungan perangkat keras untuk menjalankan Java bytecode melalui opsi Jazelle mereka, meskipun sebagian besar dukungannya telah diturunkan dalam implementasi ARM saat ini. .
Manajemen Memori Otomatis
Java menggunakan kolektor sampah otomatis untuk mengatur memori dalam siklus hidup objek. Pemrogram menentukan kapan objek dibuat, dan runtime Java bertanggung jawab untuk memulihkan memori begitu objek tidak lagi digunakan. Begitu tidak ada referensi untuk suatu objek, memori yang tidak terjangkau menjadi layak untuk dibebaskan secara otomatis oleh pengumpul sampah. Sesuatu yang mirip dengan kebocoran memori mungkin masih terjadi jika kode pemrogram menyimpan referensi ke objek yang tidak lagi dibutuhkan, biasanya bila objek yang tidak lagi dibutuhkan disimpan dalam kontainer yang masih digunakan. Jika metode untuk objek yang tidak ada disebut, “pengecualian pointer nol” dilemparkan.
Salah satu ide di balik model manajemen memori otomatis Java adalah bahwa pemrogram dapat terhindar dari beban karena harus melakukan pengelolaan memori manual. Dalam beberapa bahasa, memori untuk pembuatan objek secara implisit dialokasikan pada tumpukan atau dialokasikan secara eksplisit dan dialokasikan dari tumpukan. Dalam kasus terakhir, tanggung jawab mengelola memori berada bersama pemrogram.
Jika program tidak menghilangkan objek, kebocoran memori akan terjadi. Jika program mencoba untuk mengakses atau deallocate memori yang telah deallocated, hasilnya tidak terdefinisi dan sulit diprediksi, dan program ini cenderung menjadi tidak stabil atau macet. Hal ini dapat diatasi sebagian dengan penggunaan smart pointers, namun ini menambahkan overhead dan kompleksitas. Perhatikan bahwa pengumpulan sampah tidak mencegah kebocoran memori “logis”, yaitu memori yang masih dirujuk namun tidak pernah digunakan.
Pengumpulan sampah bisa terjadi kapan saja. Idealnya, hal itu akan terjadi saat sebuah program idle. Hal ini dijamin akan dipicu jika ada cukup memori bebas pada tumpukan untuk mengalokasikan objek baru. Hal ini dapat menyebabkan sebuah program mogok sesaat. Manajemen memori eksplisit tidak mungkin dilakukan di Java.
Java tidak mendukung pointer aritmetika C/C ++, di mana alamat objek dan unsigned integer (biasanya bilangan bulat panjang) dapat digunakan secara bergantian. Hal ini memungkinkan pengumpul sampah untuk memindahkan objek yang dirujuk dan memastikan keamanan dan keamanan jenis.
Seperti pada bahasa C ++ dan beberapa bahasa berorientasi objek lainnya, variabel tipe data primitif Java tersimpan secara langsung di bidang (untuk objek) atau di stack (untuk metode) dan bukan pada tumpukan, seperti yang biasa terjadi pada data non-primitif. jenis (tapi lihat analisis escape). Ini adalah keputusan sadar oleh perancang Java karena alasan kinerja.
Java berisi beberapa jenis pengumpul sampah. Secara default, HotSpot menggunakan pengumpul sampah mengambang paralel. Namun, ada juga beberapa pengumpul sampah lainnya yang bisa digunakan untuk mengelola timbunan sampah. Untuk 90% aplikasi di Java, kolektor sampah Concurrent Mark-Sweep (CMS) sudah cukup. Oracle bertujuan untuk mengganti CMS dengan kolektor Sampah-Pertama (G1).
Karakteristik JAVA
Java memiliki karakteristik sebagai berikut :
- Sederhana:
Bahasa pemrograman Java menggunakan sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection.
- Berorientasi objek (Object Oriented):
Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman berorientasi objek memodelkan dunia nyata kedalam objek dan melakukan interaksi antar objek-objek tersebut.
- Dapat didistribusi dengan mudah:
Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya libraries networking yang terintegrasi pada Java.
- Interpreter:
Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.
- Robust:
Java mempuyai reliabilitas yang tinggi. Compiler pada Java mempunyai kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa pemrograman lain. Java mempunyai runtime-Exception handling untuk membantu mengatasi error pada pemrograman.
- Aman:
Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak sistem komputer yang menjalankan aplikasi tersebut.
- Architecture Neutral:
Program Java merupakan platform independent. Program cukup mempunyai satu buah versi yang dapat dijalankan pada platform yang berbeda dengan Java Virtual Machine.
- Portabel:
Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang.
- Performance:
Performance pada Java sering dikatakan kurang tinggi. Namun performance Java dapat ditingkatkan menggunakan kompilasi Java lain seperti buatan Inprise,Microsoft ataupun Symantec yang menggunakan Just In Time Compilers (JIT)
Sintaksis
Sintaks Java sangat dipengaruhi oleh C ++. Tidak seperti C ++, yang menggabungkan sintaks untuk pemrograman terstruktur, generik, dan berorientasi objek, Java dibangun hampir secara eksklusif sebagai bahasa berorientasi objek. Semua kode ditulis di dalam kelas dan setiap item data adalah objek, kecuali tipe data primitif, (yaitu bilangan bulat, bilangan floating-point, nilai boolean, dan karakter), yang bukan objek untuk alasan kinerja. Java menggunakan kembali beberapa aspek populer dari C ++ (seperti metode printf ()).
Tidak seperti C ++, Java tidak mendukung overloading operator atau multiple inheritance untuk kelas, meskipun multiple inheritance didukung untuk interface.
Java menggunakan komentar yang mirip dengan C ++. Ada tiga gaya komentar yang berbeda: satu gaya garis yang ditandai dengan dua garis miring (//), gaya garis ganda dibuka dengan / * dan ditutup dengan */, dan gaya komentar Javadoc dibuka dengan /** dan ditutup dengan */. Gaya berkomentar Javadoc memungkinkan pengguna menjalankan Javadoc executable untuk membuat dokumentasi untuk program ini dan dapat dibaca oleh beberapa lingkungan pengembangan terintegrasi (IDE) seperti Eclipse untuk memungkinkan pengembang mengakses dokumentasi di dalam IDE.
Struktur Program Java
Dalam pembuatan program Java yang harus diperhatikan dalam pembuatan program java adalah penulisan huruf besar dan kecil karena java memiliki sifat Case Sensitive. Berikut adalah bentuk umum dari penulisan program Java :
Pertama dalam program Java minimal terdapat sebuah class, dimana nama dari class tersebut diusahakan sama dengan nama file Java, dan setiap class harus dibuka dengan tanda „{„ dan ditutup dengan tanda „}‟.
Contoh: class coba {
(isi dari class)
}
Kedua dalam program Java terdapat fungsi main() adalah dijadikan sebagai awal pengeksekusian aplikasi Java, kode (code) yang terdapat pada metode inilah yang akan dieksekusi pertama kali.
Contoh: class coba
{
public static void main(String[] args)
{
(tulis code/ program disini)
}
}
Metode main () didefinisikan sebagai public static void, berikut penjelasannya :
public, berarti metode ini dapat dipanggil dari luar class
static, menunjukkan metode ini bersifat sama untuk semua class
void, berarti metode ini tidak mengembalikan nilai.
Argument args [] adalah array objek string argument baris-baris perintah yang dilewatkan ke kelas yang di eksekusi.
Contoh Program Sederhana JAVA
// nama file : Hello.java
class Hello {
public static void main(String[] args)
{
System.out.println(“Hello, World!”);
}
}
Pada program di atas, langkah pertama yang kita lakukan yaitu membuat class Java dengan nama ProgramPertama. Class tersebut memiliki fungsi main() dengan parameter variabel args dengan tipe array dari String. Fungsi main ini yang akan mengeksekusi statement System.out.println (“Hello World!”); untuk menampilkan kata Hello World!
Tips: Memulai Belajar Bahasa Pemrograman Java
Belajar Melalui Buku
Jika kamu termasuk orang yang mudah mengingat dengan cara membaca, maka kamu cukup pergi ke toko buku untuk membeli buku bahasa pemrograman Java, kemudian baca dan pelajari secara mendalam materi yang terdapat pada buku tersebut. Selalu perbaharui ilmu dengan cara banyak membaca buku dari penulis yang berbeda.
Bahasa Java sangat populer, sehingga kamu dapat juga membaca ebook gratis yang mudah dicari di internet selain dari buku yang berbentuk fisik. Dengan sering membaca dan mempraktekannya, lambat laun kamu akan memahami alur dari logika pemrograman Java. Kamu dapat mengunduh ebook bahasa indonesia mengenai bahasa pemrograman Java. Selain itu, terdapat pula salah satu ebook dalam bahasa inggris yang dapat dibaca untuk mempelajari bahasa pemrograman Java dengan mengunjungi tautan ini.
Belajar Melalui Video
Jika kamu termasuk orang yang lama memahami dengan cara belajar melalui buku, mungkin kamu termasuk orang yang senang akan visualisasi, dengan materi bahasa pemrograman Java yang disajikan dalam bentuk video akan memudahkan kamu dalam memahami alur dari pemrograman Java. Terdapat banyak video yang membahas mengenai Java di Youtube, Vimeo ataupun di situs konten video lainnya. Salah satu situs yang cukup terkenal yang dapat kamu coba dalam mempelajari bahasa pemrograma Java adalah LearnersTv.com.
Kursus Java
Selain belajar melalui buku atau video, kamu dapat melakukan kursus agar lebih cepat mempelajari bahasa pemrograman Java. Dengan kursus, kamu akan diajarkan oleh tutor secara langsung sehingga akan lebih memudahkan ketika bingung dalam memahami materi Java.
Kamu dapat melakukan kursus offline dengan cara mendaftarkan diri ke sebuah tempat pembelajaran programming atau kamu dapat belajar melalui kursus online yang dapat dilakukan dimana saja. Untuk kursus online, salah satu situs yang cukup terkenal dalam memberikan materi pemrograman Java adalah udemy.com.
Gabung Komunitas
Untuk memulai belajar Java, kamu bisa bertanya kepada teman yang sudah lebih dulu belajar atau gabung dengan komunitas Java. Dengan bergabung, kamu akan memiliki banyak teman yang ahli dibidang tersebut. Sehingga, akan lebih mudah bertanya ketika bingung dalam mempelajari bahasa pemrograman Java.
Selain itu, dengan bergabung di komunitas akan memberikan informasi terbaru seputar teknologi atau terkait berita terbaru seputar Java, Android dan yang lainnya. Hal itu akan memberikan wawasan lebih sehingga akan lebih terarah ketika mempelajari ilmu baru.
Learn By Doing
Setelah kamu membaca buku atau belajar bahasa pemrograman Java, kamu bisa mencoba melatih kemampuan pemrograman Java secara otodidak. Dengan konsep tantangan, kamu akan lebih semangat dalam mempelajari bahasa Java. Salah satu situs yang dapat kamu coba dalam mempelajari Java adalah programmingbydoing.com
Selain itu, kamu juga bisa belajar bahasa pemrograman Java dengan mengikuti tutorial yang mudah dicari di internet. Dengan tutorial, biasanya kita akan diajak langsung ngoding agar menghasilkan sebuah aplikasi sederhana sehingga akan lebih mudah memahami alur proses pembuatan aplikasi sampai menghasilkan sebuah aplikasi sederhana.
Nah, itulah penjelasan mengenai bahasa pemrograman Java, jika ada kekurangan mohon dimaklumi. Semoga artikel diatas bisa bermanfaat dan setidaknya bisa menambah wawasan kamu. Selamat membaca dan terima kasih