Java (platform perangkat lunak): Perbedaan antara revisi
k Bot: Penggantian teks otomatis (-terpercaya +tepercaya) |
Fitur saranan suntingan: 3 pranala ditambahkan. Tag: VisualEditor Suntingan perangkat seluler Suntingan peramban seluler Tugas pengguna baru Disarankan: tambahkan pranala |
||
(21 revisi perantara oleh 11 pengguna tidak ditampilkan) | |||
Baris 1: | Baris 1: | ||
{{Terjemahan kaku|2=Java (software platform)}} |
|||
[[Berkas:Aspectotuxguitar.jpg|jmpl| |
[[Berkas:Aspectotuxguitar.jpg|jmpl|Program yang didukung Java]] |
||
adalah satu set [[Perangkat lunak|perangkat lunak komputer]] dan spesifikasi yang dikembangkan oleh [[Sun Microsystems]], yang kemudian diakuisisi oleh [[Oracle Corporation]], yang menyediakan sistem untuk mengembangkan [[Aplikasi|aplikasi perangkat lunak]] dan menerapkan hal itu dalam sebuah [[Lintas platform|cross-platform]] lingkungan komputasi. digunakan di berbagai macam [[Platform (komputer)|platform komputasi]] dari [[Sistem benam|perangkat embedded]] dan [[Telepon genggam|ponsel]] ke [[Peladen|server perusahaan]] dan [[superkomputer]]. Sementara mereka yang kurang umum dari standalone aplikasi Java, [[Java applet |
'''Java''' adalah satu set [[Perangkat lunak|perangkat lunak komputer]] dan spesifikasi yang dikembangkan oleh [[Sun Microsystems]], yang kemudian diakuisisi oleh [[Oracle Corporation]], yang menyediakan sistem untuk mengembangkan [[Aplikasi|aplikasi perangkat lunak]] dan menerapkan hal itu dalam sebuah [[Lintas platform|cross-platform]] lingkungan komputasi. digunakan di berbagai macam [[Platform (komputer)|platform komputasi]] dari [[Sistem benam|perangkat embedded]] dan [[Telepon genggam|ponsel]] ke [[Peladen|server perusahaan]] dan [[superkomputer]]. Sementara mereka yang kurang umum dari standalone aplikasi Java, [[Java applet]] yang berjalan di aman, lingkungan [[Sandbox (keamanan komputer)|tersandbox]] untuk memberikan banyak fitur dari aplikasi asli dan dapat tertanam ke dalam [[HTML]] halaman. |
||
Penulisan dalam [[Java|bahasa pemrograman Java]] adalah cara utama untuk menghasilkan kode yang akan digunakan sebagai [[Bytecode Java|kode byte]] pada sebuah [[Mesin Virtual Java]] (JVM); |
Penulisan dalam [[Java|bahasa pemrograman Java]] adalah cara utama untuk menghasilkan kode yang akan digunakan sebagai [[Bytecode Java|kode byte]] pada sebuah [[Mesin Virtual Java]] (JVM); bytecode [[Kompilator|compiler]] juga tersedia untuk bahasa-bahasa lain, termasuk [[Ada (bahasa pemrograman)|Ada]], [[JavaScript]], [[Python (bahasa pemrograman)|Python]], dan [[Ruby (bahasa pemrograman)|Ruby]]. Selain itu, beberapa bahasa telah dirancang untuk berjalan secara native pada JVM, termasuk Scala, Clojure, dan Apache Groovy. sintaks meminjam banyak dari [[C (bahasa pemrograman)|C]] dan [[C++]], tetapi berorientasi objek memiliki dimodelkan setelah [[Smalltalk]] dan Objective-C.<ref>{{Cite web|url=http://virtualschool.edu/objectivec/influenceOnJava.html|title=Java Was Strongly Influenced by Objective-C|last=Naughton|first=Patrick|website=Virtual School|access-date=2016-10-20|archive-date=2010-06-23|archive-url=https://web.archive.org/web/20100623082258/http://www.virtualschool.edu/objectivec/influenceOnJava.html|dead-url=yes}}</ref> eschews tertentu tingkat rendah konstruksi seperti pointer dan memiliki memori yang sangat sederhana model di mana setiap objek yang dialokasikan di heap dan semua variabel dari jenis objek referensi. Manajemen memori ditangani melalui otomatis terintegrasi [[Pengumpulan sampah (ilmu komputer)|pengumpulan sampah]] yang dilakukan oleh JVM. |
||
Pada November 13, 2006, Sun Microsystems membuat sebagian besar implementasi dari tersedia di bawah [[Lisensi Publik Umum GNU|GNU General Public License]] (GPL).<ref>{{Cite web|url=http://www.sun.com/2006-1113/feature/story.jsp|title=Sun Opens Java|date=13 November 2006|publisher=Sun Microsystems|archive-url=https://web.archive.org/web/20080513023707/http://www.sun.com/2006-1113/feature/story.jsp|archive-date=2008-05-13}}</ref><ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/build-dev/2010-December/003881.html|title=OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed|last=Kelly O'Hair|date=December 2010|publisher=[[Oracle Corporation]]|access-date=2011-11-25}}</ref> |
Pada November 13, 2006, Sun Microsystems membuat sebagian besar implementasi dari tersedia di bawah [[Lisensi Publik Umum GNU|GNU General Public License]] (GPL).<ref>{{Cite web|url=http://www.sun.com/2006-1113/feature/story.jsp|title=Sun Opens Java|date=13 November 2006|publisher=Sun Microsystems|archive-url=https://web.archive.org/web/20080513023707/http://www.sun.com/2006-1113/feature/story.jsp|archive-date=2008-05-13}}</ref><ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/build-dev/2010-December/003881.html|title=OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed|last=Kelly O'Hair|date=December 2010|publisher=[[Oracle Corporation]]|access-date=2011-11-25}}</ref> |
||
Terbaru versi Java 8, hanya didukung (misalnya dengan |
Terbaru versi Java 8, hanya didukung (misalnya dengan pembaharuan keamanan) versi 2016. Oracle (dan lain-lain) telah mengumumkan bahwa menggunakan versi yang lebih tua (dari 8) mereka JVM pelaksanaan menghadirkan risiko serius akibat belum terselesaikan masalah keamanan.<ref>{{Cite web|url=http://www.java.com/en/download/faq/remove_olderversions.xml|title=Why should I uninstall older versions of Java from my system?|publisher=Oracle|access-date=2016-09-09}}</ref><ref name="remote exploit">http://www.oracle.com/technetwork/security-advisory/cpujul2016-2881720.html#AppendixJAVA</ref><ref name="Homeland Security">{{Cite web|url=http://www.zdnet.com/homeland-security-warns-to-disable-java-amid-zero-day-flaw-7000009713/|title=Homeland Security warns to disable Java amid zero-day flaw|last=Whittaker|first=Zack|date=2013-01-11|publisher=ZDNet|access-date=2016-02-09}}</ref> |
||
== Platform == |
== Platform == |
||
Platform Java adalah seperangkat program yang memfasilitasi mengembangkan dan menjalankan program yang ditulis dalam [[Java]] bahasa pemrograman. Java platform akan mencakup eksekusi mesin (disebut [[mesin virtual]]), compiler dan satu set [[Pustaka perangkat lunak|perpustakaan]]; mungkin juga ada tambahan [[Peladen|server]] dan alternatif perpustakaan yang tergantung pada persyaratan. Java adalah tidak spesifik untuk setiap prosesor atau [[sistem operasi]] seperti Java platform telah diimplementasikan untuk berbagai macam perangkat keras dan sistem operasi dengan maksud untuk memungkinkan program Java untuk menjalankan identik pada semua dari mereka. Berbeda platform target kelas yang berbeda dari perangkat dan aplikasi domain: |
Platform Java adalah seperangkat program yang memfasilitasi mengembangkan dan menjalankan program yang ditulis dalam [[Java]] bahasa pemrograman. Java platform akan mencakup eksekusi mesin (disebut [[mesin virtual]]), compiler dan satu set [[Pustaka perangkat lunak|perpustakaan]]; mungkin juga ada tambahan [[Peladen|server]] dan alternatif perpustakaan yang tergantung pada persyaratan. Java adalah tidak spesifik untuk setiap prosesor atau [[sistem operasi]] seperti Java platform telah diimplementasikan untuk berbagai macam [[perangkat keras]] dan sistem operasi dengan maksud untuk memungkinkan program Java untuk menjalankan identik pada semua dari mereka. Berbeda platform target kelas yang berbeda dari perangkat dan aplikasi domain: |
||
* Java Card: Sebuah teknologi yang memungkinkan kecil aplikasi berbasis Java (applet) yang akan berjalan dengan aman pada [[Kartu pintar|smart card]] dan kecil yang sama-memori perangkat. |
* Java Card: Sebuah teknologi yang memungkinkan kecil aplikasi berbasis Java (applet) yang akan berjalan dengan aman pada [[Kartu pintar|smart card]] dan kecil yang sama-memori perangkat. |
||
* Java ME (Micro Edition): Menentukan beberapa set yang berbeda dari perpustakaan (dikenal sebagai profil) untuk perangkat dengan penyimpanan terbatas, layar, dan kapasitas daya. Hal ini sering digunakan untuk mengembangkan aplikasi untuk perangkat mobile, Pda, TV [[Dekoder (televisi)|set-top box]], dan printer. |
* Java ME (Micro Edition): Menentukan beberapa set yang berbeda dari perpustakaan (dikenal sebagai profil) untuk perangkat dengan penyimpanan terbatas, layar, dan kapasitas daya. Hal ini sering digunakan untuk mengembangkan aplikasi untuk perangkat mobile, Pda, TV [[Dekoder (televisi)|set-top box]], dan printer. |
||
Baris 19: | Baris 20: | ||
=== Mesin Virtual Java === |
=== Mesin Virtual Java === |
||
Jantung platform Java adalah konsep "virtual machine" yang mengeksekusi [[bytecode Java]] |
Jantung platform Java adalah konsep "virtual machine" yang mengeksekusi program [[bytecode Java]]. Bytecode ini tetap bisa berjalan, tidak peduli terhadap jenis perangkat keras atau sistem operasinya. Ada JIT (Just In Time) compiler dalam ''Java Virtual Machine''atau JVM. JIT compiler menerjemahkan bytecode Java ke native prosesor instruksi pada saat run-time dan cache kode asli dalam memori selama eksekusi. |
||
Penggunaan bytecode sebagai perantara bahasa yang memungkinkan program Java untuk berjalan pada platform apapun yang memiliki mesin virtual yang tersedia. Penggunaan JIT compiler berarti bahwa aplikasi Java, setelah penundaan singkat selama pemuatan dan setelah mereka memiliki "pemanasan" dengan menjadi semua atau sebagian besar JIT-dikompilasi, cenderung berjalan secepat asli program.<ref name="LewisNeumann" |
Penggunaan bytecode sebagai perantara bahasa yang memungkinkan program Java untuk berjalan pada platform apapun yang memiliki mesin virtual yang tersedia. Penggunaan JIT compiler berarti bahwa aplikasi Java, setelah penundaan singkat selama pemuatan dan setelah mereka memiliki "pemanasan" dengan menjadi semua atau sebagian besar JIT-dikompilasi, cenderung berjalan secepat asli program.<ref name="LewisNeumann"/><ref name=":0">{{Cite web|url=http://www.kano.net/javabench/|title=The Java Faster than C++ Benchmark|date=2003-11-14|publisher=Kano.net|access-date=2016-02-09}}</ref><ref name=":1">[http://research.sun.com/techrep/2002/smli_tr-2002-114.pdf FreeTTS – A Performance Case Study] {{Webarchive|url=https://web.archive.org/web/20090325195557/http://research.sun.com/techrep/2002/smli_tr-2002-114.pdf |date=2009-03-25 }}, Willie Walker, Paul Lamere, Philip Kwok</ref> |
||
Sejak JRE versi 1.2, Matahari JVM pelaksanaan sudah termasuk [[Kompilasi tepat waktu|just-in-time compiler]] bukan seorang penerjemah. |
Sejak JRE versi 1.2, Matahari JVM pelaksanaan sudah termasuk [[Kompilasi tepat waktu|just-in-time compiler]] bukan seorang penerjemah. |
||
Baris 27: | Baris 28: | ||
=== Perpustakaan kelas === |
=== Perpustakaan kelas === |
||
Di |
Di [[sistem operasi]] paling modern (OSs), tubuh besar yang dapat digunakan kembali kode yang diberikan untuk mempermudah programmer pekerjaan. Kode ini biasanya disediakan sebagai satu set [[Pustaka perangkat lunak|dinamis loadable perpustakaan]] yang aplikasi dapat memanggil pada saat runtime. Karena platform Java tidak tergantung pada sistem operasi tertentu, aplikasi tidak bisa mengandalkan apapun dari yang sudah ada OS perpustakaan. Sebaliknya, platform Java menyediakan seperangkat standar sendiri perpustakaan kelas yang berisi banyak hal yang sama dapat digunakan kembali fungsi-fungsi yang umum ditemukan di sistem operasi modern. Sebagian besar sistem perpustakaan ini juga ditulis di . Misalnya, Ayunan perpustakaan cat antarmuka pengguna dan menangani peristiwa itu sendiri, menghilangkan banyak perbedaan halus antara cara yang berbeda platform menangani komponen. |
||
Java class library melayani tiga tujuan dalam platform Java. Pertama, seperti standar lainnya kode perpustakaan, perpustakaan Java menyediakan programmer terkenal set fungsi untuk melakukan tugas-tugas umum, seperti menjaga daftar dari barang-barang atau melakukan parsing string kompleks. Kedua, kelas, perpustakaan menyediakan sebuah antarmuka abstrak untuk tugas-tugas yang biasanya akan sangat bergantung pada perangkat keras dan sistem operasi. Tugas-tugas seperti akses jaringan dan akses file yang sering sangat terjalin dengan khas implementasi dari masing-masing platform. Yang <code>java.net</code> dan <code>.io</code> perpustakaan mengimplementasikan sebuah abstraksi layer di OS asli kode, kemudian menyediakan sebuah antarmuka standar untuk aplikasi Java untuk melakukan tugas-tugas. Akhirnya, ketika beberapa platform yang mendasari tidak mendukung semua fitur aplikasi Java mengharapkan, perpustakaan kelas bekerja untuk anggun menangani absen komponen, baik dengan emulasi untuk menyediakan pengganti, atau setidaknya dengan menyediakan cara yang konsisten untuk memeriksa keberadaan fitur tertentu. |
Java class library melayani tiga tujuan dalam platform Java. Pertama, seperti standar lainnya kode perpustakaan, perpustakaan Java menyediakan programmer terkenal set fungsi untuk melakukan tugas-tugas umum, seperti menjaga daftar dari barang-barang atau melakukan parsing string kompleks. Kedua, kelas, perpustakaan menyediakan sebuah antarmuka abstrak untuk tugas-tugas yang biasanya akan sangat bergantung pada perangkat keras dan sistem operasi. Tugas-tugas seperti akses jaringan dan akses file yang sering sangat terjalin dengan khas implementasi dari masing-masing platform. Yang <code>java.net</code> dan <code>.io</code> perpustakaan mengimplementasikan sebuah abstraksi layer di OS asli kode, kemudian menyediakan sebuah antarmuka standar untuk aplikasi Java untuk melakukan tugas-tugas. Akhirnya, ketika beberapa platform yang mendasari tidak mendukung semua fitur aplikasi Java mengharapkan, perpustakaan kelas bekerja untuk anggun menangani absen komponen, baik dengan emulasi untuk menyediakan pengganti, atau setidaknya dengan menyediakan cara yang konsisten untuk memeriksa keberadaan fitur tertentu. |
||
=== Bahasa === |
=== Bahasa === |
||
Kata "", |
Kata "Java", sendiri, biasanya mengacu pada bahasa pemrograman Java yang dirancang untuk digunakan dengan platform Java. Bahasa pemrograman yang biasanya di luar lingkup dari kalimat "platform", meskipun bahasa pemrograman Java terdaftar sebagai bagian inti dari platform Java sebelum Java 7. Bahasa dan runtime oleh karena itu sering dianggap sebagai satu unit. Namun, upaya itu dibuat dengan Java 7 spesifikasi untuk lebih jelas memperlakukan bahasa dan mesin virtual Java sebagai entitas yang terpisah, sehingga mereka tidak lagi dianggap sebagai satu unit.<ref>{{Cite web|url=http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-1.html#jvms-1.3|title=JVM 7 Specification}}</ref> |
||
Pihak ketiga yang telah menghasilkan banyak [[Kompilator|kompiler]] atau [[Penerjemah (komputasi)|interpreter]] yang menargetkan JVM. Beberapa dari ini adalah untuk bahasa yang ada, sementara yang lain adalah untuk ekstensi untuk bahasa |
Pihak ketiga yang telah menghasilkan banyak [[Kompilator|kompiler]] atau [[Penerjemah (komputasi)|interpreter]] yang menargetkan JVM. Beberapa dari ini adalah untuk bahasa yang ada, sementara yang lain adalah untuk ekstensi untuk bahasa. Ini termasuk: |
||
* BeanShell – ringan bahasa scripting untuk Java<ref>{{URL|www.beanshell.org/}}</ref> |
* BeanShell – ringan bahasa scripting untuk Java<ref>{{URL|www.beanshell.org/}}</ref> |
||
* Clojure – dialek dari bahasa pemrograman Lisp |
* Clojure – dialek dari bahasa pemrograman Lisp |
||
Baris 46: | Baris 47: | ||
=== Platform serupa === |
=== Platform serupa === |
||
Keberhasilan dari dan tulis sekali, jalankan di mana saja konsep-konsep yang lainnya, upaya-upaya serupa, terutama [[.NET Framework]], yang muncul sejak tahun 2002, yang menggabungkan banyak sukses-aspek dari |
Keberhasilan dari dan tulis sekali, jalankan di mana saja konsep-konsep yang lainnya, upaya-upaya serupa, terutama [[.NET Framework]], yang muncul sejak tahun 2002, yang menggabungkan banyak sukses-aspek dari .NET dalam bentuk lengkap (Microsoft pelaksanaan) saat ini hanya sepenuhnya tersedia pada platform Windows, sedangkan sepenuhnya tersedia di banyak platform. .NET dibangun dari tanah-up untuk mendukung beberapa bahasa pemrograman, sedangkan platform Java pada awalnya dibangun untuk mendukung hanya bahasa, walaupun banyak bahasa lainnya telah dibuat untuk JVM. |
||
.NET termasuk seperti bahasa yang disebut [[J sharp|Visual J#]] (sebelumnya bernama J++) yang kompatibel dengan Java spesifikasi, dan terkait perpustakaan kelas sebagian besar tanggal tua JDK 1.1 versi bahasa. Untuk alasan ini, itu lebih dari sebuah transisi bahasa untuk beralih dari ke .NET platform dari itu adalah kelas pertama .NET bahasa. Visual J# dihentikan dengan rilis Microsoft Visual Studio 2008. Ada versi gratis dengan [[Microsoft Visual Studio|Visual Studio 2005]] akan didukung hingga 2015 sesuai produk siklus hidup strategi.{{Butuh rujukan|date=July 2016}} |
.NET termasuk seperti bahasa yang disebut [[J sharp|Visual J#]] (sebelumnya bernama J++) yang kompatibel dengan Java spesifikasi, dan terkait perpustakaan kelas sebagian besar tanggal tua JDK 1.1 versi bahasa. Untuk alasan ini, itu lebih dari sebuah transisi bahasa untuk beralih dari ke .NET platform dari itu adalah kelas pertama .NET bahasa. Visual J# dihentikan dengan rilis Microsoft Visual Studio 2008. Ada versi gratis dengan [[Microsoft Visual Studio|Visual Studio 2005]] akan didukung hingga 2015 sesuai produk siklus hidup strategi.{{Butuh rujukan|date=July 2016}} |
||
=== Java Development Kit === |
=== Java Development Kit === |
||
Dalam ''Java Development Kit'' (''JDK'') adalah [[Sun Microsystems|Sun]] produk yang ditujukan untuk pengembang Java. Sejak diperkenalkannya |
Dalam ''Java Development Kit'' (''JDK'') adalah [[Sun Microsystems|Sun]] produk yang ditujukan untuk pengembang Java. Sejak diperkenalkannya, telah oleh jauh yang paling banyak digunakan Java software development kit (SDK).{{Butuh rujukan|date=December 2011}} Ini berisi compiler Java, sebuah salinan lengkap dari [[Mesin Virtual Java|Java Runtime Environment]] (JRE), dan banyak lainnya yang penting alat-alat pengembangan. |
||
== Sejarah == |
== Sejarah == |
||
Baris 63: | Baris 64: | ||
Bill Joy telah memimpikan sebuah bahasa baru yang menggabungkan Mesa dan C. Dalam sebuah makalah yang disebut ''lebih Lanjut'', ia mengusulkan untuk Sun bahwa para insinyur harus menghasilkan aplikasi yang [[Pemrograman berorientasi objek|berorientasi objek]] lingkungan yang didasarkan pada C++. Awalnya, Gosling berusaha untuk memodifikasi dan memperluas C++ (usulan pembangunan yang ia disebut sebagai "C++ ++ --") tapi segera ditinggalkan yang mendukung untuk menciptakan sebuah bahasa baru, yang disebut ''Oak'', setelah pohon yang berdiri tepat di luar kantornya.{{Butuh rujukan|date=June 2015}} |
Bill Joy telah memimpikan sebuah bahasa baru yang menggabungkan Mesa dan C. Dalam sebuah makalah yang disebut ''lebih Lanjut'', ia mengusulkan untuk Sun bahwa para insinyur harus menghasilkan aplikasi yang [[Pemrograman berorientasi objek|berorientasi objek]] lingkungan yang didasarkan pada C++. Awalnya, Gosling berusaha untuk memodifikasi dan memperluas C++ (usulan pembangunan yang ia disebut sebagai "C++ ++ --") tapi segera ditinggalkan yang mendukung untuk menciptakan sebuah bahasa baru, yang disebut ''Oak'', setelah pohon yang berdiri tepat di luar kantornya.{{Butuh rujukan|date=June 2015}} |
||
Pada musim panas 1992, tim bisa menunjukkan bagian-bagian dari platform baru, termasuk Hijau [[Sistem operasi|OS]], Oak bahasa, perpustakaan, dan hardware. Mereka demonstrasi pertama, pada tanggal 3 September 1992, berfokus pada membangun sebuah [[Pembantu digital pribadi|personal digital assistant]] (PDA) perangkat bernama ''Star7''{{Ref|star7}} yang memiliki antarmuka grafis dan smart agen yang disebut "Duke" untuk membantu pengguna. Pada bulan November tahun itu, the Green Project itu berputar off untuk menjadi ''Firstperson'', anak perusahaan yang sepenuhnya dimiliki dari Sun Microsystems, dan tim pindah ke [[Palo Alto, California]].<ref>{{Cite web|url=http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/J2eeTutorialForeword.html|title=Foreword|last=Kathy Walrath|date=2001-12-21|publisher=[[Sun Microsystems]]|access-date=2009-08-02}}</ref> Yang Firstperson tim memiliki kepentingan dalam membangun sangat interaktif perangkat, dan ketika [[Time Warner]] mengeluarkan request for proposal (RFP) untuk [[Dekoder (televisi)|set-top box]], Firstperson mengubah target mereka dan menanggapi dengan sebuah proposal untuk sebuah set-top box platform. Namun, [[Televisi kabel|kabel]] industri merasa bahwa platform mereka memberikan terlalu banyak kontrol kepada pengguna, sehingga Firstperson kehilangan tawaran mereka untuk [[Silicon Graphics|SGI]]. Tambahan berurusan dengan Yang 3DO Perusahaan untuk set-top box juga gagal terwujud. Mampu membangkitkan minat dalam industri televisi, perusahaan digulung kembali ke Matahari. |
Pada musim panas 1992, tim bisa menunjukkan bagian-bagian dari platform baru, termasuk Hijau [[Sistem operasi|OS]], Oak bahasa, perpustakaan, dan hardware. Mereka demonstrasi pertama, pada tanggal 3 September 1992, berfokus pada membangun sebuah [[Pembantu digital pribadi|personal digital assistant]] (PDA) perangkat bernama ''Star7''{{Ref|star7}} yang memiliki antarmuka grafis dan smart agen yang disebut "Duke" untuk membantu pengguna. Pada bulan November tahun itu, the Green Project itu berputar off untuk menjadi ''Firstperson'', [[anak perusahaan]] yang sepenuhnya dimiliki dari Sun Microsystems, dan tim pindah ke [[Palo Alto, California]].<ref>{{Cite web|url=http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/J2eeTutorialForeword.html|title=Foreword|last=Kathy Walrath|date=2001-12-21|publisher=[[Sun Microsystems]]|access-date=2009-08-02}}</ref> Yang Firstperson tim memiliki kepentingan dalam membangun sangat interaktif perangkat, dan ketika [[Time Warner]] mengeluarkan request for proposal (RFP) untuk [[Dekoder (televisi)|set-top box]], Firstperson mengubah target mereka dan menanggapi dengan sebuah proposal untuk sebuah set-top box platform. Namun, [[Televisi kabel|kabel]] industri merasa bahwa platform mereka memberikan terlalu banyak kontrol kepada pengguna, sehingga Firstperson kehilangan tawaran mereka untuk [[Silicon Graphics|SGI]]. Tambahan berurusan dengan Yang 3DO Perusahaan untuk set-top box juga gagal terwujud. Mampu membangkitkan minat dalam industri televisi, perusahaan digulung kembali ke Matahari. |
||
=== |
=== Memenuhi web === |
||
[[Berkas:John_Gage.jpg|jmpl|John Gage]] |
[[Berkas:John_Gage.jpg|jmpl|John Gage]] |
||
Pada bulan juni dan juli 1994 – setelah tiga hari dari brainstorming dengan John Gage (Direktur Ilmu pengetahuan untuk |
Pada bulan juni dan juli 1994 – setelah tiga hari dari brainstorming dengan John Gage (Direktur Ilmu pengetahuan untuk Sun Microsystems), Gosling, Sukacita, Naughton, Wayne Rosing, dan [[Eric Schmidt]] – tim re-target platform untuk [[World Wide Web]]. Mereka merasa bahwa dengan munculnya grafis [[Penjelajah web|web browser]] seperti Internet Mosaic bisa berkembang menjadi media yang sangat interaktif<!-- bahwa mereka telah membayangkan untuk TV kabel -->. Sebagai purwarupa, Naughton menulis sebuah browser yang kecil, WebRunner (dinamakan setelah film ''Blade Runner''), berganti nama menjadi HotJava<ref name="earlyhistory"/> pada tahun 1995. |
||
Pada tahun 1994, |
Pada tahun 1994, Sun mengganti nama bahasa Oak setelah pencarian [[Merek|merek dagang]] mengungkapkan bahwa nama Oak telah digunakan oleh Oak Technology.<ref>{{Cite web|url=http://www.javaworld.com/javaworld/jw-10-1996/jw-10-javaname.html|title=So why did they decide to call it Java?|last=Kieron Murphy|date=1996-04-10|publisher=javaworld.com|access-date=2009-08-03|quote=''The lawyers had told us that we couldn't use the name 'OAK' because [it was already trademarked by] Oak Technologies," said Frank Yellin, a senior engineer at Sun. "So a brainstorming session was held to come up with ideas for a new name''|archive-date=2009-08-03|archive-url=https://web.archive.org/web/20090803031758/http://www.javaworld.com/javaworld/jw-10-1996/jw-10-javaname.html|dead-url=yes}}</ref> Meskipun Java 1.0 a menjadi tersedia untuk di-download pada tahun 1994, rilis publik pertama dari 1.0a2 dengan browser HotJava datang pada tanggal 23 Mei 1995, diumumkan oleh Gage di konferensi SunWorld. Marc Andreessen, Wakil Presiden Eksekutif dari [[Netscape|Netscape Communications Corporation]], tiba-tiba mengumumkan bahwa Netscape browser akan mencakup dukungan Java. Pada tanggal 9 januari 1996, Sun Microsystems membentuk kelompok JavaSoft untuk mengembangkan teknologi.<ref>{{Cite web|url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960109.14048.html|title=Sun Microsystems Announces Formation of Javasoft|date=January 1996|publisher=Sun Microsystems|access-date=2016-10-20|archive-date=2006-12-31|archive-url=https://web.archive.org/web/20061231235046/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960109.14048.xml|dead-url=yes}}</ref> |
||
=== Versi sejarah === |
=== Versi sejarah === |
||
Baris 86: | Baris 87: | ||
''Java SE 6'' (11 desember 2006) – Codename ''Mustang''. Itu dibundel dengan manajer database dan memfasilitasi penggunaan bahasa scripting dengan JVM (seperti [[JavaScript]] menggunakan [[Mozilla]]'s Badak engine). Pada versi ini, Matahari diganti nama "J2SE" dengan ''Java SE'' dan menjatuhkan ".0" dari nomor versi.<ref>{{Cite web|url=http://www.java.com/en/about/javanaming.jsp|title=Java Naming|website=Java.com|publisher=Oracle|access-date=25 August 2011}}</ref> perubahan besar Lainnya termasuk dukungan untuk pluggable penjelasan (JSR 269), banyak [[Antarmuka pengguna grafis|GUI]] perbaikan, termasuk UI asli perangkat tambahan untuk mendukung tampilan dan nuansa dari [[Windows Vista]], dan perbaikan untuk Platform Java Debugger Arsitektur (JPDA) & JVM Alat Antarmuka untuk pemantauan yang lebih baik dan pemecahan masalah. |
''Java SE 6'' (11 desember 2006) – Codename ''Mustang''. Itu dibundel dengan manajer database dan memfasilitasi penggunaan bahasa scripting dengan JVM (seperti [[JavaScript]] menggunakan [[Mozilla]]'s Badak engine). Pada versi ini, Matahari diganti nama "J2SE" dengan ''Java SE'' dan menjatuhkan ".0" dari nomor versi.<ref>{{Cite web|url=http://www.java.com/en/about/javanaming.jsp|title=Java Naming|website=Java.com|publisher=Oracle|access-date=25 August 2011}}</ref> perubahan besar Lainnya termasuk dukungan untuk pluggable penjelasan (JSR 269), banyak [[Antarmuka pengguna grafis|GUI]] perbaikan, termasuk UI asli perangkat tambahan untuk mendukung tampilan dan nuansa dari [[Windows Vista]], dan perbaikan untuk Platform Java Debugger Arsitektur (JPDA) & JVM Alat Antarmuka untuk pemantauan yang lebih baik dan pemecahan masalah. |
||
''Java SE 7'' (28 juli 2011) |
''Java SE 7'' (28 juli 2011) - dengan kode nama ''Dolphin''. Versi ini dikembangkan di bawah JSR 336.<ref>{{Cite web|url=http://www.jcp.org/en/jsr/detail?id=336|title=The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 336|date=|publisher=Jcp.org|access-date=2016-02-09}}</ref> Ini menambahkan sejumlah kecil perubahan bahasa termasuk string di switch, mencoba-dengan-sumber-sumber dan jenis inferensi untuk generic contoh penciptaan. JVM diperpanjang dengan dukungan untuk bahasa dinamis, sedangkan kelas perpustakaan diperpanjang antara lain dengan bergabung/garpu kerangka,<ref>{{Cite web|url=http://www.jcp.org/en/jsr/detail?id=166|title=JSRs: Java Specification Requests: JSR 166: Concurrency Utilities|last=Lea|first=Doug|date=13 September 2004|website=Java Community Process|publisher=Oracle Corp}}</ref> peningkatan new file I/O library dan dukungan untuk protokol jaringan seperti SCTP. Java 7 Update 76 dirilis pada januari 2015, dengan berakhirnya tanggal 14 April 2015.<ref>{{Cite web|url=http://www.oracle.com/technetwork/java/javase/7u76-relnotes-2389087.html|title=Java™ SE Development Kit 7 Update 76 Release Notes|date=|publisher=Oracle.com|access-date=2016-02-09}}</ref> |
||
Pada bulan juni 2016, setelah publik terakhir update Java 7,<ref>https://www.java.com/en/download/faq/release_dates.xml</ref> "[[Exploit|jarak jauh dieksploitasi]]" bug keamanan di Java 6, 7 dan 8 di mana diumumkan.<ref name="remote exploit" |
Pada bulan juni 2016, setelah publik terakhir update Java 7,<ref>https://www.java.com/en/download/faq/release_dates.xml</ref> "[[Exploit|jarak jauh dieksploitasi]]" bug keamanan di Java 6, 7 dan 8 di mana diumumkan.<ref name="remote exploit"/> |
||
Yang {{As of| 2015 |alt=current}} version, ''Java SE 8'' (18 Maret 2014). Perubahan penting termasuk bahasa tingkat dukungan untuk ekspresi lambda (penutupan) dan metode default, Proyek Nashorn JavaScript runtime, Tanggal dan Waktu yang baru API terinspirasi oleh Joda Waktu, dan penghapusan PermGen. Versi ini tidak secara resmi didukung pada platform Windows XP.<ref>{{Cite web|url=http://www.java.com/en/download/faq/winxp.xml|title=Windows XP and Java|date=2014-04-08|publisher=Java.com|access-date=2016-02-09}}</ref> Namun, karena akhir dari 7 siklus hidup ini adalah versi direkomendasikan untuk pengguna XP. Sebelumnya, hanya tidak resmi instalasi manual metode yang telah dijelaskan untuk Windows XP SP3. Hal ini mengacu pada JDK8, mengembangkan platform untuk Java yang juga mencakup sepenuhnya berfungsi [[Mesin Virtual Java|Java Runtime Environment]].<ref>{{Cite web|url=https://stackoverflow.com/questions/20965564/installing-jdk8-on-windows-xp-advapi32-dll-error|title=installing JDK8 on Windows XP - advapi32.dll error}}</ref> 8 didukung pada Windows Server 2008 R2 SP1, Windows Vista SP2 dan Windows 7 SP1, Ubuntu 12.04 LTS dan lebih tinggi (dan beberapa Os lain).<ref>[http://www.oracle.com/technetwork/java/javase/certconfig-2095354.html Oracle JDK 8 and JRE 8 Certified System Configurations Contents]</ref> |
Yang {{As of| 2015 |alt=current}} version, ''Java SE 8'' (18 Maret 2014). Perubahan penting termasuk bahasa tingkat dukungan untuk ekspresi lambda (penutupan) dan metode default, Proyek Nashorn JavaScript runtime, Tanggal dan Waktu yang baru API terinspirasi oleh Joda Waktu, dan penghapusan PermGen. Versi ini tidak secara resmi didukung pada platform Windows XP.<ref>{{Cite web|url=http://www.java.com/en/download/faq/winxp.xml|title=Windows XP and Java|date=2014-04-08|publisher=Java.com|access-date=2016-02-09}}</ref> Namun, karena akhir dari 7 siklus hidup ini adalah versi direkomendasikan untuk pengguna XP. Sebelumnya, hanya tidak resmi instalasi manual metode yang telah dijelaskan untuk Windows XP SP3. Hal ini mengacu pada JDK8, mengembangkan platform untuk Java yang juga mencakup sepenuhnya berfungsi [[Mesin Virtual Java|Java Runtime Environment]].<ref>{{Cite web|url=https://stackoverflow.com/questions/20965564/installing-jdk8-on-windows-xp-advapi32-dll-error|title=installing JDK8 on Windows XP - advapi32.dll error}}</ref> 8 didukung pada Windows Server 2008 R2 SP1, Windows Vista SP2 dan Windows 7 SP1, Ubuntu 12.04 LTS dan lebih tinggi (dan beberapa Os lain).<ref>[http://www.oracle.com/technetwork/java/javase/certconfig-2095354.html Oracle JDK 8 and JRE 8 Certified System Configurations Contents]</ref> |
||
JDK 9 Akses Awal membutuhkan Windows 7 SP1, Windows Server 2012, Ubuntu 16.04 LTS atau lebih tinggi (atau OS lain yang didukung, seperti OS X atau Solaris).<ref>{{Cite web|url=https://jdk9.java.net/jdk9_supported_platforms.html|title=JDK 9 supported Platforms|quote=Note: Preliminary list. This is page is is subject to change through the release cycle.}}</ref> |
JDK 9 Akses Awal membutuhkan Windows 7 SP1, Windows Server 2012, Ubuntu 16.04 LTS atau lebih tinggi (atau OS lain yang didukung, seperti OS X atau Solaris).<ref>{{Cite web|url=https://jdk9.java.net/jdk9_supported_platforms.html|title=JDK 9 supported Platforms|quote=Note: Preliminary list. This is page is is subject to change through the release cycle.|access-date=2016-10-20|archive-date=2015-04-15|archive-url=https://web.archive.org/web/20150415163922/https://jdk9.java.net/jdk9_supported_platforms.html|dead-url=yes}}</ref> |
||
Selain bahasa perubahan, perubahan yang signifikan telah dibuat untuk Java class library selama bertahun-tahun, yang telah berkembang dari beberapa ratus kelas dalam JDK 1.0 untuk lebih dari tiga ribu di J2SE 5.0. Seluruh Api yang baru, seperti Ayunan dan Java 2D, telah berkembang, dan banyak dari asli JDK 1.0 kelas dan metode yang telah usang. |
Selain bahasa perubahan, perubahan yang signifikan telah dibuat untuk Java class library selama bertahun-tahun, yang telah berkembang dari beberapa ratus kelas dalam JDK 1.0 untuk lebih dari tiga ribu di J2SE 5.0. Seluruh Api yang baru, seperti Ayunan dan Java 2D, telah berkembang, dan banyak dari asli JDK 1.0 kelas dan metode yang telah usang. |
||
Baris 98: | Baris 99: | ||
== Penggunaan == |
== Penggunaan == |
||
=== Penggunaan |
=== Penggunaan desktop === |
||
[[Berkas:FrostWire-Vista.png|jmpl|Sebuah program Java yang berjalan pada komputer desktop]] |
[[Berkas:FrostWire-Vista.png|jmpl|Sebuah program Java yang berjalan pada komputer desktop]] |
||
Menurut Oracle, Java Runtime Environment adalah ditemukan pada lebih dari 850 juta PCs.<ref>{{Cite web|url=http://java.com/en/download/faq/whatis_java.xml|title=What is Java technology and why do I need it?|access-date=15 December 2011|quote=Java runs on more than 850 million personal computers worldwide, and on billions of devices worldwide, including mobile and TV devices.}}</ref> [[Microsoft]] belum paket [[Mesin Virtual Java|Java Runtime Environment]] (JRE) dengan [[sistem operasi]] sejak Sun Microsystems menggugat Microsoft untuk menambahkan Jendela-kelas khusus untuk paket Java runtime environment, dan untuk membuat kelas-kelas baru yang tersedia melalui Visual J++.{{Butuh rujukan|date=December 2011}} Apple tidak lagi termasuk Java runtime dengan [[OS X]] sebagai [[Mac OS X Lion|versi 10.7]], tetapi sistem akan meminta pengguna untuk men-download dan menginstal itu pertama kalinya sebuah aplikasi yang membutuhkan JRE diluncurkan.{{Butuh rujukan|date=July 2014}} Banyak [[Distribusi Linux|distribusi Linux yang]] mencakup sebagian kompatibel [[Perangkat lunak bebas|software gratis]] paket GNU Classpath<ref>{{Cite web|url=http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath|title=Results of comparison between jdk15 and classpath|publisher=kaffe.org}}</ref> dan semakin kebanyakan kompatibel IcedTea. |
Menurut Oracle, Java Runtime Environment adalah ditemukan pada lebih dari 850 juta PCs.<ref>{{Cite web|url=http://java.com/en/download/faq/whatis_java.xml|title=What is Java technology and why do I need it?|access-date=15 December 2011|quote=Java runs on more than 850 million personal computers worldwide, and on billions of devices worldwide, including mobile and TV devices.}}</ref> [[Microsoft]] belum paket [[Mesin Virtual Java|Java Runtime Environment]] (JRE) dengan [[sistem operasi]] sejak Sun Microsystems menggugat Microsoft untuk menambahkan Jendela-kelas khusus untuk paket Java runtime environment, dan untuk membuat kelas-kelas baru yang tersedia melalui Visual J++.{{Butuh rujukan|date=December 2011}} Apple tidak lagi termasuk Java runtime dengan [[OS X]] sebagai [[Mac OS X Lion|versi 10.7]], tetapi sistem akan meminta pengguna untuk men-download dan menginstal itu pertama kalinya sebuah aplikasi yang membutuhkan JRE diluncurkan.{{Butuh rujukan|date=July 2014}} Banyak [[Distribusi Linux|distribusi Linux yang]] mencakup sebagian kompatibel [[Perangkat lunak bebas|software gratis]] paket GNU Classpath<ref>{{Cite web|url=http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath|title=Results of comparison between jdk15 and classpath|publisher=kaffe.org|access-date=2016-10-20|archive-date=2007-09-28|archive-url=https://web.archive.org/web/20070928082809/http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath|dead-url=yes}}</ref> dan semakin kebanyakan kompatibel IcedTea. |
||
Beberapa aplikasi Java yang cukup luas penggunaan desktop, termasuk NetBeans dan [[Eclipse (perangkat lunak)|Eclipse]] [[Lingkungan pengembangan terpadu|integrated development lingkungan]], dan berbagi file klien seperti [[LimeWire]] dan [[Azureus|Vuze]]. juga digunakan dalam [[MATLAB]] matematika pemrograman lingkungan, baik untuk rendering [[antarmuka pengguna]] dan sebagai bagian dari sistem inti. Java menyediakan cross platform user interface untuk beberapa high-end aplikasi kolaboratif seperti Lotus Notes. |
Beberapa aplikasi Java yang cukup luas penggunaan desktop, termasuk NetBeans dan [[Eclipse (perangkat lunak)|Eclipse]] [[Lingkungan pengembangan terpadu|integrated development lingkungan]], dan berbagi file klien seperti [[LimeWire]] dan [[Azureus|Vuze]]. juga digunakan dalam [[MATLAB]] matematika pemrograman lingkungan, baik untuk rendering [[antarmuka pengguna]] dan sebagai bagian dari sistem inti. Java menyediakan cross platform user interface untuk beberapa high-end aplikasi kolaboratif seperti Lotus Notes. |
||
Baris 106: | Baris 107: | ||
Oracle berencana untuk pertama mencela secara terpisah diinstal Java plugin browser dari Java Runtime Environment di JDK 9 kemudian menghapus sepenuhnya dari masa mendatang, memaksa para pengembang web untuk menggunakan teknologi alternatif.<ref>{{Cite web|url=https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free|title=Moving to a Plugin-Free Web}}</ref> |
Oracle berencana untuk pertama mencela secara terpisah diinstal Java plugin browser dari Java Runtime Environment di JDK 9 kemudian menghapus sepenuhnya dari masa mendatang, memaksa para pengembang web untuk menggunakan teknologi alternatif.<ref>{{Cite web|url=https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free|title=Moving to a Plugin-Free Web}}</ref> |
||
=== Perangkat |
=== Perangkat mobile === |
||
[[Berkas:2Mobiles-with-Bombus.jpg|jmpl|2006 era ponsel menjalankan aplikasi Java]] |
[[Berkas:2Mobiles-with-Bombus.jpg|jmpl|2006 era ponsel menjalankan aplikasi Java]] |
||
Java ''Micro Edition'' telah menjadi populer di perangkat mobile, di mana ia bersaing dengan [[Symbian OS|Symbian]], [[Binary Runtime Environment for Wireless|BREW]], dan .NET Compact Framework. |
|||
Keragaman produsen ponsel telah menyebabkan kebutuhan untuk standar bersatu sehingga program-program dapat berjalan pada ponsel dari pemasok yang berbeda – MIDP. Standar pertama adalah MIDP 1, yang |
Keragaman produsen ponsel telah menyebabkan kebutuhan untuk standar bersatu sehingga program-program dapat berjalan pada ponsel dari pemasok yang berbeda – MIDP. Standar pertama adalah MIDP 1, yang diperuntukkan untuk layar berukuran kecil, tidak ada akses ke audio, dan memiliki batas ukuran program 32kB. Baru-baru ini MIDP 2 memungkinkan akses ke audio, dan sampai 64kB untuk ukuran program. Dengan desain handset yang membaik dan lebih cepat dari standar, beberapa produsen berdiam dalam beberapa keterbatasan karena standar, misalnya, maksimal ukuran program. |
||
Sistem operasi [[Android (sistem operasi)|Android]] besutan Google menggunakan bahasa Java, namun tidak untuk kelas perpustakaan, oleh karena itu platform Android tidak bisa disebut ke dalam daftar perangkat mobile Java. Android mengeksekusi kode pada mesin virtual ART (sebelumnya [[Dalvik (perangkat lunak)|Dalvik VM]] di Android 4.4.4 ke bawah) bukan mesin virtual Java. |
|||
=== |
=== Penggunaan dalam server web dan enterprise === |
||
[[Berkas:Share_and_Repository_Browser_(Alfresco_Community_Edition).jpg|jmpl|-didukung aplikasi web]] |
[[Berkas:Share_and_Repository_Browser_(Alfresco_Community_Edition).jpg|jmpl|-didukung aplikasi web]] |
||
Platform Java telah menjadi andalan perusahaan ITU pengembangan sejak pengenalan Enterprise Edition pada tahun 1998, dalam dua cara yang berbeda: |
Platform Java telah menjadi andalan perusahaan ITU pengembangan sejak pengenalan Enterprise Edition pada tahun 1998, dalam dua cara yang berbeda: |
||
Baris 127: | Baris 128: | ||
Duke adalah [[maskot]].<ref>{{Cite web|url=http://www.oracle.com/us/technologies/java/duke-424174.html|title=Duke, the Java Mascot|publisher=[[Oracle Corporation|Oracle]]|access-date=2011-11-12}}</ref> |
Duke adalah [[maskot]].<ref>{{Cite web|url=http://www.oracle.com/us/technologies/java/duke-424174.html|title=Duke, the Java Mascot|publisher=[[Oracle Corporation|Oracle]]|access-date=2011-11-12}}</ref> |
||
Ketika Sun mengumumkan bahwa SE Java dan Java ME akan dirilis di bawah [[lisensi perangkat lunak bebas]] ( [[Lisensi Publik Umum GNU|GNU General Public License]]), mereka merilis Duke grafis di bawah lisensi BSD pada waktu yang sama.<ref>{{Cite web|url=https://duke.dev.java.net/|title=duke: Project Home Page|publisher=[[Sun Microsystems]]|access-date=2007-03-18}}</ref> baru Duke kepribadian dibuat setiap tahun.<ref>{{Cite web|url=http://www.oracle.com/us/technologies/java/duke-424174.html|title=Duke, the Java Mascot}}</ref> misalnya, pada bulan juli 2011 "Teknologi masa Depan Duke" termasuk hidung yang lebih besar, jetpack, dan biru di sayap.<ref>{{Cite web|url=http://blogs.oracle.com/java/entry/future_tech_duke|title=Future Tech Duke (The Java Source)|publisher=Tori Wieldt|access-date=2011-08-17}}</ref> |
Ketika Sun mengumumkan bahwa SE Java dan Java ME akan dirilis di bawah [[lisensi perangkat lunak bebas]] ( [[Lisensi Publik Umum GNU|GNU General Public License]]), mereka merilis Duke grafis di bawah lisensi BSD pada waktu yang sama.<ref>{{Cite web|url=https://duke.dev.java.net/|title=duke: Project Home Page|publisher=[[Sun Microsystems]]|access-date=2007-03-18|archive-date=2007-06-18|archive-url=https://web.archive.org/web/20070618073343/https://duke.dev.java.net/|dead-url=yes}}</ref> baru Duke kepribadian dibuat setiap tahun.<ref>{{Cite web|url=http://www.oracle.com/us/technologies/java/duke-424174.html|title=Duke, the Java Mascot}}</ref> misalnya, pada bulan juli 2011 "Teknologi masa Depan Duke" termasuk hidung yang lebih besar, jetpack, dan biru di sayap.<ref>{{Cite web|url=http://blogs.oracle.com/java/entry/future_tech_duke|title=Future Tech Duke (The Java Source)|publisher=Tori Wieldt|access-date=2011-08-17|archive-date=2011-08-20|archive-url=https://web.archive.org/web/20110820081222/http://blogs.oracle.com/java/entry/future_tech_duke|dead-url=yes}}</ref> |
||
== Perizinan == |
== Perizinan == |
||
Baris 134: | Baris 135: | ||
Sementara beberapa pihak ketiga proyek (misalnya GNU Classpath dan [[Apache Harmony]]) dibuat [[perangkat lunak bebas]] parsial implementasi, ukuran besar dari Matahari perpustakaan dikombinasikan dengan penggunaan kamar bersih metode berarti bahwa mereka implementasi dari Java perpustakaan (compiler dan VM adalah relatif kecil dan didefinisikan dengan baik) yang tidak lengkap dan tidak sepenuhnya kompatibel. Implementasi ini juga cenderung jauh lebih dioptimalkan dari Matahari.{{Butuh rujukan|date=January 2011}} |
Sementara beberapa pihak ketiga proyek (misalnya GNU Classpath dan [[Apache Harmony]]) dibuat [[perangkat lunak bebas]] parsial implementasi, ukuran besar dari Matahari perpustakaan dikombinasikan dengan penggunaan kamar bersih metode berarti bahwa mereka implementasi dari Java perpustakaan (compiler dan VM adalah relatif kecil dan didefinisikan dengan baik) yang tidak lengkap dan tidak sepenuhnya kompatibel. Implementasi ini juga cenderung jauh lebih dioptimalkan dari Matahari.{{Butuh rujukan|date=January 2011}} |
||
=== |
=== Perangkat lunak bebas === |
||
[[Berkas:Jonathan_Schwartz.jpg|jmpl|Jonathan Schwartz]] |
[[Berkas:Jonathan_Schwartz.jpg|jmpl|Jonathan Schwartz]] |
||
[[Sun Microsystems|Sun]] mengumumkan di JavaOne 2006 bahwa pulau akan menjadi [[Perangkat lunak bebas|bebas]] dan [[perangkat lunak sumber terbuka]],<ref>{{Cite web|url=http://blogs.sun.com/roller/page/jonathan/200606#busy_week1|title=?|last=Schwartz|first=Jonathan|website=Jonathan Schwartz's Blog|publisher=Sun Microsystems}}</ref> dan pada tanggal 25 oktober 2006, di Oracle OpenWorld konferensi, Jonathan I. Schwartz mengatakan bahwa perusahaan itu akan mengumumkan rilis core [[Java (software platform)#Platform|Platform Java]] sebagai perangkat lunak bebas dan terbuka dalam waktu 30 sampai 60 hari.<ref>{{Cite web|url=http://www.formtek.com/blog/?p=116|title=Oracle OpenWorld: UnBreakable Linux / 5015.2 not on the horizon | Formtek Blog|last=Name *|date=2006-10-26|publisher=Formtek.com|access-date=2016-02-09}}</ref> |
[[Sun Microsystems|Sun]] mengumumkan di JavaOne 2006 bahwa pulau akan menjadi [[Perangkat lunak bebas|bebas]] dan [[perangkat lunak sumber terbuka]],<ref>{{Cite web|url=http://blogs.sun.com/roller/page/jonathan/200606#busy_week1|title=?|last=Schwartz|first=Jonathan|website=Jonathan Schwartz's Blog|publisher=Sun Microsystems}}</ref> dan pada tanggal 25 oktober 2006, di Oracle OpenWorld konferensi, Jonathan I. Schwartz mengatakan bahwa perusahaan itu akan mengumumkan rilis core [[Java (software platform)#Platform|Platform Java]] sebagai perangkat lunak bebas dan terbuka dalam waktu 30 sampai 60 hari.<ref>{{Cite web|url=http://www.formtek.com/blog/?p=116|title=Oracle OpenWorld: UnBreakable Linux / 5015.2 not on the horizon | Formtek Blog|last=Name *|date=2006-10-26|publisher=Formtek.com|access-date=2016-02-09}}</ref> |
||
Sun merilis HotSpot virtual mesin dan compiler sebagai perangkat lunak gratis dibawah [[Lisensi Publik Umum GNU|lisensi GNU General Public License]] pada tanggal 13 November 2006, dengan janji bahwa sisa JDK (yang termasuk JRE) yang akan ditempatkan di bawah GPL pada bulan Maret 2007 ("kecuali untuk beberapa komponen yang Matahari tidak memiliki hak untuk mempublikasikan didistribusikan bentuk kode sumber di bawah GPL").<ref>{{Cite web|url=http://www.sun.com/2006-1113/feature/index.jsp|title=Oracle and Sun Microsystems | Strategic Acquisitions | Oracle|date=|publisher=Sun.com|access-date=2016-02-09}}</ref> Menurut [[Richard Matthew Stallman|Richard Stallman]], ini akan berarti mengakhiri " perangkap".<ref>{{Cite web|url=https://www.gnu.org/philosophy/java-trap.html|title=Free but Shackled - The Java Trap - GNU Project - Free Software Foundation|date=2004-04-12|publisher=Gnu.org|access-date=2016-02-09}}</ref> Mark Shuttleworth yang disebut pers awal pengumuman, "Sebuah tonggak bersejarah bagi [[perangkat lunak bebas]] komunitas".<ref>{{Cite news|url=http://news.bbc.co.uk/1/hi/technology/6144748.stm|title=Sun 'releases' Java to the World|date=November 13, 2006|work=BBC News|access-date=May 6, 2010}}</ref> |
Sun merilis HotSpot virtual mesin dan compiler sebagai perangkat lunak gratis dibawah [[Lisensi Publik Umum GNU|lisensi GNU General Public License]] pada tanggal 13 November 2006, dengan janji bahwa sisa JDK (yang termasuk JRE) yang akan ditempatkan di bawah GPL pada bulan Maret 2007 ("kecuali untuk beberapa komponen yang Matahari tidak memiliki hak untuk mempublikasikan didistribusikan bentuk kode sumber di bawah GPL").<ref>{{Cite web|url=http://www.sun.com/2006-1113/feature/index.jsp|title=Oracle and Sun Microsystems | Strategic Acquisitions | Oracle|date=|publisher=Sun.com|access-date=2016-02-09|archive-date=2007-04-21|archive-url=https://web.archive.org/web/20070421151747/http://www.sun.com/2006-1113/feature/index.jsp|dead-url=yes}}</ref> Menurut [[Richard Matthew Stallman|Richard Stallman]], ini akan berarti mengakhiri " perangkap".<ref>{{Cite web|url=https://www.gnu.org/philosophy/java-trap.html|title=Free but Shackled - The Java Trap - GNU Project - Free Software Foundation|date=2004-04-12|publisher=Gnu.org|access-date=2016-02-09}}</ref> Mark Shuttleworth yang disebut pers awal pengumuman, "Sebuah tonggak bersejarah bagi [[perangkat lunak bebas]] komunitas".<ref>{{Cite news|url=http://news.bbc.co.uk/1/hi/technology/6144748.stm|title=Sun 'releases' Java to the World|date=November 13, 2006|work=BBC News|access-date=May 6, 2010}}</ref> |
||
Sun merilis [[kode sumber]] dari perpustakaan Kelas bawah [[Lisensi Publik Umum GNU|GPL]] pada 8 Mei 2007, kecuali beberapa bagian tertentu yang diberi lisensi oleh Matahari dari pihak ke-3 yang tidak ingin mereka kode yang akan dirilis di bawah sebuah software gratis dan open-source yang berlisensi.<ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/announce/2007-May.txt|title=Open JDK is here!|date=May 8, 2007|publisher=Sun Microsystems|access-date=2007-05-09}}</ref> Beberapa dibebani bagian ternyata cukup bagian-bagian kunci dari platform seperti font rendering dan 2D rasterising, tapi ini dirilis sebagai open-source kemudian oleh Matahari (lihat OpenJDK perpustakaan Kelas). |
Sun merilis [[kode sumber]] dari perpustakaan Kelas bawah [[Lisensi Publik Umum GNU|GPL]] pada 8 Mei 2007, kecuali beberapa bagian tertentu yang diberi lisensi oleh Matahari dari pihak ke-3 yang tidak ingin mereka kode yang akan dirilis di bawah sebuah software gratis dan open-source yang berlisensi.<ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/announce/2007-May.txt|title=Open JDK is here!|date=May 8, 2007|publisher=Sun Microsystems|access-date=2007-05-09}}</ref> Beberapa dibebani bagian ternyata cukup bagian-bagian kunci dari platform seperti font rendering dan 2D rasterising, tapi ini dirilis sebagai open-source kemudian oleh Matahari (lihat OpenJDK perpustakaan Kelas). |
||
Baris 144: | Baris 145: | ||
Matahari itu tujuannya adalah untuk mengganti bagian-bagian yang tetap eksklusif dan tertutup-sumber dengan implementasi alternatif dan membuat perpustakaan kelas benar-benar gratis dan open source. Sementara itu, pihak ketiga proyek yang disebut IcedTea dibuat benar-benar gratis dan sangat bermanfaat JDK dengan mengganti dibebani kode dengan rintisan atau kode dari GNU Classpath. Meskipun OpenJDK sejak itu menjadi mudah dibangun tanpa dibebani bagian (dari OpenJDK 6 b10<ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/jdk6-dev/2008-June/000060.html|title=OpenJDK6 b10 source posted|last=Wielaard|first=Mark|date=2007-05-30|access-date=2008-07-12}}</ref>), IcedTea masih digunakan oleh sebagian besar distribusi linux, seperti [[Fedora]], RHEL, [[Debian]], [[Ubuntu]], [[Gentoo Linux|Gentoo]], [[Arch Linux]] dan [[Slackware]], karena menyediakan keamanan rilis dan mudah cara untuk patch inklusi. OpenJDK juga masih tidak menyertakan plugin browser & Web Mulai implementasi, sehingga IcedTea pendamping proyek, IcedTea-Web, adalah diperlukan untuk mengisi kesenjangan ini. |
Matahari itu tujuannya adalah untuk mengganti bagian-bagian yang tetap eksklusif dan tertutup-sumber dengan implementasi alternatif dan membuat perpustakaan kelas benar-benar gratis dan open source. Sementara itu, pihak ketiga proyek yang disebut IcedTea dibuat benar-benar gratis dan sangat bermanfaat JDK dengan mengganti dibebani kode dengan rintisan atau kode dari GNU Classpath. Meskipun OpenJDK sejak itu menjadi mudah dibangun tanpa dibebani bagian (dari OpenJDK 6 b10<ref>{{Cite web|url=http://mail.openjdk.java.net/pipermail/jdk6-dev/2008-June/000060.html|title=OpenJDK6 b10 source posted|last=Wielaard|first=Mark|date=2007-05-30|access-date=2008-07-12}}</ref>), IcedTea masih digunakan oleh sebagian besar distribusi linux, seperti [[Fedora]], RHEL, [[Debian]], [[Ubuntu]], [[Gentoo Linux|Gentoo]], [[Arch Linux]] dan [[Slackware]], karena menyediakan keamanan rilis dan mudah cara untuk patch inklusi. OpenJDK juga masih tidak menyertakan plugin browser & Web Mulai implementasi, sehingga IcedTea pendamping proyek, IcedTea-Web, adalah diperlukan untuk mengisi kesenjangan ini. |
||
Pada juni 2008, diumumkan bahwa IcedTea6 (karena dikemas versi OpenJDK pada [[Fedora|Fedora 9]]) telah lulus Teknologi Kompatibilitas Kit tes dan dapat mengklaim untuk menjadi sepenuhnya kompatibel 6 implementasi.<ref>{{Cite web|url=http://blog.softwhere.org/archives/196|title=Java is finally Free and Open|last=Sharples|first=Rich|date=2008-06-19}}</ref> |
Pada juni 2008, diumumkan bahwa IcedTea6 (karena dikemas versi OpenJDK pada [[Fedora|Fedora 9]]) telah lulus Teknologi Kompatibilitas Kit tes dan dapat mengklaim untuk menjadi sepenuhnya kompatibel 6 implementasi.<ref>{{Cite web|url=http://blog.softwhere.org/archives/196|title=Java is finally Free and Open|last=Sharples|first=Rich|date=2008-06-19|access-date=2016-10-20|archive-date=2008-06-20|archive-url=https://web.archive.org/web/20080620065024/http://blog.softwhere.org/archives/196|dead-url=yes}}</ref> |
||
Karena OpenJDK adalah di bawah lisensi GPL, adalah mungkin untuk mendistribusikan versi kustom dari JRE secara langsung dengan perangkat lunak aplikasi,<ref>{{Cite web|url=https://github.com/libgdx/libgdx/wiki/Bundling-a-jre|title=Bundling a jre · libgdx/libgdx Wiki · GitHub|last=libgdx|date=2013-12-09|publisher=Github.com|access-date=2016-02-09}}</ref><ref>{{Cite web|url=http://www.java-gaming.org/index.php?PHPSESSID=ot5lti8ioobb2tv4q65e3vt402&topic=29070.0|title=Question about bundling custom OpenJDK|date=|publisher=Java-Gaming.org|access-date=2016-02-09}}</ref> daripada membutuhkan enduser (atau mereka sysadmin) untuk men-download dan menginstal versi yang benar dari milik Oracle JRE ke masing-masing sistem mereka sendiri. |
Karena OpenJDK adalah di bawah lisensi GPL, adalah mungkin untuk mendistribusikan versi kustom dari JRE secara langsung dengan perangkat lunak aplikasi,<ref>{{Cite web|url=https://github.com/libgdx/libgdx/wiki/Bundling-a-jre|title=Bundling a jre · libgdx/libgdx Wiki · GitHub|last=libgdx|date=2013-12-09|publisher=Github.com|access-date=2016-02-09}}</ref><ref>{{Cite web|url=http://www.java-gaming.org/index.php?PHPSESSID=ot5lti8ioobb2tv4q65e3vt402&topic=29070.0|title=Question about bundling custom OpenJDK|date=|publisher=Java-Gaming.org|access-date=2016-02-09|archive-date=2016-03-04|archive-url=https://web.archive.org/web/20160304033854/http://www.java-gaming.org/index.php?PHPSESSID=ot5lti8ioobb2tv4q65e3vt402&topic=29070.0|dead-url=yes}}</ref> daripada membutuhkan enduser (atau mereka sysadmin) untuk men-download dan menginstal versi yang benar dari milik Oracle JRE ke masing-masing sistem mereka sendiri. |
||
== Kritik == |
== Kritik == |
||
Dalam kebanyakan kasus, dukungan Java adalah tidak perlu di Web browser, dan |
Dalam kebanyakan kasus, dukungan Java adalah tidak perlu di Web browser, dan para ahli keamanan merekomendasikan bahwa Java jangan dijalankan di browser kecuali benar-benar diperlukan.<ref>{{Cite web|url=http://nakedsecurity.sophos.com/2013/01/15/disable-java-browsers-homeland-security/|title="Unless it is absolutely necessary to run Java in web browsers, disable it", DHS-sponsored CERT team says – Naked Security|last=Graham Cluley|date=2013-01-15|publisher=Nakedsecurity.sophos.com|access-date=2016-02-09}}</ref> Ia menyarankan bahwa, jika Java diperlukan oleh beberapa situs Web, pengguna harus memiliki browser yang terinstal secara terpisah khusus untuk situs-situs tersebut. |
||
=== |
=== Tambalan generik === |
||
Ketika |
Ketika tambalan generik yang ditambahkan untuk Java 5.0, sudah ada kerangka besar dari kelas-kelas (banyak yang sudah usang), sehingga tambahan generik yang dipilih untuk diimplementasikan menggunakan penghapusan untuk memungkinkan ''migrasi kompatibilitas'' dan penggunaan kembali ini kelas-kelas yang ada. Ini terbatas fitur yang bisa disediakan oleh penambahan ini dibandingkan dengan beberapa bahasa lain.<ref>{{Cite web|url=http://www.ociweb.com/jnb/jnbJul2003.html|title=Generics in Java|publisher=Object Computing, Inc.|access-date=2006-12-09}}</ref><ref>{{Cite web|url=http://www.safalra.com/programming/java/wrong-type-erasure/|title=What's Wrong With Java: Type Erasure|date=2006-12-06|access-date=2006-12-09|archive-date=2012-09-03|archive-url=https://www.webcitation.org/6APL04CFA?url=http://code.stephenmorley.org/articles/java-generics-type-erasure/|dead-url=yes}}</ref> |
||
=== |
=== Jenis unsigned integer === |
||
Java tidak memiliki |
Java tidak memiliki jenis [[Integer (ilmu komputer)|unsigned integer]] asli. Data Unsigned sering dihasilkan dari program yang ditulis dalam [[C (bahasa pemrograman)|C]] dan kurangnya jenis ini langsung mencegah pertukaran data antara C dan Java. Unsigned jumlah besar juga banyak digunakan dalam pengolahan angka bidang, termasuk kriptografi, yang dapat membuat kurang nyaman digunakan untuk tugas-tugas ini.<ref>{{Cite web|url=http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4504839|title=Java libraries should provide support for unsigned integer arithmetic|website=Bug Database, Sun Developer Network|publisher=Oracle|access-date=2011-01-18}}</ref> |
||
Meskipun hal ini mungkin untuk sebagian menghindari masalah ini dengan konversi kode dan menggunakan data yang lebih besar jenis, itu membuat menggunakan Java rumit untuk menangani data unsigned. Sementara 32-bit signed integer dapat digunakan untuk menyimpan 16-bit unsigned nilai dengan relatif mudah, 32-bit unsigned nilainya akan memerlukan 64-bit signed integer. Selain itu, 64-bit unsigned nilai tidak dapat disimpan menggunakan tipe integer di karena tidak ada jenis yang lebih besar dari 64 bit yang ada dalam bahasa . Jika disarikan menggunakan fungsi, fungsi panggilan menjadi perlu untuk banyak operasi yang asli untuk beberapa bahasa lain. Selain itu, adalah mungkin untuk menggunakan Java ditandatangani bilangan bulat untuk meniru unsigned bilangan bulat dengan ukuran yang sama, tetapi hal ini membutuhkan pengetahuan rinci kompleks bitwise operasi.<ref>{{Cite web|url=http://darksleep.com/player/JavaAndUnsignedTypes.html|title=Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)|last=Owens|first=Sean R.|date=2009-11-05|website=darksleep.com|access-date=2010-10-09}}</ref> |
Meskipun hal ini mungkin untuk sebagian menghindari masalah ini dengan konversi kode dan menggunakan data yang lebih besar jenis, itu membuat menggunakan Java rumit untuk menangani data unsigned. Sementara 32-bit signed integer dapat digunakan untuk menyimpan 16-bit unsigned nilai dengan relatif mudah, 32-bit unsigned nilainya akan memerlukan 64-bit signed integer. Selain itu, 64-bit unsigned nilai tidak dapat disimpan menggunakan tipe integer di karena tidak ada jenis yang lebih besar dari 64 bit yang ada dalam bahasa . Jika disarikan menggunakan fungsi, fungsi panggilan menjadi perlu untuk banyak operasi yang asli untuk beberapa bahasa lain. Selain itu, adalah mungkin untuk menggunakan Java ditandatangani bilangan bulat untuk meniru unsigned bilangan bulat dengan ukuran yang sama, tetapi hal ini membutuhkan pengetahuan rinci kompleks bitwise operasi.<ref>{{Cite web|url=http://darksleep.com/player/JavaAndUnsignedTypes.html|title=Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)|last=Owens|first=Sean R.|date=2009-11-05|website=darksleep.com|access-date=2010-10-09}}</ref> |
||
=== |
=== Aritmatika floating point === |
||
Sementara di floating point aritmetika adalah sebagian besar didasarkan pada standar IEEE 754 (''Standar untuk Biner Floating-Point Aritmetika''), fitur-fitur tertentu yang tidak didukung bahkan ketika menggunakan <code>strictfp</code> pengubah, seperti Pengecualian Bendera dan Diarahkan Pembulatan — kemampuan yang diamanatkan oleh Standar IEEE 754. Selain itu, extended precision floating-point jenis yang diizinkan dalam 754 dan hadir dalam banyak prosesor yang tidak diizinkan di .<ref>{{Cite web|url=http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf|title=How Java's Floating-Point Hurts Everyone Everywhere|last=Kahan|first=W.|last2=Joseph D. Darcy|date=1998-03-01|format=PDF|access-date=2006-12-09}}</ref><ref>{{Cite web|url=http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3|title=Types, Values, and Variables|publisher=Sun Microsystems|access-date=2006-12-09}}</ref> |
Sementara di floating point aritmetika adalah sebagian besar didasarkan pada standar IEEE 754 (''Standar untuk Biner Floating-Point Aritmetika''), fitur-fitur tertentu yang tidak didukung bahkan ketika menggunakan <code>strictfp</code> pengubah, seperti Pengecualian Bendera dan Diarahkan Pembulatan — kemampuan yang diamanatkan oleh Standar IEEE 754. Selain itu, extended precision floating-point jenis yang diizinkan dalam 754 dan hadir dalam banyak prosesor yang tidak diizinkan di .<ref>{{Cite web|url=http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf|title=How Java's Floating-Point Hurts Everyone Everywhere|last=Kahan|first=W.|last2=Joseph D. Darcy|date=1998-03-01|format=PDF|access-date=2006-12-09}}</ref><ref>{{Cite web|url=http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3|title=Types, Values, and Variables|publisher=Sun Microsystems|access-date=2006-12-09}}</ref> |
||
=== Kinerja === |
=== Kinerja === |
||
Pada hari-hari awal dari (sebelum HotSpot VM dilaksanakan di 1.3 2000) ada beberapa kritik kinerja. Namun, tolok ukur biasanya melaporkan menjadi sekitar 50% lebih lambat dari C (bahasa yang mengkompilasi kode asli).<ref name="debchart"> |
Pada hari-hari awal dari (sebelum HotSpot VM dilaksanakan di 1.3 2000) ada beberapa kritik kinerja. Namun, tolok ukur biasanya melaporkan menjadi sekitar 50% lebih lambat dari C (bahasa yang mengkompilasi kode asli).<ref name="debchart">{{Cite web |url=http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php |title=Which programming languages are fastest? |access-date=2016-10-20 |archive-date=2011-08-17 |archive-url=https://web.archive.org/web/20110817035023/http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php |dead-url=yes }}</ref><ref>{{Cite web |url=http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=javasteady&lang2=gpp |title=speed ÷ C++ GNU g++ speed {{!}} Computer Language Benchmarks Game |access-date=2016-10-20 |archive-date=2012-03-24 |archive-url=https://web.archive.org/web/20120324074739/http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=javasteady&lang2=gpp |dead-url=unfit }}</ref><ref>{{Cite web|url=http://blog.cfelde.com/2010/06/c-vs-java-performance/|title=C++ vs Java performance; It’s a tie! | Blog of Christian Felde|date=|publisher=Blog.cfelde.com|access-date=2016-02-09}}</ref> |
||
Java kinerja telah meningkat secara substansial sejak versi awal.<ref name="LewisNeumann" |
Java kinerja telah meningkat secara substansial sejak versi awal.<ref name="LewisNeumann"/> Kinerja [[Kompilasi tepat waktu|JIT compiler]] relatif asli penyusun memiliki beberapa dioptimalkan tes telah terbukti cukup mirip.<ref name="LewisNeumann">{{Cite web|url=http://scribblethink.org/Computer/javaCbenchmark.html|title=Performance of Java versus C++|last=J.P.Lewis and Ulrich Neumann|publisher=Graphics and Immersive Technology Lab, [[University of Southern California]]}}</ref><ref name=":0"/><ref name=":1"/> |
||
[[Bytecode Java|Java bytecode]] dapat diartikan pada saat dijalankan oleh mesin virtual, atau dapat disusun pada waktu beban atau runtime menjadi kode native yang berjalan secara langsung pada perangkat keras komputer. Interpretasi lebih lambat dari yang asli eksekusi dan kompilasi pada waktu beban atau runtime memiliki kinerja awal penalti untuk kompilasi. Modern performant JVM implementasi semua menggunakan kompilasi pendekatan, sehingga setelah waktu startup awal kinerja setara dengan native code. |
[[Bytecode Java|Java bytecode]] dapat diartikan pada saat dijalankan oleh mesin virtual, atau dapat disusun pada waktu beban atau runtime menjadi kode native yang berjalan secara langsung pada perangkat keras komputer. Interpretasi lebih lambat dari yang asli eksekusi dan kompilasi pada waktu beban atau runtime memiliki kinerja awal penalti untuk kompilasi. Modern performant JVM implementasi semua menggunakan kompilasi pendekatan, sehingga setelah waktu startup awal kinerja setara dengan native code. |
||
Baris 173: | Baris 174: | ||
Dalam beberapa tahun terakhir, para peneliti telah menemukan sejumlah kelemahan keamanan dalam beberapa banyak digunakan Java implementasi, termasuk Oracle, yang memungkinkan kode yang tidak dipercaya untuk memotong sandboxing mekanisme, mengekspos pengguna untuk serangan berbahaya. Kekurangan ini mempengaruhi hanya aplikasi Java yang mengeksekusi sewenang-wenang tepercaya bytecode, seperti web browser plugin yang menjalankan Java applet yang didownload dari situs web publik. Aplikasi di mana pengguna trust, dan memiliki kontrol penuh atas semua kode yang sedang dieksekusi tidak terpengaruh. |
Dalam beberapa tahun terakhir, para peneliti telah menemukan sejumlah kelemahan keamanan dalam beberapa banyak digunakan Java implementasi, termasuk Oracle, yang memungkinkan kode yang tidak dipercaya untuk memotong sandboxing mekanisme, mengekspos pengguna untuk serangan berbahaya. Kekurangan ini mempengaruhi hanya aplikasi Java yang mengeksekusi sewenang-wenang tepercaya bytecode, seperti web browser plugin yang menjalankan Java applet yang didownload dari situs web publik. Aplikasi di mana pengguna trust, dan memiliki kontrol penuh atas semua kode yang sedang dieksekusi tidak terpengaruh. |
||
Pada agustus 31, 2012, 6 dan 7 pada Microsoft Windows, Mac OS X, dan Linux ditemukan memiliki keamanan yang |
Pada agustus 31, 2012, 6 dan 7 pada Microsoft Windows, Mac OS X, dan Linux ditemukan memiliki keamanan yang sangat cacat yang memperbolehkan [[Exploit|remote exploit]] untuk mengambil tempat dengan hanya memuat sebuah halaman web berbahaya.<ref>{{Cite web|url=http://blogs.computerworld.com/cybercrime-and-hacking/20921/java-security-flaw-yada-yada-yada|title=Java security flaw: yada yada yada | Computerworld|last=Horowitz|first=Michael|date=2012-08-31|publisher=Blogs.computerworld.com|access-date=2016-02-09|archive-date=2014-07-24|archive-url=https://web.archive.org/web/20140724212538/http://blogs.computerworld.com/cybercrime-and-hacking/20921/java-security-flaw-yada-yada-yada|dead-url=yes}}</ref> {{Nowrap|Java 5}} kemudian ditemukan untuk menjadi cacat juga.<ref>{{Cite web|url=http://threatpost.com/en_us/blogs/new-zero-day-vulnerability-found-java-5-6-and-7-11-billion-desktops-affected-092612|title=The first stop for security news|last=Brook|first=Chris|date=|publisher=Threatpost|access-date=2016-02-09|archive-date=2013-03-08|archive-url=https://web.archive.org/web/20130308043441/http://threatpost.com/en_us/blogs/new-zero-day-vulnerability-found-java-5-6-and-7-11-billion-desktops-affected-092612|dead-url=yes}}</ref> |
||
Pada tanggal 10 januari 2013, tiga spesialis komputer berbicara menentang |
Pada tanggal 10 januari 2013, tiga spesialis komputer berbicara menentang, mengatakan kepada [[Reuters]] bahwa itu tidak aman dan bahwa orang harus menonaktifkan Java. Jaime Blasco, Labs Manajer dengan AlienVault Labs, menyatakan bahwa " berantakan. Hal ini tidak aman. Anda harus menonaktifkannya."<ref>{{Cite web|url=http://www.nbcnews.com/id/50438206/ns/technology_and_science-innovation/t/why-how-disable-java-your-computer-now#.UhJ652RrMdg|title=Why and How to Disable Java on Your Computer Now - Technology & science - Innovation|date=2013-01-12|publisher=NBC News|access-date=2016-02-09}}</ref> |
||
Kerentanan ini mempengaruhi {{Nowrap|Java 7}} dan tidak jelas apakah hal itu mempengaruhi {{Nowrap|Java 6}}, sehingga disarankan agar konsumen menonaktifkannya.<ref>{{Cite web|url=http://www.forbes.com/sites/eliseackerman/2013/01/11/us-department-of-homeland-security-calls-on-computer-users-to-disable-java/|title=US Department of Homeland Security Calls On Computer Users To Disable Java|last=|date=|publisher=Forbes.com|access-date=2016-02-09}}</ref><ref>{{Cite web|url=http://threatpost.com/en_us/blogs/nasty-new-java-zero-day-found-exploit-kits-already-have-it-011013?utm_source=Threatpost&utm_medium=Tabs&utm_campaign=Today%27s+Most+Popular|title=The first stop for security news|last=Brook|first=Chris|date=|publisher=Threatpost|access-date=2016-02-09}}</ref> peringatan Keamanan dari Oracle mengumumkan jadwal penting yang berhubungan dengan keamanan patch ke .<ref>{{Cite web|url=http://www.oracle.com/technetwork/topics/security/alerts-086861.html|title=Critical Patch Updates and Security Alerts|date=|publisher=Oracle.com|access-date=2016-02-09}}</ref> |
Kerentanan ini mempengaruhi {{Nowrap|Java 7}} dan tidak jelas apakah hal itu mempengaruhi {{Nowrap|Java 6}}, sehingga disarankan agar konsumen menonaktifkannya.<ref>{{Cite web|url=http://www.forbes.com/sites/eliseackerman/2013/01/11/us-department-of-homeland-security-calls-on-computer-users-to-disable-java/|title=US Department of Homeland Security Calls On Computer Users To Disable Java|last=|date=|publisher=Forbes.com|access-date=2016-02-09}}</ref><ref>{{Cite web|url=http://threatpost.com/en_us/blogs/nasty-new-java-zero-day-found-exploit-kits-already-have-it-011013?utm_source=Threatpost&utm_medium=Tabs&utm_campaign=Today%27s+Most+Popular|title=The first stop for security news|last=Brook|first=Chris|date=|publisher=Threatpost|access-date=2016-02-09}}</ref> peringatan Keamanan dari Oracle mengumumkan jadwal penting yang berhubungan dengan keamanan patch ke .<ref>{{Cite web|url=http://www.oracle.com/technetwork/topics/security/alerts-086861.html|title=Critical Patch Updates and Security Alerts|date=|publisher=Oracle.com|access-date=2016-02-09}}</ref> |
||
Pada tanggal 14 januari 2013, para ahli keamanan mengatakan bahwa update masih gagal untuk melindungi Pc dari serangan.<ref>{{Cite web|url=http://www.independent.ie/business/technology/emergency-patch-for-java-fails-to-fix-cybercrime-holes-warn-experts-3351321.html|title=Emergency patch for Java fails to fix cybercrime holes, warn experts|last=Jim Finkle|date=2013-01-14|publisher=Independent.ie|access-date=2016-02-09}}</ref> Ini mengeksploitasi lubang diminta tanggapan dari [[Departemen Keamanan Dalam Negeri Amerika Serikat|United States Department of Homeland Security]] mendorong pengguna untuk menonaktifkan atau uninstall .<ref name="Homeland Security" |
Pada tanggal 14 januari 2013, para ahli keamanan mengatakan bahwa update masih gagal untuk melindungi Pc dari serangan.<ref>{{Cite web|url=http://www.independent.ie/business/technology/emergency-patch-for-java-fails-to-fix-cybercrime-holes-warn-experts-3351321.html|title=Emergency patch for Java fails to fix cybercrime holes, warn experts|last=Jim Finkle|date=2013-01-14|publisher=Independent.ie|access-date=2016-02-09}}</ref> Ini mengeksploitasi lubang diminta tanggapan dari [[Departemen Keamanan Dalam Negeri Amerika Serikat|United States Department of Homeland Security]] mendorong pengguna untuk menonaktifkan atau uninstall .<ref name="Homeland Security"/> Apple masuk dalam daftar hitam di terbatas agar semua komputer yang menjalankan [[OS X|Mac OS X]] sistem operasi melalui program perlindungan virus.<ref>{{Cite web|url=http://venturebeat.com/2013/01/14/java-fix-issued/|title=Oracle issues fix for Java exploit after DHS warns of its holes | VentureBeat | Security | by Meghan Kelly|last=Meghan Kelly January 14, 2013 3:26 PM|date=2013-01-14|publisher=VentureBeat|access-date=2016-02-09}}</ref> |
||
Menanggapi terbaru keamanan dan kerentanan masalah, keamanan blogger Brian Krebs telah meminta pengguna untuk menghapus setidaknya Java plugin browser dan juga seluruh perangkat lunak. "Saya melihat ke depan untuk sebuah dunia tanpa plugin Java (dan tidak memiliki untuk mengingatkan pembaca tentang triwulanan patch update) tapi itu mungkin akan menjadi tahun sebelum berbagai versi dari plugin ini adalah sebagian besar dihapus dari sistem end-user di seluruh dunia.""<ref>{{Cite web|url=http://krebsonsecurity.com/2016/02/good-riddance-to-oracles-java-plugin/|title=Good Riddance to Oracle’s Java Plugin|last=Krebs|first=Brian|date=16 February 2016|website=KrebsOnSecurity}}</ref> "Setelah menjanjikan, telah hidup lebih lama kegunaannya di browser, dan telah menjadi mimpi buruk yang nikmat cyber-penjahat dengan mengorbankan pengguna komputer."<ref>{{Cite web|url=http://readwrite.com/2012/09/05/java-is-no-longer-needed-pull-the-plug-in|title=Java Is No Longer Needed. Pull The Plug-In|last=Gonsalves|first=Antone|date=5 September 2012|website=ReadWrite|publisher=Wearable World}}</ref> "saya pikir semua orang harus uninstall Java dari semua Pc dan Mac, dan kemudian berpikir hati-hati tentang apakah mereka perlu menambahkannya kembali. Jika anda adalah tipe pengguna rumah, anda mungkin bisa melakukannya tanpa itu. Jika anda adalah pengguna bisnis, anda mungkin tidak memiliki pilihan."<ref>{{Cite web|url=http://www.theguardian.com/technology/askjack/2013/feb/08/java-remove-ask-jack-technology|title=Java: should you remove it?|date=8 February 2013|website=[[theguardian.com]]|publisher=[[Guardian Media Group]]}}</ref> |
Menanggapi terbaru keamanan dan kerentanan masalah, keamanan blogger Brian Krebs telah meminta pengguna untuk menghapus setidaknya Java plugin browser dan juga seluruh perangkat lunak. "Saya melihat ke depan untuk sebuah dunia tanpa plugin Java (dan tidak memiliki untuk mengingatkan pembaca tentang triwulanan patch update) tapi itu mungkin akan menjadi tahun sebelum berbagai versi dari plugin ini adalah sebagian besar dihapus dari sistem end-user di seluruh dunia.""<ref>{{Cite web|url=http://krebsonsecurity.com/2016/02/good-riddance-to-oracles-java-plugin/|title=Good Riddance to Oracle’s Java Plugin|last=Krebs|first=Brian|date=16 February 2016|website=KrebsOnSecurity}}</ref> "Setelah menjanjikan, telah hidup lebih lama kegunaannya di browser, dan telah menjadi mimpi buruk yang nikmat cyber-penjahat dengan mengorbankan pengguna komputer."<ref>{{Cite web|url=http://readwrite.com/2012/09/05/java-is-no-longer-needed-pull-the-plug-in|title=Java Is No Longer Needed. Pull The Plug-In|last=Gonsalves|first=Antone|date=5 September 2012|website=ReadWrite|publisher=Wearable World}}</ref> "saya pikir semua orang harus uninstall Java dari semua Pc dan Mac, dan kemudian berpikir hati-hati tentang apakah mereka perlu menambahkannya kembali. Jika anda adalah tipe pengguna rumah, anda mungkin bisa melakukannya tanpa itu. Jika anda adalah pengguna bisnis, anda mungkin tidak memiliki pilihan."<ref>{{Cite web|url=http://www.theguardian.com/technology/askjack/2013/feb/08/java-remove-ask-jack-technology|title=Java: should you remove it?|date=8 February 2013|website=[[theguardian.com]]|publisher=[[Guardian Media Group]]}}</ref> |
||
=== Adware === |
=== Adware === |
||
Java runtime environment memiliki sejarah bundling disponsori perangkat lunak yang akan diinstal secara default pada saat instalasi dan saat update yang menggelar setiap bulan atau lebih. Ini mencakup "[[Ask.com|Ask.com toolbar]]" yang akan mengarahkan browser pencarian untuk iklan dan "McAfee Security Scan Plus".<ref name="foistware">{{Cite web|url=http://www.zdnet.com/article/a-close-look-at-how-oracle-installs-deceptive-software-with-java-updates/|title=A close look at how Oracle installs deceptive software with Java updates|last=Bott|first=Ed|website=ZDNet.com|publisher=ZDNet|access-date=14 December 2014}}</ref> penawaran Ini dapat diblokir melalui pengaturan di Control Panel |
Java runtime environment memiliki sejarah bundling disponsori perangkat lunak yang akan diinstal secara default pada saat instalasi dan saat update yang menggelar setiap bulan atau lebih. Ini mencakup "[[Ask.com|Ask.com toolbar]]" yang akan mengarahkan browser pencarian untuk iklan dan "McAfee Security Scan Plus".<ref name="foistware">{{Cite web|url=http://www.zdnet.com/article/a-close-look-at-how-oracle-installs-deceptive-software-with-java-updates/|title=A close look at how Oracle installs deceptive software with Java updates|last=Bott|first=Ed|website=ZDNet.com|publisher=ZDNet|access-date=14 December 2014}}</ref> penawaran Ini dapat diblokir melalui pengaturan di Control Panel, meskipun hal ini tidak jelas. |
||
=== Pembaruan sistem === |
=== Pembaruan sistem === |
||
Baris 189: | Baris 190: | ||
== Lihat juga == |
== Lihat juga == |
||
* Daftar |
* [[Daftar API Java]] |
||
⚫ | |||
* Penebangan Kerangka |
|||
* Java kinerja |
|||
⚫ | |||
* Jazelle |
|||
* ConcurrentMap |
|||
== Referensi == |
== Referensi == |
||
Baris 201: | Baris 198: | ||
== Pranala luar == |
== Pranala luar == |
||
* {{Resmi}} |
* {{Resmi}} |
||
* [http://java.sun.com/ sun.com – |
* [http://java.sun.com/ sun.com – Situs resmi pengembang] |
||
* [http://www.infoq.com/presentations/gosling-jvm-lang-summit-keynote infoq.com – Presentasi] oleh [[James Gosling]] tentang asal-usul |
* [http://www.infoq.com/presentations/gosling-jvm-lang-summit-keynote infoq.com – Presentasi] oleh [[James Gosling]] tentang asal-usul Java, dari JVM Bahasa Summit 2008 |
||
* [http://www.java-forums.org/forum.php Java forums organization]{{Pranala mati|date=Januari 2023 |bot=InternetArchiveBot |fix-attempted=yes }} |
|||
* [http://roseindia.net/java/ Java Tutorial dan contoh-Contoh koleksi] |
|||
* [http://www.java-tips.org/ Tips organisasi] |
|||
* [http://www.java-forums.org/forum.php forum organisasi] |
|||
* [http://javatopics77.blogspot.com/ Pendahuluan], 14 Mei 2014, Java77 Blog |
|||
* [http://javatester.org/version.html javatester.org – Apa Versi Java Yang Anda Gunakan?], untuk mengetahui versi yang anda gunakan |
|||
* '''[http://singularlabs.com/software/javara/ JavaRa]''', sebuah utilitas yang dikembangkan oleh Paul McLain dan Fred De Vries di ''RaProducts'' untuk menemukan dan menghapus versi lama Java, sekarang didistribusikan oleh ''SingularLabs'' |
|||
* [https://www.youtube.com/watch?v=Ipkqu2bKxYg J'''ava''' Sejarah] |
|||
[[Kategori:Platform komputer]] |
[[Kategori:Platform komputer]] |
Revisi terkini sejak 22 April 2023 15.03
Artikel atau bagian artikel ini diterjemahkan secara buruk. |
Artikel atau bagian dari artikel ini diterjemahkan dari Java (software platform) di en.wiki-indonesia.club. Terjemahannya masih terlalu kaku, kemungkinan besar karena kalimat Inggrisnya diterjemahkan kata-per-kata. Maka dari itu, terjemahan di artikel ini masih memerlukan penyempurnaan. Pengguna yang mahir dengan bahasa yang bersangkutan dipersilakan untuk menelusuri referensinya dan menyempurnakan terjemahan ini, atau Anda juga dapat ikut bergotong royong dalam ProyekWiki Perbaikan Terjemahan. (Pesan ini dapat dihapus jika terjemahan dirasa sudah cukup tepat. Lihat pula: panduan penerjemahan artikel) |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Aspectotuxguitar.jpg/220px-Aspectotuxguitar.jpg)
Java adalah satu set perangkat lunak komputer dan spesifikasi yang dikembangkan oleh Sun Microsystems, yang kemudian diakuisisi oleh Oracle Corporation, yang menyediakan sistem untuk mengembangkan aplikasi perangkat lunak dan menerapkan hal itu dalam sebuah cross-platform lingkungan komputasi. digunakan di berbagai macam platform komputasi dari perangkat embedded dan ponsel ke server perusahaan dan superkomputer. Sementara mereka yang kurang umum dari standalone aplikasi Java, Java applet yang berjalan di aman, lingkungan tersandbox untuk memberikan banyak fitur dari aplikasi asli dan dapat tertanam ke dalam HTML halaman.
Penulisan dalam bahasa pemrograman Java adalah cara utama untuk menghasilkan kode yang akan digunakan sebagai kode byte pada sebuah Mesin Virtual Java (JVM); bytecode compiler juga tersedia untuk bahasa-bahasa lain, termasuk Ada, JavaScript, Python, dan Ruby. Selain itu, beberapa bahasa telah dirancang untuk berjalan secara native pada JVM, termasuk Scala, Clojure, dan Apache Groovy. sintaks meminjam banyak dari C dan C++, tetapi berorientasi objek memiliki dimodelkan setelah Smalltalk dan Objective-C.[1] eschews tertentu tingkat rendah konstruksi seperti pointer dan memiliki memori yang sangat sederhana model di mana setiap objek yang dialokasikan di heap dan semua variabel dari jenis objek referensi. Manajemen memori ditangani melalui otomatis terintegrasi pengumpulan sampah yang dilakukan oleh JVM.
Pada November 13, 2006, Sun Microsystems membuat sebagian besar implementasi dari tersedia di bawah GNU General Public License (GPL).[2][3]
Terbaru versi Java 8, hanya didukung (misalnya dengan pembaharuan keamanan) versi 2016. Oracle (dan lain-lain) telah mengumumkan bahwa menggunakan versi yang lebih tua (dari 8) mereka JVM pelaksanaan menghadirkan risiko serius akibat belum terselesaikan masalah keamanan.[4][5][6]
Platform
[sunting | sunting sumber]Platform Java adalah seperangkat program yang memfasilitasi mengembangkan dan menjalankan program yang ditulis dalam Java bahasa pemrograman. Java platform akan mencakup eksekusi mesin (disebut mesin virtual), compiler dan satu set perpustakaan; mungkin juga ada tambahan server dan alternatif perpustakaan yang tergantung pada persyaratan. Java adalah tidak spesifik untuk setiap prosesor atau sistem operasi seperti Java platform telah diimplementasikan untuk berbagai macam perangkat keras dan sistem operasi dengan maksud untuk memungkinkan program Java untuk menjalankan identik pada semua dari mereka. Berbeda platform target kelas yang berbeda dari perangkat dan aplikasi domain:
- Java Card: Sebuah teknologi yang memungkinkan kecil aplikasi berbasis Java (applet) yang akan berjalan dengan aman pada smart card dan kecil yang sama-memori perangkat.
- Java ME (Micro Edition): Menentukan beberapa set yang berbeda dari perpustakaan (dikenal sebagai profil) untuk perangkat dengan penyimpanan terbatas, layar, dan kapasitas daya. Hal ini sering digunakan untuk mengembangkan aplikasi untuk perangkat mobile, Pda, TV set-top box, dan printer.
- Java SE (Standard Edition): Untuk keperluan umum digunakan pada Pc desktop, server, dan perangkat sejenis.
- Java EE (Enterprise Edition): SE ditambah berbagai Api yang berguna untuk multi-tier client–server aplikasi enterprise.
Platform Java terdiri dari beberapa program, masing-masing menyediakan sebagian dari kemampuan secara keseluruhan. Misalnya, Java compiler, yang mengubah kode sumber Java menjadi bytecode Java (bahasa menengah untuk JVM), diberikan sebagai bagian dari Java Development Kit (JDK). The Java Runtime Environment (JRE), melengkapi JVM dengan just-in-time (JIT) compiler, yang mengubah menengah bytecode menjadi asli kode mesin on the fly. Platform Java juga mencakup serangkaian luas dari perpustakaan.
Komponen penting dalam platform Java compiler bahasa, perpustakaan, dan lingkungan runtime yang di intermediate mengeksekusi bytecode menurut aturan yang tercantum dalam virtual machine spesifikasi. taek.
Mesin Virtual Java
[sunting | sunting sumber]Jantung platform Java adalah konsep "virtual machine" yang mengeksekusi program bytecode Java. Bytecode ini tetap bisa berjalan, tidak peduli terhadap jenis perangkat keras atau sistem operasinya. Ada JIT (Just In Time) compiler dalam Java Virtual Machineatau JVM. JIT compiler menerjemahkan bytecode Java ke native prosesor instruksi pada saat run-time dan cache kode asli dalam memori selama eksekusi.
Penggunaan bytecode sebagai perantara bahasa yang memungkinkan program Java untuk berjalan pada platform apapun yang memiliki mesin virtual yang tersedia. Penggunaan JIT compiler berarti bahwa aplikasi Java, setelah penundaan singkat selama pemuatan dan setelah mereka memiliki "pemanasan" dengan menjadi semua atau sebagian besar JIT-dikompilasi, cenderung berjalan secepat asli program.[7][8][9] Sejak JRE versi 1.2, Matahari JVM pelaksanaan sudah termasuk just-in-time compiler bukan seorang penerjemah.
Meskipun program-program Java cross-platform atau platform independen, kode Mesin Virtual Java (JVM) yang mengeksekusi program-program ini tidak. Setiap operasi yang didukung platform memiliki JVM.
Perpustakaan kelas
[sunting | sunting sumber]Di sistem operasi paling modern (OSs), tubuh besar yang dapat digunakan kembali kode yang diberikan untuk mempermudah programmer pekerjaan. Kode ini biasanya disediakan sebagai satu set dinamis loadable perpustakaan yang aplikasi dapat memanggil pada saat runtime. Karena platform Java tidak tergantung pada sistem operasi tertentu, aplikasi tidak bisa mengandalkan apapun dari yang sudah ada OS perpustakaan. Sebaliknya, platform Java menyediakan seperangkat standar sendiri perpustakaan kelas yang berisi banyak hal yang sama dapat digunakan kembali fungsi-fungsi yang umum ditemukan di sistem operasi modern. Sebagian besar sistem perpustakaan ini juga ditulis di . Misalnya, Ayunan perpustakaan cat antarmuka pengguna dan menangani peristiwa itu sendiri, menghilangkan banyak perbedaan halus antara cara yang berbeda platform menangani komponen.
Java class library melayani tiga tujuan dalam platform Java. Pertama, seperti standar lainnya kode perpustakaan, perpustakaan Java menyediakan programmer terkenal set fungsi untuk melakukan tugas-tugas umum, seperti menjaga daftar dari barang-barang atau melakukan parsing string kompleks. Kedua, kelas, perpustakaan menyediakan sebuah antarmuka abstrak untuk tugas-tugas yang biasanya akan sangat bergantung pada perangkat keras dan sistem operasi. Tugas-tugas seperti akses jaringan dan akses file yang sering sangat terjalin dengan khas implementasi dari masing-masing platform. Yang java.net
dan .io
perpustakaan mengimplementasikan sebuah abstraksi layer di OS asli kode, kemudian menyediakan sebuah antarmuka standar untuk aplikasi Java untuk melakukan tugas-tugas. Akhirnya, ketika beberapa platform yang mendasari tidak mendukung semua fitur aplikasi Java mengharapkan, perpustakaan kelas bekerja untuk anggun menangani absen komponen, baik dengan emulasi untuk menyediakan pengganti, atau setidaknya dengan menyediakan cara yang konsisten untuk memeriksa keberadaan fitur tertentu.
Bahasa
[sunting | sunting sumber]Kata "Java", sendiri, biasanya mengacu pada bahasa pemrograman Java yang dirancang untuk digunakan dengan platform Java. Bahasa pemrograman yang biasanya di luar lingkup dari kalimat "platform", meskipun bahasa pemrograman Java terdaftar sebagai bagian inti dari platform Java sebelum Java 7. Bahasa dan runtime oleh karena itu sering dianggap sebagai satu unit. Namun, upaya itu dibuat dengan Java 7 spesifikasi untuk lebih jelas memperlakukan bahasa dan mesin virtual Java sebagai entitas yang terpisah, sehingga mereka tidak lagi dianggap sebagai satu unit.[10]
Pihak ketiga yang telah menghasilkan banyak kompiler atau interpreter yang menargetkan JVM. Beberapa dari ini adalah untuk bahasa yang ada, sementara yang lain adalah untuk ekstensi untuk bahasa. Ini termasuk:
- BeanShell – ringan bahasa scripting untuk Java[11]
- Clojure – dialek dari bahasa pemrograman Lisp
- Asyik, bahasa dinamis dengan fitur yang mirip dengan orang-orang dari Python, Ruby, Perl, Smalltalk
- JRuby – Ruby interpreter
- Kelompok dari setiap dua elemen – Python interpreter
- Kotlin – industri bahasa pemrograman untuk JVM dengan penuh interoperabilitas
- Badak – JavaScript penerjemah
- Scala – multi-paradigma bahasa pemrograman yang dirancang sebagai "baik "
- Gosu – tujuan umum Mesin Virtual Java bahasa pemrograman berbasis dirilis di bawah Lisensi Apache 2.0
Platform serupa
[sunting | sunting sumber]Keberhasilan dari dan tulis sekali, jalankan di mana saja konsep-konsep yang lainnya, upaya-upaya serupa, terutama .NET Framework, yang muncul sejak tahun 2002, yang menggabungkan banyak sukses-aspek dari .NET dalam bentuk lengkap (Microsoft pelaksanaan) saat ini hanya sepenuhnya tersedia pada platform Windows, sedangkan sepenuhnya tersedia di banyak platform. .NET dibangun dari tanah-up untuk mendukung beberapa bahasa pemrograman, sedangkan platform Java pada awalnya dibangun untuk mendukung hanya bahasa, walaupun banyak bahasa lainnya telah dibuat untuk JVM.
.NET termasuk seperti bahasa yang disebut Visual J# (sebelumnya bernama J++) yang kompatibel dengan Java spesifikasi, dan terkait perpustakaan kelas sebagian besar tanggal tua JDK 1.1 versi bahasa. Untuk alasan ini, itu lebih dari sebuah transisi bahasa untuk beralih dari ke .NET platform dari itu adalah kelas pertama .NET bahasa. Visual J# dihentikan dengan rilis Microsoft Visual Studio 2008. Ada versi gratis dengan Visual Studio 2005 akan didukung hingga 2015 sesuai produk siklus hidup strategi.[butuh rujukan]
Java Development Kit
[sunting | sunting sumber]Dalam Java Development Kit (JDK) adalah Sun produk yang ditujukan untuk pengembang Java. Sejak diperkenalkannya, telah oleh jauh yang paling banyak digunakan Java software development kit (SDK).[butuh rujukan] Ini berisi compiler Java, sebuah salinan lengkap dari Java Runtime Environment (JRE), dan banyak lainnya yang penting alat-alat pengembangan.
Sejarah
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/James_Gosling_2008.jpg/220px-James_Gosling_2008.jpg)
Platform Java dan bahasa dimulai sebagai sebuah proyek internal di Sun Microsystems pada bulan desember 1990, memberikan alternatif untuk C++/C bahasa pemrograman. Insinyur Patrick Naughton telah menjadi semakin frustrasi dengan keadaan Matahari C++ dan C antarmuka pemrograman aplikasi (Api) dan alat-alat. Sementara mempertimbangkan untuk pindah ke Berikutnya, Naughton ditawarkan[oleh siapa?] kesempatan untuk bekerja pada teknologi baru, dan dengan demikian Siluman Proyek dimulai.
Stealth Proyek itu segera berganti nama menjadi the Green Project, dengan James Gosling dan Mike Sheridan bergabung Naughton. Bersama-sama dengan insinyur lain, mereka mulai bekerja di sebuah kantor kecil di Sand Hill Road di Menlo Park, California. Mereka bertujuan untuk mengembangkan teknologi baru untuk pemrograman generasi cerdas peralatan, yang Sun diharapkan untuk menawarkan besar peluang-peluang baru.[12]
Tim yang awalnya dianggap menggunakan C++, tapi ditolak karena beberapa alasan. Karena mereka mengembangkan sebuah sistem embedded dengan sumber daya yang terbatas, mereka memutuskan bahwa C++ dibutuhkan terlalu banyak memori dan kompleksitas led untuk pengembang kesalahan. Bahasa kurangnya pengumpulan sampah berarti bahwa programmer harus secara manual mengatur memori sistem, menantang dan rawan kesalahan tugas. Tim juga khawatir tentang bahasa C++ kurangnya portable fasilitas untuk keamanan, pemrograman terdistribusi, dan threading. Akhirnya, mereka menginginkan sebuah platform yang akan port dengan mudah untuk semua jenis perangkat.
Bill Joy telah memimpikan sebuah bahasa baru yang menggabungkan Mesa dan C. Dalam sebuah makalah yang disebut lebih Lanjut, ia mengusulkan untuk Sun bahwa para insinyur harus menghasilkan aplikasi yang berorientasi objek lingkungan yang didasarkan pada C++. Awalnya, Gosling berusaha untuk memodifikasi dan memperluas C++ (usulan pembangunan yang ia disebut sebagai "C++ ++ --") tapi segera ditinggalkan yang mendukung untuk menciptakan sebuah bahasa baru, yang disebut Oak, setelah pohon yang berdiri tepat di luar kantornya.[butuh rujukan]
Pada musim panas 1992, tim bisa menunjukkan bagian-bagian dari platform baru, termasuk Hijau OS, Oak bahasa, perpustakaan, dan hardware. Mereka demonstrasi pertama, pada tanggal 3 September 1992, berfokus pada membangun sebuah personal digital assistant (PDA) perangkat bernama Star7[1] yang memiliki antarmuka grafis dan smart agen yang disebut "Duke" untuk membantu pengguna. Pada bulan November tahun itu, the Green Project itu berputar off untuk menjadi Firstperson, anak perusahaan yang sepenuhnya dimiliki dari Sun Microsystems, dan tim pindah ke Palo Alto, California.[13] Yang Firstperson tim memiliki kepentingan dalam membangun sangat interaktif perangkat, dan ketika Time Warner mengeluarkan request for proposal (RFP) untuk set-top box, Firstperson mengubah target mereka dan menanggapi dengan sebuah proposal untuk sebuah set-top box platform. Namun, kabel industri merasa bahwa platform mereka memberikan terlalu banyak kontrol kepada pengguna, sehingga Firstperson kehilangan tawaran mereka untuk SGI. Tambahan berurusan dengan Yang 3DO Perusahaan untuk set-top box juga gagal terwujud. Mampu membangkitkan minat dalam industri televisi, perusahaan digulung kembali ke Matahari.
Memenuhi web
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/de/John_Gage.jpg/220px-John_Gage.jpg)
Pada bulan juni dan juli 1994 – setelah tiga hari dari brainstorming dengan John Gage (Direktur Ilmu pengetahuan untuk Sun Microsystems), Gosling, Sukacita, Naughton, Wayne Rosing, dan Eric Schmidt – tim re-target platform untuk World Wide Web. Mereka merasa bahwa dengan munculnya grafis web browser seperti Internet Mosaic bisa berkembang menjadi media yang sangat interaktif. Sebagai purwarupa, Naughton menulis sebuah browser yang kecil, WebRunner (dinamakan setelah film Blade Runner), berganti nama menjadi HotJava[12] pada tahun 1995.
Pada tahun 1994, Sun mengganti nama bahasa Oak setelah pencarian merek dagang mengungkapkan bahwa nama Oak telah digunakan oleh Oak Technology.[14] Meskipun Java 1.0 a menjadi tersedia untuk di-download pada tahun 1994, rilis publik pertama dari 1.0a2 dengan browser HotJava datang pada tanggal 23 Mei 1995, diumumkan oleh Gage di konferensi SunWorld. Marc Andreessen, Wakil Presiden Eksekutif dari Netscape Communications Corporation, tiba-tiba mengumumkan bahwa Netscape browser akan mencakup dukungan Java. Pada tanggal 9 januari 1996, Sun Microsystems membentuk kelompok JavaSoft untuk mengembangkan teknologi.[15]
Versi sejarah
[sunting | sunting sumber]Bahasa Java telah mengalami beberapa perubahan sejak rilis JDK (Java Development Kit) 1.0 pada tanggal 23 januari 1996, serta berbagai penambahan dari kelas-kelas dan paket-paket standar perpustakaan. Sejak J2SE 1.4 Java Community Process (JCP) telah diatur evolusi dari Bahasa Java. JCP menggunakan Java Spesifikasi Permintaan (JSRs) untuk mengusulkan dan menentukan penambahan dan perubahan untuk platform Java. Dalam Bahasa Keterangan (JLS) menentukan bahasa; perubahan JLS dikelola di bawah JSR 901.[16]
Matahari dirilis JDK 1.1 pada tanggal 19 februari 1997. Utama termasuk penambahan luas retooling dari AWT acara model, kelas batin ditambahkan untuk bahasa, JavaBeans dan JDBC.
J2SE 1.2 (8 desember 1998) – Codename Bermain anak. Ini dan rilis berikutnya melalui J2SE 5.0 yang namanya Java 2 dan nama versi "J2SE" (Java 2 Platform, Standard Edition) diganti JDK untuk membedakan basis platform J2EE (Java 2 Platform, Enterprise Edition), J2ME (Java 2 Platform, Micro Edition). Tambahan utama termasuk refleksi, koleksi framework, Java IDL ( interface bahasa deskripsi implementasi CORBA interoperabilitas), dan integrasi Ayunan grafis API ke inti kelas. Sebuah Java Plug-in dirilis, dan Matahari JVM dilengkapi dengan JIT compiler untuk pertama kalinya.
J2SE 1.3 (8 Mei 2000) – Codename Kestrel. Perubahan penting termasuk bundling HotSpot JVM (JVM HotSpot pertama kali dirilis pada bulan April 1999 untuk J2SE 1.2 JVM), JavaSound, Penamaan dan Direktori Interface (JNDI) dan Platform Java Debugger Arsitektur (JPDA).
J2SE 1.4 (6 februari 2002) – Codename Merlin. Ini menjadi rilis pertama dari platform Java yang dikembangkan dalam Masyarakat sebagai Proses JSR 59.[17] perubahan Besar termasuk ekspresi reguler dimodelkan setelah Perl, terkecuali chaining, terpadu XML parser dan XSLT processor (JAXP), dan Java Web Start.
J2SE 5.0 (agustus 30, 2004) – Codename Tiger. Itu awalnya berjumlah 1.5, yang masih digunakan sebagai internal nomor versi.[18] yang Dikembangkan di bawah JSR 176, Harimau menambahkan beberapa signifikan fitur bahasa baru termasuk untuk masing-masing loop, obat generik, autoboxing dan var-args.[19]
Java SE 6 (11 desember 2006) – Codename Mustang. Itu dibundel dengan manajer database dan memfasilitasi penggunaan bahasa scripting dengan JVM (seperti JavaScript menggunakan Mozilla's Badak engine). Pada versi ini, Matahari diganti nama "J2SE" dengan Java SE dan menjatuhkan ".0" dari nomor versi.[20] perubahan besar Lainnya termasuk dukungan untuk pluggable penjelasan (JSR 269), banyak GUI perbaikan, termasuk UI asli perangkat tambahan untuk mendukung tampilan dan nuansa dari Windows Vista, dan perbaikan untuk Platform Java Debugger Arsitektur (JPDA) & JVM Alat Antarmuka untuk pemantauan yang lebih baik dan pemecahan masalah.
Java SE 7 (28 juli 2011) - dengan kode nama Dolphin. Versi ini dikembangkan di bawah JSR 336.[21] Ini menambahkan sejumlah kecil perubahan bahasa termasuk string di switch, mencoba-dengan-sumber-sumber dan jenis inferensi untuk generic contoh penciptaan. JVM diperpanjang dengan dukungan untuk bahasa dinamis, sedangkan kelas perpustakaan diperpanjang antara lain dengan bergabung/garpu kerangka,[22] peningkatan new file I/O library dan dukungan untuk protokol jaringan seperti SCTP. Java 7 Update 76 dirilis pada januari 2015, dengan berakhirnya tanggal 14 April 2015.[23]
Pada bulan juni 2016, setelah publik terakhir update Java 7,[24] "jarak jauh dieksploitasi" bug keamanan di Java 6, 7 dan 8 di mana diumumkan.[5]
Yang current[update] version, Java SE 8 (18 Maret 2014). Perubahan penting termasuk bahasa tingkat dukungan untuk ekspresi lambda (penutupan) dan metode default, Proyek Nashorn JavaScript runtime, Tanggal dan Waktu yang baru API terinspirasi oleh Joda Waktu, dan penghapusan PermGen. Versi ini tidak secara resmi didukung pada platform Windows XP.[25] Namun, karena akhir dari 7 siklus hidup ini adalah versi direkomendasikan untuk pengguna XP. Sebelumnya, hanya tidak resmi instalasi manual metode yang telah dijelaskan untuk Windows XP SP3. Hal ini mengacu pada JDK8, mengembangkan platform untuk Java yang juga mencakup sepenuhnya berfungsi Java Runtime Environment.[26] 8 didukung pada Windows Server 2008 R2 SP1, Windows Vista SP2 dan Windows 7 SP1, Ubuntu 12.04 LTS dan lebih tinggi (dan beberapa Os lain).[27]
JDK 9 Akses Awal membutuhkan Windows 7 SP1, Windows Server 2012, Ubuntu 16.04 LTS atau lebih tinggi (atau OS lain yang didukung, seperti OS X atau Solaris).[28]
Selain bahasa perubahan, perubahan yang signifikan telah dibuat untuk Java class library selama bertahun-tahun, yang telah berkembang dari beberapa ratus kelas dalam JDK 1.0 untuk lebih dari tiga ribu di J2SE 5.0. Seluruh Api yang baru, seperti Ayunan dan Java 2D, telah berkembang, dan banyak dari asli JDK 1.0 kelas dan metode yang telah usang.
Penggunaan
[sunting | sunting sumber]Penggunaan desktop
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/FrostWire-Vista.png/220px-FrostWire-Vista.png)
Menurut Oracle, Java Runtime Environment adalah ditemukan pada lebih dari 850 juta PCs.[29] Microsoft belum paket Java Runtime Environment (JRE) dengan sistem operasi sejak Sun Microsystems menggugat Microsoft untuk menambahkan Jendela-kelas khusus untuk paket Java runtime environment, dan untuk membuat kelas-kelas baru yang tersedia melalui Visual J++.[butuh rujukan] Apple tidak lagi termasuk Java runtime dengan OS X sebagai versi 10.7, tetapi sistem akan meminta pengguna untuk men-download dan menginstal itu pertama kalinya sebuah aplikasi yang membutuhkan JRE diluncurkan.[butuh rujukan] Banyak distribusi Linux yang mencakup sebagian kompatibel software gratis paket GNU Classpath[30] dan semakin kebanyakan kompatibel IcedTea.
Beberapa aplikasi Java yang cukup luas penggunaan desktop, termasuk NetBeans dan Eclipse integrated development lingkungan, dan berbagi file klien seperti LimeWire dan Vuze. juga digunakan dalam MATLAB matematika pemrograman lingkungan, baik untuk rendering antarmuka pengguna dan sebagai bagian dari sistem inti. Java menyediakan cross platform user interface untuk beberapa high-end aplikasi kolaboratif seperti Lotus Notes.
Oracle berencana untuk pertama mencela secara terpisah diinstal Java plugin browser dari Java Runtime Environment di JDK 9 kemudian menghapus sepenuhnya dari masa mendatang, memaksa para pengembang web untuk menggunakan teknologi alternatif.[31]
Perangkat mobile
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/2Mobiles-with-Bombus.jpg/220px-2Mobiles-with-Bombus.jpg)
Java Micro Edition telah menjadi populer di perangkat mobile, di mana ia bersaing dengan Symbian, BREW, dan .NET Compact Framework.
Keragaman produsen ponsel telah menyebabkan kebutuhan untuk standar bersatu sehingga program-program dapat berjalan pada ponsel dari pemasok yang berbeda – MIDP. Standar pertama adalah MIDP 1, yang diperuntukkan untuk layar berukuran kecil, tidak ada akses ke audio, dan memiliki batas ukuran program 32kB. Baru-baru ini MIDP 2 memungkinkan akses ke audio, dan sampai 64kB untuk ukuran program. Dengan desain handset yang membaik dan lebih cepat dari standar, beberapa produsen berdiam dalam beberapa keterbatasan karena standar, misalnya, maksimal ukuran program.
Sistem operasi Android besutan Google menggunakan bahasa Java, namun tidak untuk kelas perpustakaan, oleh karena itu platform Android tidak bisa disebut ke dalam daftar perangkat mobile Java. Android mengeksekusi kode pada mesin virtual ART (sebelumnya Dalvik VM di Android 4.4.4 ke bawah) bukan mesin virtual Java.
Penggunaan dalam server web dan enterprise
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Share_and_Repository_Browser_%28Alfresco_Community_Edition%29.jpg/220px-Share_and_Repository_Browser_%28Alfresco_Community_Edition%29.jpg)
Platform Java telah menjadi andalan perusahaan ITU pengembangan sejak pengenalan Enterprise Edition pada tahun 1998, dalam dua cara yang berbeda:
- Melalui kopling dari ke web server, platform Java telah menjadi platform terkemuka untuk mengintegrasikan Web dengan perusahaan sistem backend. Hal ini telah memungkinkan perusahaan untuk memindahkan sebagian atau seluruh bisnis mereka ke lingkungan Internet dengan cara yang sangat interaktif online lingkungan (seperti yang sangat dinamis situs web) yang memungkinkan pelanggan akses langsung ke proses bisnis (misalnya perbankan online, situs pemesanan penerbangan, sistem dan sebagainya). Tren ini terus berlanjut dari awal berbasis Web mulai:
- Platform Java telah matang menjadi Perusahaan Integrasi peran di mana sistem warisan yang dibuka untuk dunia luar melalui jembatan yang dibangun pada platform Java. Tren ini telah didukung untuk platform Java mendukung untuk EAI standar seperti pengiriman pesan dan layanan Web dan telah memicu masuknya platform Java sebagai pengembangan dasar dalam standar seperti SCA, SAM dan lain-lain.
- Java telah menjadi standar platform pengembangan untuk banyak perusahaan' ITU departemen, yang melakukan sebagian atau semua dari mereka perusahaan pembangunan di . Jenis pengembangan ini biasanya terkait dengan perusahaan tertentu perkakas (misalnya alat pemesanan untuk sebuah maskapai penerbangan) dan pilihan untuk platform Java ini sering didorong oleh keinginan untuk memanfaatkan yang ada Java infrastruktur untuk membangun sangat cerdas dan alat-alat yang saling berhubungan.
- Platform Java telah menjadi pengembangan utama platform untuk banyak perangkat lunak dan platform yang dihasilkan oleh perangkat lunak pihak ketiga kelompok (komersial, open source dan hybrid) dan digunakan sebagai dikonfigurasi (bukan programmable) yang sesuai dengan perusahaan. Contoh dalam kategori ini termasuk Web server, application server, database, enterprise service bus, manajemen proses bisnis (BPM) alat-alat dan sistem manajemen konten.
Perusahaan menggunakan Java juga telah lama menjadi pendorong utama dari open source bunga di platform. Bunga ini telah menginspirasi komunitas open source untuk menghasilkan jumlah besar dari perangkat lunak, termasuk fungsi sederhana perpustakaan, pengembangan kerangka kerja (misalnya Spring Framework, Apache Gawang, Dojo Toolkit, Hibernate), dan open source implementasi standar dan alat-alat (misalnya Apache Tomcat, GlassFish server aplikasi, Keledai dan Apache ServiceMix Enterprise service bus).
Maskot
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Duke_%28Java_mascot%29_waving.svg/40px-Duke_%28Java_mascot%29_waving.svg.png)
Ketika Sun mengumumkan bahwa SE Java dan Java ME akan dirilis di bawah lisensi perangkat lunak bebas ( GNU General Public License), mereka merilis Duke grafis di bawah lisensi BSD pada waktu yang sama.[33] baru Duke kepribadian dibuat setiap tahun.[34] misalnya, pada bulan juli 2011 "Teknologi masa Depan Duke" termasuk hidung yang lebih besar, jetpack, dan biru di sayap.[35]
Perizinan
[sunting | sunting sumber]Kode sumber untuk Matahari implementasi dari (yaitu de facto referensi implementasi) telah tersedia untuk beberapa waktu, tapi sampai saat ini[per kapan?], ketentuan-ketentuan lisensi yang membatasi apa yang bisa dilakukan dengan tanpa penandatanganan (dan umumnya membayar untuk) kontrak dengan Matahari. Seperti syarat tidak memenuhi persyaratan baik yang Open Source Initiative atau Free Software Foundation untuk dipertimbangkan open source atau free software, dan Sun Java karena itu platform proprietary.[36]
Sementara beberapa pihak ketiga proyek (misalnya GNU Classpath dan Apache Harmony) dibuat perangkat lunak bebas parsial implementasi, ukuran besar dari Matahari perpustakaan dikombinasikan dengan penggunaan kamar bersih metode berarti bahwa mereka implementasi dari Java perpustakaan (compiler dan VM adalah relatif kecil dan didefinisikan dengan baik) yang tidak lengkap dan tidak sepenuhnya kompatibel. Implementasi ini juga cenderung jauh lebih dioptimalkan dari Matahari.[butuh rujukan]
Perangkat lunak bebas
[sunting | sunting sumber]![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Jonathan_Schwartz.jpg/220px-Jonathan_Schwartz.jpg)
Sun mengumumkan di JavaOne 2006 bahwa pulau akan menjadi bebas dan perangkat lunak sumber terbuka,[37] dan pada tanggal 25 oktober 2006, di Oracle OpenWorld konferensi, Jonathan I. Schwartz mengatakan bahwa perusahaan itu akan mengumumkan rilis core Platform Java sebagai perangkat lunak bebas dan terbuka dalam waktu 30 sampai 60 hari.[38]
Sun merilis HotSpot virtual mesin dan compiler sebagai perangkat lunak gratis dibawah lisensi GNU General Public License pada tanggal 13 November 2006, dengan janji bahwa sisa JDK (yang termasuk JRE) yang akan ditempatkan di bawah GPL pada bulan Maret 2007 ("kecuali untuk beberapa komponen yang Matahari tidak memiliki hak untuk mempublikasikan didistribusikan bentuk kode sumber di bawah GPL").[39] Menurut Richard Stallman, ini akan berarti mengakhiri " perangkap".[40] Mark Shuttleworth yang disebut pers awal pengumuman, "Sebuah tonggak bersejarah bagi perangkat lunak bebas komunitas".[41]
Sun merilis kode sumber dari perpustakaan Kelas bawah GPL pada 8 Mei 2007, kecuali beberapa bagian tertentu yang diberi lisensi oleh Matahari dari pihak ke-3 yang tidak ingin mereka kode yang akan dirilis di bawah sebuah software gratis dan open-source yang berlisensi.[42] Beberapa dibebani bagian ternyata cukup bagian-bagian kunci dari platform seperti font rendering dan 2D rasterising, tapi ini dirilis sebagai open-source kemudian oleh Matahari (lihat OpenJDK perpustakaan Kelas).
Matahari itu tujuannya adalah untuk mengganti bagian-bagian yang tetap eksklusif dan tertutup-sumber dengan implementasi alternatif dan membuat perpustakaan kelas benar-benar gratis dan open source. Sementara itu, pihak ketiga proyek yang disebut IcedTea dibuat benar-benar gratis dan sangat bermanfaat JDK dengan mengganti dibebani kode dengan rintisan atau kode dari GNU Classpath. Meskipun OpenJDK sejak itu menjadi mudah dibangun tanpa dibebani bagian (dari OpenJDK 6 b10[43]), IcedTea masih digunakan oleh sebagian besar distribusi linux, seperti Fedora, RHEL, Debian, Ubuntu, Gentoo, Arch Linux dan Slackware, karena menyediakan keamanan rilis dan mudah cara untuk patch inklusi. OpenJDK juga masih tidak menyertakan plugin browser & Web Mulai implementasi, sehingga IcedTea pendamping proyek, IcedTea-Web, adalah diperlukan untuk mengisi kesenjangan ini.
Pada juni 2008, diumumkan bahwa IcedTea6 (karena dikemas versi OpenJDK pada Fedora 9) telah lulus Teknologi Kompatibilitas Kit tes dan dapat mengklaim untuk menjadi sepenuhnya kompatibel 6 implementasi.[44]
Karena OpenJDK adalah di bawah lisensi GPL, adalah mungkin untuk mendistribusikan versi kustom dari JRE secara langsung dengan perangkat lunak aplikasi,[45][46] daripada membutuhkan enduser (atau mereka sysadmin) untuk men-download dan menginstal versi yang benar dari milik Oracle JRE ke masing-masing sistem mereka sendiri.
Kritik
[sunting | sunting sumber]Dalam kebanyakan kasus, dukungan Java adalah tidak perlu di Web browser, dan para ahli keamanan merekomendasikan bahwa Java jangan dijalankan di browser kecuali benar-benar diperlukan.[47] Ia menyarankan bahwa, jika Java diperlukan oleh beberapa situs Web, pengguna harus memiliki browser yang terinstal secara terpisah khusus untuk situs-situs tersebut.
Tambalan generik
[sunting | sunting sumber]Ketika tambalan generik yang ditambahkan untuk Java 5.0, sudah ada kerangka besar dari kelas-kelas (banyak yang sudah usang), sehingga tambahan generik yang dipilih untuk diimplementasikan menggunakan penghapusan untuk memungkinkan migrasi kompatibilitas dan penggunaan kembali ini kelas-kelas yang ada. Ini terbatas fitur yang bisa disediakan oleh penambahan ini dibandingkan dengan beberapa bahasa lain.[48][49]
Jenis unsigned integer
[sunting | sunting sumber]Java tidak memiliki jenis unsigned integer asli. Data Unsigned sering dihasilkan dari program yang ditulis dalam C dan kurangnya jenis ini langsung mencegah pertukaran data antara C dan Java. Unsigned jumlah besar juga banyak digunakan dalam pengolahan angka bidang, termasuk kriptografi, yang dapat membuat kurang nyaman digunakan untuk tugas-tugas ini.[50] Meskipun hal ini mungkin untuk sebagian menghindari masalah ini dengan konversi kode dan menggunakan data yang lebih besar jenis, itu membuat menggunakan Java rumit untuk menangani data unsigned. Sementara 32-bit signed integer dapat digunakan untuk menyimpan 16-bit unsigned nilai dengan relatif mudah, 32-bit unsigned nilainya akan memerlukan 64-bit signed integer. Selain itu, 64-bit unsigned nilai tidak dapat disimpan menggunakan tipe integer di karena tidak ada jenis yang lebih besar dari 64 bit yang ada dalam bahasa . Jika disarikan menggunakan fungsi, fungsi panggilan menjadi perlu untuk banyak operasi yang asli untuk beberapa bahasa lain. Selain itu, adalah mungkin untuk menggunakan Java ditandatangani bilangan bulat untuk meniru unsigned bilangan bulat dengan ukuran yang sama, tetapi hal ini membutuhkan pengetahuan rinci kompleks bitwise operasi.[51]
Aritmatika floating point
[sunting | sunting sumber]Sementara di floating point aritmetika adalah sebagian besar didasarkan pada standar IEEE 754 (Standar untuk Biner Floating-Point Aritmetika), fitur-fitur tertentu yang tidak didukung bahkan ketika menggunakan strictfp
pengubah, seperti Pengecualian Bendera dan Diarahkan Pembulatan — kemampuan yang diamanatkan oleh Standar IEEE 754. Selain itu, extended precision floating-point jenis yang diizinkan dalam 754 dan hadir dalam banyak prosesor yang tidak diizinkan di .[52][53]
Kinerja
[sunting | sunting sumber]Pada hari-hari awal dari (sebelum HotSpot VM dilaksanakan di 1.3 2000) ada beberapa kritik kinerja. Namun, tolok ukur biasanya melaporkan menjadi sekitar 50% lebih lambat dari C (bahasa yang mengkompilasi kode asli).[54][55][56]
Java kinerja telah meningkat secara substansial sejak versi awal.[7] Kinerja JIT compiler relatif asli penyusun memiliki beberapa dioptimalkan tes telah terbukti cukup mirip.[7][8][9]
Java bytecode dapat diartikan pada saat dijalankan oleh mesin virtual, atau dapat disusun pada waktu beban atau runtime menjadi kode native yang berjalan secara langsung pada perangkat keras komputer. Interpretasi lebih lambat dari yang asli eksekusi dan kompilasi pada waktu beban atau runtime memiliki kinerja awal penalti untuk kompilasi. Modern performant JVM implementasi semua menggunakan kompilasi pendekatan, sehingga setelah waktu startup awal kinerja setara dengan native code.
Keamanan
[sunting | sunting sumber]Platform Java menyediakan sebuah arsitektur keamanan[57] yang dirancang untuk memungkinkan pengguna untuk menjalankan tepercaya bytecode dalam "sandbox" cara untuk melindungi terhadap situs berbahaya atau perangkat lunak yang ditulis dengan buruk. Ini "sandboxing" fitur ini dimaksudkan untuk melindungi pengguna dengan membatasi akses ke beberapa fitur platform dan Api yang bisa dimanfaatkan oleh malware, seperti mengakses file lokal, menjalankan perintah sewenang-wenang, atau mengakses jaringan komunikasi.
Dalam beberapa tahun terakhir, para peneliti telah menemukan sejumlah kelemahan keamanan dalam beberapa banyak digunakan Java implementasi, termasuk Oracle, yang memungkinkan kode yang tidak dipercaya untuk memotong sandboxing mekanisme, mengekspos pengguna untuk serangan berbahaya. Kekurangan ini mempengaruhi hanya aplikasi Java yang mengeksekusi sewenang-wenang tepercaya bytecode, seperti web browser plugin yang menjalankan Java applet yang didownload dari situs web publik. Aplikasi di mana pengguna trust, dan memiliki kontrol penuh atas semua kode yang sedang dieksekusi tidak terpengaruh.
Pada agustus 31, 2012, 6 dan 7 pada Microsoft Windows, Mac OS X, dan Linux ditemukan memiliki keamanan yang sangat cacat yang memperbolehkan remote exploit untuk mengambil tempat dengan hanya memuat sebuah halaman web berbahaya.[58] Java 5 kemudian ditemukan untuk menjadi cacat juga.[59]
Pada tanggal 10 januari 2013, tiga spesialis komputer berbicara menentang, mengatakan kepada Reuters bahwa itu tidak aman dan bahwa orang harus menonaktifkan Java. Jaime Blasco, Labs Manajer dengan AlienVault Labs, menyatakan bahwa " berantakan. Hal ini tidak aman. Anda harus menonaktifkannya."[60] Kerentanan ini mempengaruhi Java 7 dan tidak jelas apakah hal itu mempengaruhi Java 6, sehingga disarankan agar konsumen menonaktifkannya.[61][62] peringatan Keamanan dari Oracle mengumumkan jadwal penting yang berhubungan dengan keamanan patch ke .[63]
Pada tanggal 14 januari 2013, para ahli keamanan mengatakan bahwa update masih gagal untuk melindungi Pc dari serangan.[64] Ini mengeksploitasi lubang diminta tanggapan dari United States Department of Homeland Security mendorong pengguna untuk menonaktifkan atau uninstall .[6] Apple masuk dalam daftar hitam di terbatas agar semua komputer yang menjalankan Mac OS X sistem operasi melalui program perlindungan virus.[65]
Menanggapi terbaru keamanan dan kerentanan masalah, keamanan blogger Brian Krebs telah meminta pengguna untuk menghapus setidaknya Java plugin browser dan juga seluruh perangkat lunak. "Saya melihat ke depan untuk sebuah dunia tanpa plugin Java (dan tidak memiliki untuk mengingatkan pembaca tentang triwulanan patch update) tapi itu mungkin akan menjadi tahun sebelum berbagai versi dari plugin ini adalah sebagian besar dihapus dari sistem end-user di seluruh dunia.""[66] "Setelah menjanjikan, telah hidup lebih lama kegunaannya di browser, dan telah menjadi mimpi buruk yang nikmat cyber-penjahat dengan mengorbankan pengguna komputer."[67] "saya pikir semua orang harus uninstall Java dari semua Pc dan Mac, dan kemudian berpikir hati-hati tentang apakah mereka perlu menambahkannya kembali. Jika anda adalah tipe pengguna rumah, anda mungkin bisa melakukannya tanpa itu. Jika anda adalah pengguna bisnis, anda mungkin tidak memiliki pilihan."[68]
Adware
[sunting | sunting sumber]Java runtime environment memiliki sejarah bundling disponsori perangkat lunak yang akan diinstal secara default pada saat instalasi dan saat update yang menggelar setiap bulan atau lebih. Ini mencakup "Ask.com toolbar" yang akan mengarahkan browser pencarian untuk iklan dan "McAfee Security Scan Plus".[69] penawaran Ini dapat diblokir melalui pengaturan di Control Panel, meskipun hal ini tidak jelas.
Pembaruan sistem
[sunting | sunting sumber]belum rilis aplikasi updater otomatis yang tidak memerlukan campur tangan pengguna dan hak administratif[70] tidak seperti Google Chrome[71] dan Flash player.[72]
Lihat juga
[sunting | sunting sumber]Referensi
[sunting | sunting sumber]- ^ Naughton, Patrick. "Java Was Strongly Influenced by Objective-C". Virtual School. Diarsipkan dari versi asli tanggal 2010-06-23. Diakses tanggal 2016-10-20.
- ^ "Sun Opens Java". Sun Microsystems. 13 November 2006. Diarsipkan dari versi asli tanggal 2008-05-13.
- ^ Kelly O'Hair (December 2010). "OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed". Oracle Corporation. Diakses tanggal 2011-11-25.
- ^ "Why should I uninstall older versions of Java from my system?". Oracle. Diakses tanggal 2016-09-09.
- ^ a b http://www.oracle.com/technetwork/security-advisory/cpujul2016-2881720.html#AppendixJAVA
- ^ a b Whittaker, Zack (2013-01-11). "Homeland Security warns to disable Java amid zero-day flaw". ZDNet. Diakses tanggal 2016-02-09.
- ^ a b c J.P.Lewis and Ulrich Neumann. "Performance of Java versus C++". Graphics and Immersive Technology Lab, University of Southern California.
- ^ a b "The Java Faster than C++ Benchmark". Kano.net. 2003-11-14. Diakses tanggal 2016-02-09.
- ^ a b FreeTTS – A Performance Case Study Diarsipkan 2009-03-25 di Wayback Machine., Willie Walker, Paul Lamere, Philip Kwok
- ^ "JVM 7 Specification".
- ^ www
.beanshell .org - ^ a b Jon Byous (April 2003). "Java Technology: The Early Years". Sun Microsystems. Diarsipkan dari versi asli tanggal May 30, 2008. Diakses tanggal 2009-08-02.
- ^ Kathy Walrath (2001-12-21). "Foreword". Sun Microsystems. Diakses tanggal 2009-08-02.
- ^ Kieron Murphy (1996-04-10). "So why did they decide to call it Java?". javaworld.com. Diarsipkan dari versi asli tanggal 2009-08-03. Diakses tanggal 2009-08-03.
The lawyers had told us that we couldn't use the name 'OAK' because [it was already trademarked by] Oak Technologies," said Frank Yellin, a senior engineer at Sun. "So a brainstorming session was held to come up with ideas for a new name
- ^ "Sun Microsystems Announces Formation of Javasoft". Sun Microsystems. January 1996. Diarsipkan dari versi asli tanggal 2006-12-31. Diakses tanggal 2016-10-20.
- ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 63". Jcp.org. Diakses tanggal 2016-02-09.
- ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 59". Jcp.org. Diakses tanggal 2016-02-09.
- ^ "Version 1.5.0 or 5.0?". Java.sun.com. Diakses tanggal 2016-02-09.
- ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 176". Jcp.org. Diakses tanggal 2016-02-09.
- ^ "Java Naming". Java.com. Oracle. Diakses tanggal 25 August 2011.
- ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 336". Jcp.org. Diakses tanggal 2016-02-09.
- ^ Lea, Doug (13 September 2004). "JSRs: Java Specification Requests: JSR 166: Concurrency Utilities". Java Community Process. Oracle Corp.
- ^ "Java™ SE Development Kit 7 Update 76 Release Notes". Oracle.com. Diakses tanggal 2016-02-09.
- ^ https://www.java.com/en/download/faq/release_dates.xml
- ^ "Windows XP and Java". Java.com. 2014-04-08. Diakses tanggal 2016-02-09.
- ^ "installing JDK8 on Windows XP - advapi32.dll error".
- ^ Oracle JDK 8 and JRE 8 Certified System Configurations Contents
- ^ "JDK 9 supported Platforms". Diarsipkan dari versi asli tanggal 2015-04-15. Diakses tanggal 2016-10-20.
Note: Preliminary list. This is page is is subject to change through the release cycle.
- ^ "What is Java technology and why do I need it?". Diakses tanggal 15 December 2011.
Java runs on more than 850 million personal computers worldwide, and on billions of devices worldwide, including mobile and TV devices.
- ^ "Results of comparison between jdk15 and classpath". kaffe.org. Diarsipkan dari versi asli tanggal 2007-09-28. Diakses tanggal 2016-10-20.
- ^ "Moving to a Plugin-Free Web".
- ^ "Duke, the Java Mascot". Oracle. Diakses tanggal 2011-11-12.
- ^ "duke: Project Home Page". Sun Microsystems. Diarsipkan dari versi asli tanggal 2007-06-18. Diakses tanggal 2007-03-18.
- ^ "Duke, the Java Mascot".
- ^ "Future Tech Duke (The Java Source)". Tori Wieldt. Diarsipkan dari versi asli tanggal 2011-08-20. Diakses tanggal 2011-08-17.
- ^ Stallman, Richard (May 24, 2006). "The Curious Incident of Sun in the Night-Time". Groklaw.
- ^ Schwartz, Jonathan. "?". Jonathan Schwartz's Blog. Sun Microsystems.
- ^ Name * (2006-10-26). "Oracle OpenWorld: UnBreakable Linux / 5015.2 not on the horizon | Formtek Blog". Formtek.com. Diakses tanggal 2016-02-09.
- ^ "Oracle and Sun Microsystems | Strategic Acquisitions | Oracle". Sun.com. Diarsipkan dari versi asli tanggal 2007-04-21. Diakses tanggal 2016-02-09.
- ^ "Free but Shackled - The Java Trap - GNU Project - Free Software Foundation". Gnu.org. 2004-04-12. Diakses tanggal 2016-02-09.
- ^ "Sun 'releases' Java to the World". BBC News. November 13, 2006. Diakses tanggal May 6, 2010.
- ^ "Open JDK is here!". Sun Microsystems. May 8, 2007. Diakses tanggal 2007-05-09.
- ^ Wielaard, Mark (2007-05-30). "OpenJDK6 b10 source posted". Diakses tanggal 2008-07-12.
- ^ Sharples, Rich (2008-06-19). "Java is finally Free and Open". Diarsipkan dari versi asli tanggal 2008-06-20. Diakses tanggal 2016-10-20.
- ^ libgdx (2013-12-09). "Bundling a jre · libgdx/libgdx Wiki · GitHub". Github.com. Diakses tanggal 2016-02-09.
- ^ "Question about bundling custom OpenJDK". Java-Gaming.org. Diarsipkan dari versi asli tanggal 2016-03-04. Diakses tanggal 2016-02-09.
- ^ Graham Cluley (2013-01-15). ""Unless it is absolutely necessary to run Java in web browsers, disable it", DHS-sponsored CERT team says – Naked Security". Nakedsecurity.sophos.com. Diakses tanggal 2016-02-09.
- ^ "Generics in Java". Object Computing, Inc. Diakses tanggal 2006-12-09.
- ^ "What's Wrong With Java: Type Erasure". 2006-12-06. Diarsipkan dari versi asli tanggal 2012-09-03. Diakses tanggal 2006-12-09.
- ^ "Java libraries should provide support for unsigned integer arithmetic". Bug Database, Sun Developer Network. Oracle. Diakses tanggal 2011-01-18.
- ^ Owens, Sean R. (2009-11-05). "Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)". darksleep.com. Diakses tanggal 2010-10-09.
- ^ Kahan, W.; Joseph D. Darcy (1998-03-01). "How Java's Floating-Point Hurts Everyone Everywhere" (PDF). Diakses tanggal 2006-12-09.
- ^ "Types, Values, and Variables". Sun Microsystems. Diakses tanggal 2006-12-09.
- ^ "Which programming languages are fastest?". Diarsipkan dari versi asli tanggal 2011-08-17. Diakses tanggal 2016-10-20.
- ^ "speed ÷ C++ GNU g++ speed | Computer Language Benchmarks Game". Archived from the original on 2012-03-24. Diakses tanggal 2016-10-20.
- ^ "C++ vs Java performance; It's a tie! | Blog of Christian Felde". Blog.cfelde.com. Diakses tanggal 2016-02-09.
- ^ "Java Security Architecture: Contents". Docs.oracle.com. 1998-10-02. Diakses tanggal 2016-02-09.
- ^ Horowitz, Michael (2012-08-31). "Java security flaw: yada yada yada | Computerworld". Blogs.computerworld.com. Diarsipkan dari versi asli tanggal 2014-07-24. Diakses tanggal 2016-02-09.
- ^ Brook, Chris. "The first stop for security news". Threatpost. Diarsipkan dari versi asli tanggal 2013-03-08. Diakses tanggal 2016-02-09.
- ^ "Why and How to Disable Java on Your Computer Now - Technology & science - Innovation". NBC News. 2013-01-12. Diakses tanggal 2016-02-09.
- ^ "US Department of Homeland Security Calls On Computer Users To Disable Java". Forbes.com. Diakses tanggal 2016-02-09.
- ^ Brook, Chris. "The first stop for security news". Threatpost. Diakses tanggal 2016-02-09.
- ^ "Critical Patch Updates and Security Alerts". Oracle.com. Diakses tanggal 2016-02-09.
- ^ Jim Finkle (2013-01-14). "Emergency patch for Java fails to fix cybercrime holes, warn experts". Independent.ie. Diakses tanggal 2016-02-09.
- ^ Meghan Kelly January 14, 2013 3:26 PM (2013-01-14). "Oracle issues fix for Java exploit after DHS warns of its holes | VentureBeat | Security | by Meghan Kelly". VentureBeat. Diakses tanggal 2016-02-09.
- ^ Krebs, Brian (16 February 2016). "Good Riddance to Oracle's Java Plugin". KrebsOnSecurity.
- ^ Gonsalves, Antone (5 September 2012). "Java Is No Longer Needed. Pull The Plug-In". ReadWrite. Wearable World.
- ^ "Java: should you remove it?". theguardian.com. Guardian Media Group. 8 February 2013.
- ^ Bott, Ed. "A close look at how Oracle installs deceptive software with Java updates". ZDNet.com. ZDNet. Diakses tanggal 14 December 2014.
- ^ "How do I update Java from a non-admin account?".
- ^ "Update Google Chrome".
- ^ "Adobe Security Bulletin".
Pranala luar
[sunting | sunting sumber]- Situs web resmi
- sun.com – Situs resmi pengembang
- infoq.com – Presentasi oleh James Gosling tentang asal-usul Java, dari JVM Bahasa Summit 2008
- Java forums organization[pranala nonaktif permanen]