JVM ve HotSpot arasındaki fark nedir?


147

HotSpot tam olarak nedir ve JVM ve OpenJDK ile nasıl ilişkilidir? Bir kütüphane mi? Bu tam olarak ne işe yarar?

Ayrıca, OpenJDK ve HotSpot arasındaki fark nedir?

Yanıtlar:


148

Java Sanal Makinesi'nin tam olarak ne olduğu tanımı Java Sanal Makine Spesifikasyonu'nda belirtilmiştir

JVM tanım gereği sanal bir makinedir , yani gerçek bir makinenin ne yaptığını simüle eden bir yazılım makinesidir. Gerçek bir makine gibi, bir komut seti , bir sanal bilgisayar mimarisi ve bir yürütme modeli vardır. Gerçek bir makinenin makine kodunu çalıştırabileceği gibi, bu sanal talimat seti ile yazılmış kodu çalıştırabilir.

HotSpot JVM konseptinin bir uygulamasıdır. Başlangıçta Sun tarafından geliştirildi ve şimdi Oracle'a ait. Diğerlerinin yanı sıra JVM spesifikasyonunun JRockit , IBM J9 gibi başka uygulamaları da vardır .

Bkz . Java Sanal Makinesi Uygulamaları Listesi

OpenJDK HotSpot (ve JDK örneğin derleyici, API'ler, araçlar, vb diğer birçok parçaya) bir açık kaynak uygulaması geliştirilmiştir altında bir projedir.


25

OpenJDK (Açık Java Geliştirme Kiti), Java Platformu, Standart Sürüm'ün (Java SE) ücretsiz ve açık kaynak kodlu bir uygulamasıdır. kesinlikle açık kaynak kodlu. Gereğince resmi belgeler .

OpenJDK, Java Platformu, Standart Sürüm (Java SE) spesifikasyonlarının açık kaynaklı bir uygulamasıdır. Mayıs 2007'de Sun, GNU Genel Kamu Lisansı sürüm iki (GPLv2) altında OpenJDK Topluluğuna Java SE için tamamen oluşturulabilir bir Java Geliştirme Kiti (JDK) sürümünü yayınladı. Sun, OpenJDK topluluğu için Geçici Yönetim Kurulu'nu açıkladı. Sun ayrıca OpenJDK tabanlı uygulamaların Java SE 6 teknik özellikleriyle uyumluluk sağlamak için Java SE 6 Teknik Uyumluluk Kiti'ni (JCK) kullanabileceğini duyurdu.

OpenJDK proje bileşenlerinin bir dizi oluşur - HotSpot (sanal makine) , Java sınıf kitaplığı ve javac Java compiler.For daha üzerinde, onun ziyaret siteyi .

Sun / Oracle tarafından sağlanan mevcut JVM'ye HotSpot denir, çünkü "tam zamanında" optimizasyon için kodda (kodun daha yoğun kullanıldığı yerler) sıcak kullanım alanları arar. Gönderen wikipedia , "Java HotSpot Performans Motoru" olarak piyasaya HotSpot, masaüstü ve sunucular, muhafaza ve Oracle Corporation tarafından dağıtılan bir Java sanal makinesidir.


OpenJDK'nın kod yürütmek için HotSpot kullandığını duydum. Bu doğru mu?
Justin

@TheNewIdiot, yani HotSpot'un OpenJDK'nın bir parçası olduğunu mu söylüyorsunuz? Ya da yukarıdaki cevabın önerdiği gibi tescilli bir HotSpot var mı?
Pacerier

@NINC, Yani Hotspot hem OracleJDK'nın hem de OpenJDK'nın bir parçası mı? Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier

12

Not: AdoptOpenJDK , 2020-06 sonlarında Eclipse Foundation'a taşındıktan sonra adını Adoptium olarak değiştirdi .


JVM ve HotSpot arasındaki fark nedir?

Bir Java Virtual Machine (JVM) fiziksel donanım olarak inşa olmamıştı hayali bilgisayardır. Bir JVM , bayt kodu olarak bilinen bir ara gösterim olarak depolamaya yazılan hayali komut kümesine derlenmiş programları çalıştırır .

Çalışma zamanında bayt kodu, hayali komut setinden ana makinenin CPU'sunun gerçek komut setine çevrilmelidir. Bu, bir tercüman tarafından anında yapılabilir. Veya bayt kodu, Tam Zamanında (JIT) derleme olarak bilinen bir işlemde yorumlayıcıdan daha hızlı çalışacak şekilde tamamen derlenebilir ve önbelleğe alınabilir .

On yıllar boyunca JVM'nin birçok uygulaması olmuştur . Çoğu düştü.

HotSpot , yorumlanmış çalışarak başlayan ve uygulamanın gerçek performansını izleyen JIT teknolojisinin bir uygulamasıdır. Uygulamanın bazı bölümleri daha sonra yerel kod olarak tamamen derlenecek ve çok daha hızlı yürütülmesi için önbelleğe alınacak şekilde seçilir. HotSpot Sun'da ticari bir ürün olarakgeliştirildi. Sun'ı satın aldıktan sonra Oracle , rakip ürünleri JRockit'in önemli kısımlarını birleştirerek HotSpot'u daha da geliştirdi . HotSpot artıkücretsiz olarak temin edilebilen OpenJDK projesiaracılığıyla açık kaynaklıdır.

IBM tarafından geliştirilen ve şimdi Eclipse Vakfı aracılığıyla açık kaynaklı ve ücretsiz olarak sunulan OpenJ9'da böyle bir başka uygulama . OpenJDK üzerine kurulan bazı JVM dağıtımları, Java SE sınıfı kitaplıkları gibi OpenJDK'nin geri kalanını kullanırken HotSpot'u OpenJ9 ile değiştirir . Örneğin, AdoptOpenJDK'da bulunan önceden oluşturulmuş dağıtımlar , bazı donanımlarda HotSpot veya OpenJ9 seçiminizi sağlar .

HotSpot ve JRockit birleşmesinin geçmişini gösteren diyagram ve her ikisi de AdoptOpenJDK'da mevcuttur.

HotSpot ve JRockit birleştirme geçmişini gösteren diyagram ve hem AdoptOpenJDK'da bulunan OpenJ9

HotSpot tam olarak nedir ve JVM ve OpenJDK ile nasıl ilişkilidir? Bir kütüphane mi? Bu tam olarak ne işe yarar?

  • HotSpot , JVM'nin ana CPU'da yürütülecek Java bayt kodunu yorumlayan ve / veya derleyen kısmının bir uygulamasıdır.
  • OpenJ9 bir alternatiftir.

OpenJ9 genellikle başlangıçta çok daha hızlı başlatma ve daha düşük bellek kullanımı ile tanınırken , HotSpot uzun süredir çalışan uygulamalar için genel olarak daha verimli çalışabilir. Her ikisi de saygın, yıpranmış ve OpenJDK dağıtımları ile kullanılabilir.

OpenJDK , Java platformunu tanımlayan Java Spesifikasyonlarını , JSR'leri ve JEP'leri tamamen uygulayan açık kaynaklı bir projedir. Bugün bildiğim her JVM uygulaması tamamen veya çoğunlukla OpenJDK kod tabanına dayanıyorve HotSpot veya OpenJ9 teknolojisini kullanıyor.

JVM'nin yanı sıra OpenJDK, Java SE spesifikasyonları için gerekli olan java.lang , java.util , java.time ve diğer paketler gibi tüm sınıflar için kaynak kodunda bir uygulama sağlar.

Ayrıca, OpenJDK ve HotSpot arasındaki fark nedir?

HotSpot için kaynak kodu , OpenJDK projesinin bir parçası olarak barındırılır, korunur ve geliştirilir . Alternatif, OpenJ9 , Eclipse Foundation'da barındırılır, korunur ve daha da geliştirilirken, bazı OpenJDK dağıtımlarında HotSpot'un yerini alır.

Java teknolojisinin bazı dağıtımları HotSpot ile birlikte gönderilir. Bazı dağıtımlar, OpenJDK kod tabanının HotSpot olan kısmını OpenJ9 alternatifiyle değiştirmeyi seçer .

Java platformunun dağıtımı için bir satıcı seçmenize yardımcı olacak bir akış şeması grafiği.

Java 11 uygulaması için bir satıcı seçmenizde size yol gösteren akış şeması

Java için bir satıcı seçmede motivasyonlar


8

HotSpot, yukarıda belirtildiği gibi, Java Sanal Makine (JVM) Kavramının platformlar arası bir uygulamasıdır ve GNU Genel Kamu Lisansı altında OpenJDK (Java Developer Kit) ile dağıtılır. HotSpot esas olarak C ++ ile yazılmıştır ve başlangıçta Sun Microsystems altında geliştirilmiştir. Şu anda www.java.net adresindeki OpenJDK Projesi kapsamında geliştirilmektedir. HotSpot JVM, Java 1.2 için bir eklenti olarak mevcuttu ve daha sonra Java 1.3'te varsayılan Sun JVM olarak kullanıldı. JVM şu anda Sürüm 7, Build b147'de ve arkasında aktif bir geliştirme topluluğu var.

Daha fazla bilgi için şu adrese gidin: https://www.java.net/

Mutlu Kodlama!


7

JVM soyut bir makinedir (özellikler). HotSpot, OpenJDK ve JRockit vb. JVM uygulamalarıdır.

Ücretsiz ve açık kaynak uygulamaları

  • HotSpot , birincil başvuru Java VM uygulaması

  • OpenJDK - Açık Java Geliştirme Kiti, bağlantı istisnası dışında GNU Genel Kamu Lisansı (GNU GPL) altında lisanslanan ücretsiz ve açık kaynaklı bir uygulamadır.

Tescilli uygulamalar

  • JRockit (aslen Appeal Virtual Machines'den) Linux, Windows ve Solaris için Oracle tarafından satın alındı

daha fazla uygulama için
bağlantı HotSpot ve JRocket arasındaki farkları açıklar


-25

HotSpot, C ++ hacklemenin gelişmiş bir biçimidir, kullanmak için en basit şeyleri bile derlemek için buna karşı inşa etmeniz gerekir. Derleyicileri ayarlayıp sıfırdan yazmadığınız sürece. HotSpot temel olarak kaynak kodunu C ++ koduna dönüştürmenin ve daha sonra yerel koda derleyerek jit terimi derlenmesinin bir yoludur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.