Java: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Attarinho (bicara | kontrib)
Dewinta88 (bicara | kontrib)
Fitur saranan suntingan: 3 pranala ditambahkan.
 
(330 revisi antara oleh lebih dari 100 100 pengguna tak ditampilkan)
Baris 1:
{{tentang|bahasa pemrograman komputer|pulau di [[Indonesia]]|Jawa}}
[[Bahasa pemrograman]] '''Java''' pertama, belum menggunakan versi yang dinamakan juga Oak, lahir dari projek The Green Project, yang berjalan selama 18 bulan, dari mulai awal tahun 1991 hingga musim panas 1992.Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, [[James Gosling]] dan Bill Joy beserta sembilan programmer lainnya dari [[Sun Microsystems]]. Salah satu hasil dari proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.
{{redirect|Bahasa Java|bahasa daerah Jawa|Bahasa Jawa}}
{{Infobox programming language
| name = Java
| logo = [[Berkas:Java Logo.svg|100px]]
| paradigm = [[Paradigma pemrograman#Multiparadigma|Multiparadigma]]: [[pemrograman generik|generik]], [[Pemrograman berorientasi objek|OOP]] ([[Pemrograman berbasis kelas]]), [[pemrograman fungsional|fungsional]], [[pemrograman imperatif|imperatif]], [[Reflektif (pemrograman komputer)|reflektif]], [[Komputasi bersamaan|bersamaan]]
| year = {{Start date and age|1995|5|23}}<ref>{{cite magazine|url=https://www.forbes.com/sites/oracle/2015/05/20/javas-20-years-of-innovation/|title=Java's 20 Years of Innovation|magazine=Forbes|date=May 20, 2015|access-date=March 18, 2016|author=Binstock, Andrew|archive-url=https://web.archive.org/web/20160314102242/http://www.forbes.com/sites/oracle/2015/05/20/javas-20-years-of-innovation/|archive-date=March 14, 2016|url-status=live|df=mdy-all}}</ref>
| designer = [[James Gosling]]
| developer = [[Oracle Corporation]]
| typing = [[tipe sistem|Statis, kuat, aman]], [[sistem tipe nominal|nominatif]], [[pengetikan manifes|manifest]]
| implementations = Kompiler: [[OpenJDK]] (javac, sjavac), [[GNU Compiler for Java]] (GCJ), Eclipse Compiler for Java (ECJ)<br />Mesin virtual: OpenJDK JRE, [[JRockit|Oracle JRockit]], [[Azul Systems|Azul Zing]], [[OpenJ9|IBM J9]], [[Excelsior JET]], Gluon VM, [[Microsoft Java Virtual Machine|Microsoft JVM]], [[Apache Harmony]]<br />Kompiler JIT: [[HotSpot (mesin virtual)|HotSpot]], [[GraalVM]], [[Azul Systems|Azul Falcon (LLVM)]]
| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}}
| latest release date = {{start date|{{wikidata|qualifier|single|P548=Q2804309|P348|P577}}}}
| latest preview version = {{wikidata|property|edit|reference|P548=Q51930650|P348}}
| dialects =
| influenced_by = [[CLU (bahasa pemrograman)|CLU]],<ref name="BarbaraLiskov">{{cite book |title=Program Development in Java - Abstraction, Specification, and Object-Oriented Design|url=https://archive.org/details/programdevelopme0000lisk|author=[[Barbara Liskov]] with [[John Guttag]]|isbn=9780201657685|publisher=USA, Addison Wesley|year=2000}}</ref> [[Simula67]],<ref name="BarbaraLiskov"/> [[Lisp (bahasa pemrograman)|Lisp]],<ref name="BarbaraLiskov"/> [[Smalltalk]],<ref name="BarbaraLiskov"/> [[Ada (bahasa pemrograman)|Ada 83]], [[C++]],<ref>{{cite web|url={{Google books|0rUtBAAAQBAJ|page=PA133|plainurl=yes}}|title=Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans|first=Harry H.|last=Chaudhary|access-date=2016-05-29|date=2014-07-28}}</ref> [[C Sharp (bahasa pemrograman)|C#]],<ref>Java&nbsp;5.0 menambahkan beberapa fitur bahasa baru ([[foreach loop|enhanced for loop]], [[object type (object-oriented programming)#Autoboxing|autoboxing]], [[variadic function|varargs]] dan [[Anotasi Java|anotasi]]), setelah mereka diperkenalkan di tempat yang sama (dan bersaing) bahasa
[[C Sharp (bahasa pemrograman)|C#]]. [http://www.barrycornelius.com/papers/java5/] {{Webarchive|url=https://web.archive.org/web/20110319065438/http://www.barrycornelius.com/papers/java5/|date=March 19, 2011}} [http://www.levenez.com/lang/] {{Webarchive|url=https://web.archive.org/web/20060107162045/http://www.levenez.com/lang/|date=January 7, 2006}}</ref> [[Eiffel (programming language)|Eiffel]],<ref>{{cite web|author1=Gosling, James|author2=McGilton, Henry|title=The Java Language Environment|date=May 1996|url=https://www.oracle.com/technetwork/java/langenv-140151.html|access-date=May 6, 2014|archive-url=https://web.archive.org/web/20140506214653/http://www.oracle.com/technetwork/java/langenv-140151.html|archive-date=May 6, 2014|url-status=live|df=mdy-all}}</ref> [[Mesa (bahasa pemrograman)|Mesa]],<ref>{{cite web|author1=Gosling, James|author2=Joy, Bill|author3=Steele, Guy|author4=Bracha, Gilad|title=The Java Language Specification, 2nd Edition|url=https://java.sun.com/docs/books/jls/second_edition/html/intro.doc.html#237601|access-date=February 8, 2008|archive-url=https://web.archive.org/web/20110805051057/http://java.sun.com/docs/books/jls/second_edition/html/intro.doc.html#237601|archive-date=August 5, 2011 |url-status=live |df=mdy-all}}</ref> [[Modula-3]],<ref>{{cite web|url=http://www.computerworld.com.au/index.php/id;1422447371;pp;3;fp;4194304;fpid;1|title=The A-Z of Programming Languages: Modula-3|publisher=Computerworld.com.au|access-date=2010-06-09|url-status=dead|archive-url=https://web.archive.org/web/20090105145818/http://www.computerworld.com.au/index.php/id%3B1422447371%3Bpp%3B3%3Bfp%3B4194304%3Bfpid%3B1|archive-date=January 5, 2009|df=mdy-all}}</ref> [[Oberon (programming language)|Oberon]],<ref>[[Niklaus Wirth]] stated on a number of public occasions, e.g. in a lecture at the Polytechnic Museum, Moscow in September 2005 (several independent first-hand accounts in Russian exist, e.g. one with an audio recording: {{cite web|author=Filippova, Elena|title=Niklaus Wirth's lecture at the Polytechnic Museum in Moscow|date=September 22, 2005|url=http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1155|access-date=November 20, 2011|archive-date=December 1, 2020|archive-url=https://web.archive.org/web/20201201054813/http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1155|url-status=live}}), that the Sun Java design team licensed the Oberon compiler sources a number of years prior to the release of Java and examined it: a (relative) compactness, type safety, garbage collection, no multiple inheritance for classes{{snd}} all these key overall design features are shared by Java and Oberon.</ref> [[Objective-C]],<ref>[[Patrick Naughton]] cites [[Objective-C]] as a strong influence on the design of the Java programming language, stating that notable direct derivatives include Java interfaces (derived from Objective-C's [[Objective-C#Protocols|protocol]]) and primitive wrapper classes. [http://cs.gmu.edu/~sean/stuff/java-objc.html] {{Webarchive|url=https://web.archive.org/web/20110713014816/http://cs.gmu.edu/~sean/stuff/java-objc.html|date=July 13, 2011}}</ref> [[UCSD Pascal]],<ref>{{cite web|url=http://www.fscript.org/prof/javapassport.pdf|quote=The project went ahead under the name ''green'' and the language was based on an old model of [[UCSD Pascal]], which makes it possible to generate interpretive code.|title=History of Java|work=Java Application Servers Report|author=TechMetrix Research|year=1999|url-status=dead|archive-url=https://web.archive.org/web/20101229090912/http://www.fscript.org/prof/javapassport.pdf|archive-date=December 29, 2010|df=mdy-all}}</ref><ref>{{cite web|url=http://queue.acm.org/detail.cfm?id=1017013|title=A Conversation with James Gosling – ACM Queue |publisher=Queue.acm.org|date=August 31, 2004|access-date=2010-06-09|archive-url=https://web.archive.org/web/20150716194245/http://queue.acm.org/detail.cfm?id=1017013|archive-date=July 16, 2015|url-status=live|df=mdy-all}}</ref> [[Object Pascal]]<ref>In the summer of 1996, Sun was designing the precursor to what is now the event model of the AWT and the JavaBeans component architecture. Borland contributed greatly to this process. We looked very carefully at Delphi Object Pascal and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs.[https://web.archive.org/web/20120627043929/http://java.sun.com/docs/white/delegates.html White Paper About Microsoft's Delegates]</ref>
| influenced = [[Ada (bahasa pemrograman)|Ada 2005]], [[BeanShell]], [[C Sharp (bahasa pemrograman)|C#]], [[Chapel (bahasa pemrograman)|Chapel]],<ref name="chplspec">{{cite web|title=Chapel spec (Acknowledgements)|url=http://chapel.cray.com/spec/spec-0.98.pdf|date=2015-10-01|access-date=2016-01-14|publisher=Cray Inc.|archive-url=https://web.archive.org/web/20160205114946/http://chapel.cray.com/spec/spec-0.98.pdf|archive-date=February 5, 2016|url-status=live|df=mdy-all}}</ref> [[Clojure]], [[ECMAScript]], [[Fantom (bahasa pemrograman)|Fantom]], [[Gambas]],<ref name="gambas">{{cite web|url=http://gambaswiki.org/wiki/doc/intro?nh&l=en|title=Gambas Documentation Introduction|publisher=Gambas Website|access-date=2017-10-09|archive-url=https://web.archive.org/web/20171009041815/http://gambaswiki.org/wiki/doc/intro?nh&l=en|archive-date=October 9, 2017|url-status=live|df=mdy-all}}</ref> [[Groovy (bahasa pemrograman)|Groovy]], [[Hack (bahasa pemrograman)|Hack]],<ref>{{cite magazine|url=http://www.infoworld.com/article/2610885/facebook-q-a--hack-brings-static-typing-to-php-world.html|title=Facebook Q&A: Hack brings static typing to PHP world|magazine=InfoWorld|date=March 26, 2014|access-date=2015-01-11|archive-url=https://web.archive.org/web/20150213220946/http://www.infoworld.com/article/2610885/facebook-q-a--hack-brings-static-typing-to-php-world.html|archive-date=February 13, 2015|url-status=live|df=mdy-all}}</ref> [[Haxe (bahasa pemrograman)|Haxe]], [[J Sharp|J#]], [[Kotlin (bahasa pemrograman)|Kotlin]], [[PHP]], [[Python (bahasa pemrograman)|Python]], [[Scala (bahasa pemrograman)|Scala]], [[Seed7]], [[Vala (bahasa pemrograman)|Vala]], [[JavaScript]], [[JS++]]
| File format = .java, [[berkas kelas Java|.class]], [[JAR (format berkas)|.jar]], .jmod
}}
 
'''Java''' adalah [[bahasa pemrograman]] yang dapat dijalankan di berbagai [[komputer]] termasuk [[telepon genggam]]. Bahasa ini awalnya dibuat oleh [[James Gosling]] saat masih bergabung di [[Sun Microsystems]], yang saat ini merupakan bagian dari [[Oracle Corporation|Oracle]] dan dirilis tahun 1995. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada [[C (bahasa pemrograman)|C]] dan [[C++]] namun dengan sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. Aplikasi-aplikasi berbasis Java umumnya dikompilasi ke dalam [[p-code]] (''bytecode'') dan dapat dijalankan pada berbagai [[Mesin virtual java|Mesin Virtual Java (JVM)]].
Pertemuan ini berlangsung di sebuah gedung perkantoran Sand Hill Road di Menlo Park.Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program Java Oak pertama, yang diperuntukkan sebagai pengkontrol sebuah peralatan dengan tehnologi touch screen,seperti pada PDA sekarang ini. Tehnologi baru ini dinamakan "*7" (Star Seven).
 
Java merupakan bahasa pemrograman yang bersifat umum/non-spesifik (''general purpose''), dan secara khusus didesain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan aplikasi Java mampu berjalan di beberapa platform [[sistem operasi]] yang berbeda, Java dikenal pula dengan slogannya, "''Tulis sekali, jalankan di mana pun''". Saat ini Java merupakan bahasa pemrograman yang paling populer digunakan{{Butuh rujukan}}, dan secara luas dimanfaatkan dalam pengembangan berbagai jenis [[perangkat lunak]].
Era setelah star seven selesai, sebuah anak perusahaan TV kabel tertarik ditambah beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah ruangan kantor di 100 Hamilton Avenue Palo Alto.
 
[[Oracle Corporation|Oracle]] (dan yang lainnya) sangat merekomendasikan untuk menghapus versi lawas dan tidak didukung dari Java, karena masalah keamanan yang belum terselesaikan di versi lama.<ref>{{Cite web|title=Why should I uninstall older versions of Java from my system?|url=https://www.java.com/en/download/faq/remove_olderversions.xml|publisher=Oracle|archive-url=https://web.archive.org/web/20180212011608/https://java.com/en/download/faq/remove_olderversions.xml|archive-date=February 12, 2018|access-date=2021-09-24|url-status=live}}</ref> Oracle menyarankan para penggunanya untuk segera bertransisi ke versi yang didukung, seperti salah satu versi LTS (8, 11, 17).
Perusahaan baru ini semakin bertambah maju, dalam waktu singkat menambah jumlah anggotanya dari 13 orang menjadi 70 orang.Rentang waktu ini juga ditetapkan bahwa internet merupakan medium yang menjebatani kerja dan ide antara mereka.Era awal tahun 1990an, internet masih merupakan hal rintisan, yang dipakai untuk kalangan akademisi dan militer saja.
 
Pada Maret 2023, Java 20 adalah versi terbaru, sedangkan Java 17, 11 dan 8 adalah versi [[Long-term support]] (LTS) saat ini.
Mereka menjadikan webbrowser Mosaic,sebagai landasan awal untuk membuat java browser pertama yang dinamakan "Web Runner", diinsipirasikan dari film 80an , Blade Runner. Perkembangan release pertama, Web Runner berganti nama menjadi Hot Java.
 
== Sejarah perkembangan ==
Sekitar bulan maret 1995, untuk pertama kali dibuka kode asli java versi 1.0a2. Kesuksesan mereka diikuti dengan untuk pertama kali diberitakan dalam surat kabar ''San Jose Mercury News'' pada tanggal [[23 Mei]] [[1995]].
[[Berkas:Duke (Java mascot) waving.svg|jmpl|Duke, si [[maskot]] Java|100px]]
[[Berkas:James Gosling 2008.jpg|jmpl|200px|James Gosling, pembuat dari Java, pada 2008]]
[[Bahasa pemrograman]] Java terlahir dari [[The Green Project]], yang berjalan selama 18 bulan, yaitu dari awal tahun 1991 hingga musim panas 1992. Proyek ini awalnya diciptakan untuk televisi interaktif <ref>{{Webarchive|url=https://web.archive.org/web/20100210225651/http://www.java.com/en/javahistory/|title=The History of Java Technology|date=10 Februari 2010}}</ref>, dimana awalnya bahasa ini dinamakan [[Oak]]. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, dan [[James Gosling]], beserta sembilan pemrogram lainnya dari [[Sun Microsystems]]. Salah satu hasil proyek ini adalah maskot ''Duke'' yang dibuat oleh [[Joe Palrang]].
 
Pertemuan proyek berlangsung di sebuah gedung perkantoran ''Sand Hill Road'' di [[Menlo Park, California|Menlo Park]]. Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program ''Java Oak'' pertama, yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar sentuh (''touch screen''), seperti pada perangkat [[asisten digital pribadi]] sekarang ini. Teknologi baru ini dinamai "*7" (''Star Seven'').
Sayangnya terjadi perpecahan diantara mereka pada jam 4 pagi disebuah ruangan hotel Sheraton Palace. Tiga dari pimpinan utama proyek Eric Schmidt dan George Paolini dari Sun Microsystems bersama Marc Andreessen membentuk Netscape.
 
Setelah era ''Star Seven'' selesai, sebuah anak perusahaan [[TV kabel]] tertarik ditambah beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah ruangan kantor di 100 Hamilton Avenue, [[Palo Alto]].
Nama Oak, diambil dari pohon oak yang tumbuh didepan jendela ruangan kerja "bapak java", James Gosling. Nama Oak ini tidak dipakai untuk versi release java karena sudah terdaftar software dengan merek dagang itu, sehingga diambil nama penggantinya menjadi "Java", diambil dari nama kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan bapak Gosling.
 
Perusahaan baru ini bertambah maju: jumlah karyawan meningkat dalam waktu singkat dari 13 menjadi 70 orang. Pada rentang waktu ini juga ditetapkan pemakaian [[internet]] sebagai medium yang menjembatani kerja dan ide di antara mereka. Pada awal tahun 1990-an, internet masih merupakan rintisan, yang dipakai hanya di kalangan [[akademisi]] dan [[militer]].
== Versi Awal ==
 
Mereka menjadikan [[peramban]] (''browser'') [[Mosaic]] sebagai landasan awal untuk membuat perambah Java pertama yang dinamai Web Runner, terinsipirasi dari film 1980-an, Blade Runner. Pada perkembangan rilis pertama, Web Runner berganti nama menjadi Hot Java.
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:
 
* <code>java.lang</code>: Peruntukan kelas elemen-elemen dasar.
Pada sekitar bulan Maret 1995, untuk pertama kali [[kode sumber]] Java versi 1.0a2 dibuka. Kesuksesan mereka diikuti dengan untuk pemberitaan pertama kali pada surat kabar ''San Jose Mercury News'' pada tanggal 23 Mei 1995.
* <code>java.io</code>: Peruntukan kelas input dan output, termasuk penggunaan file.
 
* <code>java.util</code>: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.
Sayang terjadi perpecahan di antara mereka suatu hari pada pukul 04.00 di sebuah ruangan hotel [[Sheraton Palace]]. Tiga dari pimpinan utama proyek, [[Eric Schmidt]] dan [[George Paolini]] dari [[Sun Microsystems]] bersama [[Marc Andreessen]], membentuk [[Netscape]].
 
Pada awalnya, bahasa ini dinamakan sebagai Oak yang diambil dari pohon [[Pasang (pohon)|oak]] yang tumbuh di depan jendela ruangan kerja "Bapak Java", [[James Gosling]]. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak lain sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi "Java". Nama ini diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan Gosling. Konon kopi ini berasal dari Pulau [[Jawa]]. Jadi nama bahasa pemrograman Java tidak lain berasal dari kata Jawa ([[bahasa Inggris]] untuk Jawa adalah Java).
 
== Versi ==
Versi awal Java pada tahun 1996 sudah merupakan versi rilis sehingga dinamakan Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya:
* <code>java. Lang</code>: Peruntukan kelas elemen-elemen dasar.
* <code>java.io</code>: Peruntukan kelas ''input'' dan ''output'', termasuk penggunaan berkas.
* <code>java.util</code>: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas-kelas penanggalan.
* <code>java.net</code>: Peruntukan kelas [[TCP/IP]], yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.
* <code>java.awt</code>: Kelas dasar untuk aplikasi antar mukaantarmuka dengan pengguna (GUI)
* <code>java.applet</code>: Kelas dasar aplikasi antar muka untuk diterapkan pada webbrowserpenjelajah web.
<!-- tag tak netral dipindah ke bagian yang tak netral (bagian IDE) -->
=== Riawayat versi ===
{{Main|riwayat versi Java}}
{{As of|2021|09}}, Java 8, 11, dan 17 didukung sebagai versi [[Long-term support|Long-Term Support]] (LTS).<ref>{{cite web|date=September 13, 2021|title=Oracle Java SE Support Roadmap|url=https://www.oracle.com/java/technologies/java-se-support-roadmap.html|publisher=Oracle|archive-url=https://web.archive.org/web/20210919090451/https://www.oracle.com/java/technologies/java-se-support-roadmap.html|archive-date=2021-09-19|access-date=September 18, 2021|url-status=live}}</ref>
 
Perilisan utama dari Java, bersama dengan tanggal perilisannya:
{{taknetral}}
{| class="wikitable"
!Versi
!Tanggal
|-
|JDK [[Versi beta|Beta]]
|1995
|-
|JDK 1.0
|23 Januari 1996<ref>{{cite web|title=JAVASOFT SHIPS JAVA 1.0|url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml|website=sun.com|archive-url=https://web.archive.org/web/20070310235103/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml|archive-date=March 10, 2007|access-date=2008-02-05|url-status=dead}}</ref>
|-
|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 (LTS)
|18 Maret 2014
|-
|Java SE 9
|21 September 2017
|-
|Java SE 10
|20 Maret 2018
|-
|Java SE 11 (LTS)
|25 September 2018<ref>{{cite web|last=Chander|first=Sharat|title=Introducing Java SE 11|url=https://blogs.oracle.com/java-platform-group/introducing-java-se-11|website=oracle.com|archive-url=https://web.archive.org/web/20180926093144/https://blogs.oracle.com/java-platform-group/introducing-java-se-11|archive-date=September 26, 2018|access-date=September 26, 2018|url-status=live}}</ref>
|-
|Java SE 12
|19 Maret 2019
|-
|Java SE 13
|17 September 2019
|-
|Java SE 14
|17 Maret 2020
|-
|Java SE 15
|15 September 2020<ref>{{cite web|date=September 15, 2020|title=The Arrival of Java 15!|url=https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15|publisher=[[Oracle Corporation|Oracle]]|archive-url=https://web.archive.org/web/20200916092332/https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15|archive-date=September 16, 2020|access-date=2020-09-15|url-status=live}}</ref>
|-
|Java SE 16
|16 Maret 2021
|-
|Java SE 17 (LTS)
|14 September 2021
|-
|Java SE 18
|22 Maret 2022
|-
|Java SE 19
|20 September 2022
|-
|Java SE 20
|21 Maret 2023
|-
|Java SE 21
|19 September 2023
|-
|Java SE 22
|19 Maret 2024
|-
|Java SE 23
|17 September 2024
|}
 
== Kelebihan dan kekurangan ==
 
=== Kelebihan ===
* ''Multiplatform''. Kelebihan utama dari Java ialah dapat dijalankan di beberapa ''platform''/sistem operasi komputer, sesuai dengan prinsip ''write once, run every where''. 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]].
*'''''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 di atas 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]]. Penyebabnya 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), Java merupakan salah satu bahasa pemrograman dengan [http://www.teknoinspira.net/2016/12/konsep-object-oriented-programming-oop.html konsep OOP] {{Webarchive|url=https://web.archive.org/web/20170118220245/http://www.teknoinspira.net/2016/12/konsep-object-oriented-programming-oop.html |date=2017-01-18 }}. Di mana program yang dibangun berorientasikan kepada Object. Aplikasi yang dibangun dengan konsep OOP terdiri atas object-object yang saling berhubungan
* '''Perpustakaan Kelas Yang Lengkap''', Java terkenal dengan kelengkapan ''library''/[[perpustakaan (pemrograman)|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 Serikat]] 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 (ilmu 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 ===
* '''[[OOP]]''', singkatan dari Object Oriented Programming yang artinya semua aspek yang terdapat di Java adalah objek. Java merupakan salah satu bahasa pemrograman berbasis object murni. Semua tipe data diturunkan dari kelas dasar Object. Hal ini sangat memudahkan programmer 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.
*'''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/di''reverse-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.
 
== Sintaks ==
* '''Library Kelas Sangat Lengkap''' {{fact}}, Java terkenal dengan kelengkapan ''library'' (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para programmer untuk membangun aplikasinya. Kelengkapan ''library'' ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat ''library-library'' baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
Contoh program [[Hello world|Halo dunia]] yang ditulis menggunakan bahasa pemrograman Java adalah sebagai berikut:
 
<!--
* '''Bergaya C++''', memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak programmer C++ untuk pindah ke Java. Saat ini pengguna java sangat banyak, sebagian besar adalah programmer C++ yang pindah ke Java.
NOTE:
PLEASE *don't* change the example code; it's written in Sun's recommended style.
-->
<syntaxhighlight lang="java">
// Outputs "Hello, world!" and then exits
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello, world!");
}
}
</syntaxhighlight>Semua file sumber harus dinamai setelah berisi ''public class'', menambahkan suffix <code>.java</code>, sebagai contoh, <code>HelloWorldApp.java</code>. Itu harus terlebih dahulu dikompilasi menjadi bytecode, menggunakan sebuah [[kompiler Java]], membuat sebuah file dengan suffix <code>.class</code>(<code>HelloWorldApp.class</code>, dalam kasus ini). Hanya dengan begitu itu dapat dieksekusi atau diluncurkan. File sumber Java hanya boleh berisi satu ''public class'', tapi itu dapat berisi beberapa ''class'' dengan pengubah akses non-publik dan sejumlah [[Class dalam|''class'' dalam]] publik. Saat file sumber memiliki beberapa ''Class'', perlu untuk membuat satu class (diperkenalkan oleh kata kunci<code>'''class'''</code>) publik (didahului oleh kata kunci <code>'''public'''</code>) dan beri nama file sumber dengan nama ''public class'' itu.
 
=== Contoh dengan metode ===
* '''[[Garbage Collection]]''', memiliki fasilitas pengaturan penggunaan memori sehingga programmer tidak perlu melakukan pengaturan memori secara langsung.
<syntaxhighlight lang="java" line="1">
// Ini adalah dari komen satu baris menggunakan dua garis miring
 
/*
== Kekurangan ==
* Ini adalah contoh komentar beberapa baris menggunakan garis miring dan tanda bintang.
* Jenis komentar ini dapat digunakan untuk menyimpan banyak informasi atau menonaktifkan
* kode, tetapi sangat penting untuk diingat untuk menutup komentar.
*/
 
package fibsandlies;
* ''Write once, debug everywhere'' - 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.
 
import java.util.Map;
* '''Mudah didekompilasi'''. Dekompilasi adalah proses membalikkan dari executable code menjadi source code. Ini dimungkinkan karena executable Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, method, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan.
import java.util.HashMap;
 
/**
* '''Heavy memory usage'''. 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 desktop berumur lebih dari 4 tahun.
* Ini adalah contoh komentar Javadoc; Javadoc dapat mengkompilasi dokumentasi
* dari teks ini. Komentar Javadoc harus segera mendahului kelas, metode,
* atau bidang yang didokumentasikan.
* @author Relawan Wikipedia
*/
public class FibCalculator extends Fibonacci implements Calculator {
private static Map<Integer, Integer> memoized = new HashMap<>();
 
/*
* Metode utama yang ditulis sebagai berikut digunakan oleh JVM sebagai titik awal
* untuk program.
*/
public static void main(String[] args) {
memoized.put(1, 1);
memoized.put(2, 1);
System.out.println(fibonacci(12)); // Mendapatkan nomor Fibonacci ke-12 dan print ke konsol
}
 
/**
* Contoh metode yang ditulis dalam Java, dibungkus dalam class.
* Diberikan angka non-negatif FIBINDEX, return
* angka Fibonacci ke-N, di mana N sama dengan FIBINDEX.
*
* @param fibIndex Indeks angka Fibonacci
* @return Nomor Fibonacci
*/
public static int fibonacci(int fibIndex) {
if (memoized.containsKey(fibIndex)) {
return memoized.get(fibIndex);
}
 
int jawaban = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2);
memoized.put(fibIndex, jawaban);
return jawaban;
}
}
</syntaxhighlight>
 
== Hello WorldDokumentasi ==
{{Main|Javadoc}}
Contoh program [[Hello World]] yang ditulis menggunakan bahasa pemrograman Java adalah sebagai berikut:
Javadoc adalah sistem dokumen komprehensif, dibuat oleh [[Sun Microsystems]]. Itu menyediakan pengembang dengan sebuah sistem terorganisir untuk mendokumentasi kode mereka. Komentar Javadoc memiliki tanda bintang ekstra di awal, yaitu pembatas adalah <code>/**</code> dan <code>*/</code>, sedangkan komentar multi-baris normal di Java dibatasi oleh <code>/*</code> dan <code>*/</code>, dan komentar baris tunggal dimulai dengan <code>//</code>.<ref name="javadoc_comments">{{cite web|title=How to Write Doc Comments for the Javadoc Tool|url=https://www.oracle.com/technetwork/articles/java/index-137868.html|work=Oracle Technology Network|publisher=Oracle|archive-url=https://web.archive.org/web/20141218182906/http://www.oracle.com/technetwork/articles/java/index-137868.html|archive-date=December 18, 2014|access-date=December 18, 2014|url-status=live|df=mdy-all}}</ref>
 
== Tahap kompilasi == <!-- bahasanya masih perlu diindonesiakan -->
class HelloWorld
# Tulis / Ubah. Pemrogram menulis program dan menyimpannya di media dalam bentuk berkas '.java'.
{
# Kompilasi. Pengkompilasi membentuk ''bytecodes'' dari program menjadi bentuk berkas '.class'.
public static void main(String[] args)
# Muat. Pemuat kelas memuat ''bytecodes'' ke memori.
{
# Verifikasi. Peng-verifikasi memastikan ''bytecodes'' tidak mengganggu sistem keamanan Java.
System.out.println("Hello World");
# Jalankan. Penerjemah menerjemahkan ''bytecodes'' ke bahasa mesin.tidak bisa di pakai‘’
}
}
 
== Integrated Development Environment == <!-- haruskah diganti ke lingkungan pengembangan terintegrasi ? -->
Banyak pihak telah membuat [[IDE]] (''Integrated Development Environment'' - Lingkungan Pengembangan Terintegrasi) untuk Java. Yang populer saat ini (Juli 2006) antara lain:
* [http://www.drjava.org Dr. Java, program gratis yang dikembangkan oleh [[Universitas Rice]], [[Amerika Serikat]]][[Universitas Rice]][[Universitas Rice]]
* [http://www.netbeans.org/products/ide/ NetBeans] (open source- [http://www.netbeans.org/about/legal/license.html Common Development and Distribution License (CDDL)])
* [http://www.bluej.org BlueJ, program gratis yang dikembangkan oleh [[Universitas Monash]], [[Australia]]]
NetBeans disponsori Sun Microsystems, dan versi terkininya memilki Matisse, sebuah GUI Editor yang menurut pendapat umum merupakan yang terbaik.
* [http://www.eclipsenetbeans.org/jdt Eclipseproducts/ide/ JDTNetBeans] (open source- [http://www.eclipsenetbeans.org/orgabout/documentslegal/epl-v10license.phphtml EclipseCommon PublicDevelopment and Distribution License] (CDDL)] {{Webarchive|url=https://web.archive.org/web/20060713050255/http://www.netbeans.org/about/legal/license.html |date=2006-07-13 }})
NetBeans disponsori Sun Microsystems, dan versi terkininya memilki Matisse, sebuah GUI Editor yang menurut pendapat umum merupakan yang terbaik. {{fact}}
[Eclipse] dibuat dari kerja sama antara perusahaan-perusahaan anggota 'Eclipse Foundation' (beserta individu-individu lain). Banyak nama besar yang ikut dalam 'Eclipse Foundation', termasuk IBM, BEA, Intel, Nokia, Borland. Eclipse bersaing langsung dengan Netbeans IDE. Plugin tambahan pada Eclipse jauh lebih banyak dan bervariasi dibandingkan IDE lainnya.
* [http://www.eclipse.org/jdt Eclipse JDT] (open source- [http://www.eclipse.org/org/documents/epl-v10.php Eclipse Public License])
* [http://www.jetbrains.com/idea/ IntelliJ IDEA] (commercial, free 30-day trial)
[[Eclipse (perangkat lunak)|Eclipse]] dibuat dari kerja sama antara perusahaan-perusahaan anggota 'Eclipse Foundation' (beserta individu-individu lain). Banyak nama besar yang ikut dalam 'Eclipse Foundation', termasuk IBM, BEA, Intel, Nokia, Borland. Eclipse bersaing langsung dengan Netbeans IDE. Plugin tambahan pada Eclipse jauh lebih banyak dan bervariasi dibandingkan IDE lainnya.
* [http://www.oracle.com/tools/jdev_home.html Oracle JDeveloper] (free)
* [http://www.jcreatorjetbrains.com/idea/ XinoxIntelliJ JCreatorIDEA] (ada versi berbayar maupundengan free)gratis 30-hari trial dan versi community untuk pengembangan Android)
* [http://www.oracle.com/tools/jdev_home.html Oracle JDeveloper] {{Webarchive|url=https://web.archive.org/web/20080514041909/http://www.oracle.com/tools/jdev_home.html |date=2008-05-14 }} (gratis)
JCreator ditulis dalam C/C++ sehingga lebih cepat (dan menggunakan memori lebih sedikit) dari kebanyakan IDE lain.
* [http://www.jcreator.com/ Xinox JCreator] {{Webarchive|url=https://web.archive.org/web/20090228185850/http://www.jcreator.com/ |date=2009-02-28 }} (ada versi berbayar maupun gratis)
JCreator ditulis dalam C/C++ sehingga lebih cepat (dan menggunakan memori lebih sedikit) dari kebanyakan.
 
== Referensi ==
{{Reflist|25em}}
 
== Karya dikutip ==
{{refbegin}}
* {{cite book|last1=Gosling|first1=James|last2=Joy|first2=Bill|last3=Steele|first3=Guy|last4=Bracha|first4=Gilad|last5=Buckley|first5=Alex|date=2014|url=https://docs.oracle.com/javase/specs/jls/se8/jls8.pdf|title=The Java® Language Specification|edition=Java SE 8|access-date=November 18, 2014|archive-url=https://web.archive.org/web/20141021061951/http://docs.oracle.com/javase/specs/jls/se8/jls8.pdf|archive-date=October 21, 2014|url-status=live}}
* {{cite book|last1=Gosling|first1=James|last2=Joy|first2=Bill|last3=Steele|first3=Guy L., Jr.|last4=Bracha|first4=Gilad|year=2005|url=https://java.sun.com/docs/books/jls/index.html|title=The Java Language Specification|publisher=Addison-Wesley|isbn=0-321-24678-0|edition=3rd|author-link2=Bill Joy|author-link3=Guy L. Steele, Jr.|author-link4=Gilad Bracha|access-date=February 8, 2019|archive-url=https://web.archive.org/web/20120214061826/http://java.sun.com/docs/books/jls/index.html|archive-date=February 14, 2012|url-status=live}}
* {{cite book|last1=Lindholm|first1=Tim|last2=Yellin|first2=Frank|year=1999|url=https://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html|title=The Java Virtual Machine Specification|publisher=Addison-Wesley|isbn=0-201-43294-3|edition=2nd|access-date=February 8, 2019|archive-url=https://web.archive.org/web/20110925050249/http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html|archive-date=September 25, 2011|url-status=live}}
{{refend}}
 
== Pranala luar ==
* {{en}} [http://java.sun.com/ Situs resmi Java Sun]
*{{en}} [http://wiki.java.net/bin/view/Main/WebHome Java.net Wiki]
*{{en}} [http://ei.cs.vt.edu/~wwwbtb/book/chap1/java_hist.html Sejarah Java]
*{{id}} [http://www.jug.or.id/jugwiki/ Wiki JUG-Indonesia]
*{{en}} [http://www.faqs.org/docs/Linux-HOWTO/Java-Decompiler-HOWTO.html Decompiler-HOWTO]
 
[[Kategori:Bahasa{{Daftar bahasa pemrograman]]}}
{{Java (platform perangkat lunak)}}
{{Authority control}}
 
[[Kategori:Bahasa pemrograman]]
[[ar:جافا]]
[[Kategori:Bahasa pemrograman berorientasi objek]]
[[bg:Java]]
[[bsKategori:Platform Java programski jezik]]
[[Kategori:Sun Microsystems]]
[[ca:Llenguatge Java]]
[[Kategori:Bahasa pemrograman multiparadigma]]
[[cs:Java]]
[[daKategori:Java (programmeringssprogbahasa pemrograman)]]
[[Kategori:Bahasa pemrograman JVM]]
[[de:Java (Programmiersprache)]]
[[Kategori:Bahasa pemrograman yang dibuat pada tahun 1995]]
[[el:Java]]
[[Kategori:Keluarga bahasa pemrograman C]]
[[en:Java (programming language)]]
[[eo:Java]]
[[es:Lenguaje de programación Java]]
[[et:Java]]
[[fa:جاوا]]
[[fi:Java]]
[[fr:Java (langage)]]
[[gl:Linguaxe Java]]
[[he:Java]]
[[hr:Java (programski jezik)]]
[[hu:Java programozási nyelv]]
[[is:Java (forritunarmál)]]
[[it:Java (linguaggio)]]
[[ja:Java言語]]
[[ko:자바 프로그래밍 언어]]
[[lt:Java (kalba)]]
[[lv:Java (valoda)]]
[[mk:Јава (програмски јазик)]]
[[nl:Java (programmeertaal)]]
[[no:Java (programmeringsspråk)]]
[[pl:Java]]
[[pt:Java (linguagem de programação)]]
[[ru:Java]]
[[sk:Java]]
[[sl:Programski jezik Java]]
[[sr:Јава (програмски језик)]]
[[sv:Java (programspråk)]]
[[ta:ஜாவா நிரலாக்க மொழி]]
[[th:ภาษาจาวา]]
[[tl:Java programming language]]
[[tr:Java programlama dili]]
[[uk:Java (мова програмування)]]
[[vi:Java (ngôn ngữ lập trình)]]
[[zh:Java]]