Perbedaan antara JVM dan HotSpot?

147

Apa sebenarnya HotSpot dan bagaimana hubungannya dengan JVM dan OpenJDK? Apakah itu perpustakaan? Apa fungsinya?

Juga, apa perbedaan antara OpenJDK dan HotSpot?

Justin
sumber

Jawaban:

148

Definisi apa sebenarnya Java Machine Virtual dinyatakan dalam Java Virtual Machine Specification

JVM secara definisi adalah mesin virtual , yaitu mesin perangkat lunak yang mensimulasikan apa yang dilakukan oleh mesin nyata. Seperti mesin nyata, ia memiliki set instruksi , arsitektur komputer virtual, dan model eksekusi. Ia mampu menjalankan kode yang ditulis dengan set instruksi virtual ini, hampir seperti mesin nyata dapat menjalankan kode mesin.

HotSpot adalah implementasi dari konsep JVM. Awalnya dikembangkan oleh Sun dan sekarang dimiliki oleh Oracle. Ada implementasi lain dari spesifikasi JVM, seperti JRockit , IBM J9 , di antara banyak lainnya.

Lihat Daftar Implementasi Mesin Virtual Java

The OpenJDK adalah proyek di mana implementasi opensource dari HotSpot (dan banyak potongan-potongan lain dari JDK misalnya compiler, API, alat, dll) dikembangkan.

Edwin Dalorzo
sumber
25

OpenJDK (Open Java Development Kit) adalah implementasi Java Platform, Edisi Standar (Java SE) yang gratis dan open source. Openjdk adalah proyek yang dimulai oleh Sun Microsystems, saat ini dirawat oleh banyak perusahaan dan masyarakat untuk membangun Java Development Kit mutlak dalam open source. Sesuai dokumentasi resmi .

OpenJDK adalah implementasi open-source dari Java Platform, Edisi Standar (Java SE) spesifikasi. Pada bulan Mei 2007, Sun merilis versi Java Development Kit (JDK) yang sepenuhnya dapat dibangun untuk Java SE ke Komunitas OpenJDK sebagai perangkat lunak bebas di bawah GNU General Public License versi dua (GPLv2). Sun mengumumkan Dewan Pemerintahan Sementara untuk komunitas OpenJDK. Sun juga mengumumkan bahwa implementasi berbasis OpenJDK dapat menggunakan Java SE 6 Technical Compatibility Kit (JCK) untuk membangun kompatibilitas dengan spesifikasi Java SE 6.

Proyek OpenJDK terdiri dari sejumlah komponen - HotSpot (mesin virtual) , Java Class Library dan javac Java compiler. Untuk lebih lanjut tentang itu, kunjungi situsnya .

JVM saat ini yang disediakan oleh Sun / Oracle disebut HotSpot karena mencari hot spot penggunaan dalam kode (tempat di mana kode lebih intensif digunakan) untuk optimasi "just-in-time". Dari wikipedia , HotSpot, dirilis sebagai "Java HotSpot Performance Engine" adalah mesin virtual Java untuk desktop dan server, dikelola dan didistribusikan oleh Oracle Corporation.

ORANG BODOH
sumber
Saya mendengar OpenJDK juga menggunakan HotSpot untuk mengeksekusi kode? Benarkah itu?
Justin
@TheNewIdiot, jadi Anda mengatakan HotSpot adalah bagian dari OpenJDK? Atau apakah ada juga HotSpot eksklusif seperti yang disarankan oleh jawaban di atas?
Pacerier
@NINC, Jadi Hotspot adalah bagian dari OracleJDK dan OpenJDK? Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier
12

Catatan: AdoptOpenJDK telah mengubah namanya menjadi Adoptium setelah pindah ke Eclipse Foundation pada akhir 2020-06.


Perbedaan antara JVM dan HotSpot?

Sebuah Java Virtual Machine (JVM) adalah sebuah komputer imajiner yang belum pernah secara fisik dibangun sebagai hardware. JVM menjalankan program yang dikompilasi dengan set instruksi imajinernya yang ditulis ke penyimpanan sebagai representasi perantara yang dikenal sebagai bytecode .

Pada saat runtime, bytecode harus diterjemahkan dari set instruksi imajiner ke set instruksi aktual dari CPU dari mesin host. Hal ini dapat dilakukan secara langsung oleh penerjemah. Atau bytecode dapat sepenuhnya dikompilasi dan di-cache, untuk berjalan lebih cepat daripada melalui interpreter, dalam proses yang dikenal sebagai kompilasi Just-In-Time (JIT) .

Selama beberapa dekade, ada banyak implementasi JVM . Sebagian besar telah jatuh.

HotSpot adalah salah satu implementasi teknologi JIT yang dimulai dengan menjalankan interpretasi, dan menyaksikan kinerja aplikasi yang sebenarnya. Bagian dari aplikasi kemudian dipilih untuk dikompilasi sepenuhnya sebagai kode asli dan di-cache, untuk eksekusi yang jauh lebih cepat. HotSpot dikembangkan di Sun sebagai produk komersial. Setelah mengakuisisi Sun, Oracle mengembangkan HotSpot lebih lanjut dengan menggabungkan bagian-bagian penting dari produk pesaing mereka, JRockit . HotSpot sekarang bersumber terbuka melaluiproyek OpenJDK , tersedia gratis.

Implementasi lain seperti itu di OpenJ9 , dikembangkan oleh IBM, dan sekarang bersumber terbuka melalui Eclipse Foundation dan tersedia secara gratis. Beberapa distribusi JVM yang dibangun pada OpenJDK menggantikan HotSpot dengan OpenJ9 sementara masih menggunakan OpenJDK lainnya seperti perpustakaan kelas Java SE . Misalnya, distribusi pre-built yang tersedia di AdoptOpenJDK menyediakan pilihan HotSpot atau OpenJ9 pada beberapa perangkat keras.

Diagram yang menunjukkan sejarah penggabungan HotSpot & JRockit, dan OpenJ9 keduanya tersedia di AdoptOpenJDK.

Diagram yang menunjukkan sejarah penggabungan HotSpot & JRockit, dan OpenJ9 keduanya tersedia di AdoptOpenJDK

Apa sebenarnya HotSpot dan bagaimana hubungannya dengan JVM dan OpenJDK? Apakah itu perpustakaan? Apa fungsinya?

  • HotSpot adalah implementasi dari bagian JVM yang menginterpretasikan dan / atau mengkompilasi bytecode Java untuk dieksekusi pada CPU host.
  • OpenJ9 adalah alternatif.

OpenJ9 umumnya dikenal untuk memulai lebih cepat dan penggunaan memori jauh lebih rendah pada awalnya, sementara HotSpot dapat berjalan secara keseluruhan lebih efisien untuk aplikasi yang berjalan lama. Keduanya dianggap baik, baik dipakai, dan tersedia dengan distribusi OpenJDK.

OpenJDK adalah proyek sumber terbuka yang sepenuhnya mengimplementasikan Spesifikasi Java , JSR , dan JEP yang mendefinisikan platform Java . Setiap implementasi JVM yang saya tahu hari ini didasarkan sepenuhnya atau sebagian besar pada basis kode OpenJDKdan menggunakan teknologi HotSpot atau OpenJ9.

Selain JVM, OpenJDK juga menyediakan implementasi dalam kode sumber untuk semua kelas yang diperlukan oleh spesifikasi Java SE, seperti java.lang , java.util , java.time , dan paket lainnya.

Juga, apa perbedaan antara OpenJDK dan HotSpot?

Kode sumber untuk HotSpot disimpan, dipelihara, dan dikembangkan lebih lanjut sebagai bagian dari proyek OpenJDK . Alternatifnya, OpenJ9 , ditempatkan, dipelihara, dan dikembangkan lebih lanjut di Eclipse Foundation , sambil menggantikan HotSpot di beberapa distribusi OpenJDK.

Beberapa distribusi teknologi Java memilih untuk mengirim dengan HotSpot. Beberapa distribusi memilih untuk mengganti bagian dari basis kode OpenJDK yaitu HotSpot dengan alternatifnya, OpenJ9 .

Berikut ini adalah diagram alur untuk membantu Anda memilih vendor untuk distribusi platform Java.

Flowchart memandu Anda dalam memilih vendor untuk implementasi Java 11

Motivasi dalam memilih vendor untuk Java

Basil Bourque
sumber
8

HotSpot, sebagaimana disebutkan di atas, implementasi lintas platform dari Konsep Java Virtual Machine (JVM), dan didistribusikan dengan OpenJDK (Java Developer Kit), di bawah Lisensi Publik Umum GNU. HotSpot ditulis terutama dalam C ++, dan pada awalnya dikembangkan di bawah Sun Microsystems. Saat ini dikembangkan di bawah Proyek OpenJDK, di www.java.net. HotSpot JVM tersedia sebagai add-on untuk Java 1.2, dan kemudian digunakan sebagai Sun JVM default di Java 1.3. JVM saat ini dalam Versi 7, Build b147, dan memiliki komunitas pengembangan aktif di belakangnya.

Untuk informasi lebih lanjut, goto: https://www.java.net/

Selamat Coding!


sumber
7

JVM adalah mesin abstrak (spesifikasi). HotSpot, OpenJDK dan JRockit dan begitu juga implementasi JVM.

Implementasi sumber bebas dan terbuka

  • HotSpot , referensi utama implementasi Java VM

  • OpenJDK - Open Java Development Kit adalah implementasi bebas dan sumber terbuka yang dilisensikan di bawah GNU General Public License (GNU GPL) dengan pengecualian tautan.

Implementasi eksklusif

  • JRockit (berasal dari Appeal Virtual Machines) yang diakuisisi oleh Oracle untuk Linux, Windows dan Solaris

untuk lebih banyak implementasi,
tautan menjelaskan perbedaan antara HotSpot dan JRocket

Premraj
sumber
-25

HotSpot adalah bentuk lanjutan dari peretasan C ++, untuk menggunakannya Anda harus membuatnya agar bisa mengkompilasi bahkan hal-hal yang paling sederhana. Kecuali jika Anda menyetel kompiler dan atau menulisnya dari awal. HotSpot pada dasarnya adalah cara mengubah kode sumber menjadi kode C ++ dan kemudian mengompilasinya ke kode asli sehingga istilah jit dikompilasi.

Dawg
sumber