ความแตกต่างระหว่าง JVM และ HotSpot?


147

HotSpot คืออะไรและเกี่ยวข้องกับ JVM และ OpenJDK อย่างไร มันเป็นห้องสมุดหรือไม่? มันทำอะไรกันแน่?

นอกจากนี้ความแตกต่างระหว่าง OpenJDK และ HotSpot คืออะไร?

คำตอบ:


148

นิยามของสิ่งที่เป็น Java Virtual Machine ที่ระบุในJava Virtual Machine Specification

JVM เป็นการกำหนดเครื่องเสมือนคือเครื่องซอฟต์แวร์ที่จำลองสิ่งที่เครื่องจริงทำ เหมือนกับเครื่องจริงมันมีชุดคำสั่งสถาปัตยกรรมคอมพิวเตอร์เสมือนจริงและรูปแบบการดำเนินการ มันมีความสามารถในการเรียกใช้โค้ดที่เขียนด้วยชุดคำสั่งเสมือนนี้ได้เหมือนกับเครื่องจริงที่สามารถเรียกใช้รหัสเครื่อง

HotSpotเป็นการใช้งานแนวคิด JVM มันได้รับการพัฒนาโดยซันและตอนนี้มันเป็นของ Oracle มีการใช้งานอื่น ๆ ของข้อกำหนด JVM เช่นJRockit , IBM J9และอื่น ๆ อีกมากมาย

ดูรายการการใช้งาน Java Virtual Machine

OpenJDKเป็นโครงการภายใต้การดำเนินงานของ opensource HotSpot (และชิ้นส่วนอื่น ๆ ของ JDK เช่นคอมไพเลอร์ APIs เครื่องมือ ฯลฯ ) ถูกพัฒนา


25

OpenJDK (Open Java Development Kit) เป็นการใช้งานฟรีและโอเพ่นซอร์สของ Java Platform, Standard Edition (Java SE) openjdk เป็นโครงการที่เริ่มต้นโดย Sun Microsystems ปัจจุบันดูแลโดยหลาย บริษัท และชุมชนเพื่อสร้าง Java Development Kit อย่างแน่นอนในโอเพนซอร์ส ตามเอกสารที่เป็นทางการ

OpenJDK เป็นการใช้งานโอเพ่นซอร์สของข้อกำหนดคุณสมบัติ Java Platform, Standard Edition (Java SE) ในเดือนพฤษภาคม 2550 ซันเปิดตัว Java Development Kit (JDK) ที่สามารถ build ได้อย่างสมบูรณ์สำหรับ Java SE ไปยัง OpenJDK Community เป็นซอฟต์แวร์ฟรีภายใต้สัญญาอนุญาตสาธารณะทั่วไปของ GNU รุ่นที่สอง (GPLv2) ซุนประกาศคณะกรรมการการปกครองระหว่างกาลสำหรับชุมชน OpenJDK ซันยังประกาศด้วยว่าการใช้งานบน OpenJDK สามารถใช้ Java SE 6 Technical Compatibility Kit (JCK) เพื่อสร้างความเข้ากันได้กับข้อกำหนด Java SE 6

โครงการ OpenJDKประกอบด้วยจำนวนของชิ้นส่วนอิเล็กทรอนิกส์ - HotSpot (เครื่องเสมือน)ห้องสมุดชั้น Java และ javac Java compiler.For เพิ่มเติมเกี่ยวกับมันเยี่ยมชมของเว็บไซต์

JVM ปัจจุบันที่จัดทำโดย Sun / Oracle เรียกว่าHotSpotเนื่องจากเป็นจุดที่มีการใช้งานในรหัส (สถานที่ที่มีการใช้รหัสมากขึ้น) สำหรับการปรับให้เหมาะสมแบบ "ทันเวลา" จากวิกิพีเดีย , HotSpot ได้รับการปล่อยตัวในฐานะ "Java HotSpot สมรรถนะของเครื่องยนต์" เป็นเครื่องเสมือน Java สำหรับพีซีและเซิร์ฟเวอร์, การบำรุงรักษาและจัดจำหน่ายโดย บริษัท ออราเคิลคอร์ปอเรชั่น


ฉันได้ยินว่า OpenJDK ยังใช้ HotSpot เพื่อรันโค้ดหรือไม่ มันเป็นเรื่องจริงเหรอ?
Justin

@TheNewIdiot ดังนั้นคุณกำลังพูดถึง HotSpot เป็นส่วนหนึ่งของ OpenJDK? หรือมีฮอตสปอตที่เป็นกรรมสิทธิ์ตามคำตอบข้างต้นแสดงให้เห็น?
Pacerier

@NINC ดังนั้น Hotspot เป็นส่วนหนึ่งของ OracleJDK และ OpenJDK หรือไม่ Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier

12

หมายเหตุ: AdoptOpenJDKได้เปลี่ยนชื่อเป็นAdoptiumหลังจากย้ายไปที่ Eclipse Foundation ในช่วงปลายปี 2020-06


ความแตกต่างระหว่าง JVM และ HotSpot?

โปรแกรม Java Virtual Machine (JVM)เป็นคอมพิวเตอร์จินตนาการที่ไม่เคยได้รับการสร้างขึ้นร่างกายเป็นฮาร์ดแวร์ JVM รันโปรแกรมรวบรวมเพื่อจินตนาการของชุดคำสั่งที่เขียนขึ้นเพื่อการจัดเก็บข้อมูลในฐานะที่เป็นตัวแทนของกลางที่รู้จักกันเป็นbytecode

เมื่อรันไทม์จะต้องแปล bytecode จากชุดคำสั่งจินตภาพเป็นชุดคำสั่งจริงของ CPU ของเครื่องโฮสต์ สิ่งนี้สามารถทำได้ทันทีโดยล่าม หรือ bytecode ที่สามารถรวบรวมได้อย่างเต็มที่และเก็บไว้เพื่อให้ทำงานได้เร็วขึ้นกว่าที่ผ่านล่ามในกระบวนการที่เรียกว่าJust-In-Time (JIT) รวบรวม

ตลอดหลายทศวรรษที่ผ่านมามีการนำ JVMไปใช้งานหลายอย่าง ส่วนใหญ่จะหลุดไป

HotSpotเป็นการนำเทคโนโลยี JIT มาใช้งานโดยเริ่มจากการตีความและเฝ้าดูประสิทธิภาพที่แท้จริงของแอพ จากนั้นบางส่วนของแอพจะถูกเลือกให้รวบรวมเป็นรหัสเนทีฟและแคชเพื่อการทำงานที่รวดเร็วยิ่งขึ้น HotSpot ได้รับการพัฒนาที่ Sunในฐานะผลิตภัณฑ์เชิงพาณิชย์ หลังจากซื้อ Sun,ออราเคิลต่อการพัฒนา HotSpot โดยการรวมส่วนที่สำคัญของผลิตภัณฑ์การแข่งขันของพวกเขาJRockit HotSpot เปิดให้บริการแล้วผ่านโครงการ OpenJDKซึ่งไม่มีค่าใช้จ่าย

การติดตั้งอื่น ๆ ในOpenJ9 ที่พัฒนาโดย IBM และตอนนี้เปิดแหล่งที่มาผ่านEclipse Foundationและไม่มีค่าใช้จ่าย การแจกแจง JVM บางตัวที่สร้างขึ้นบน OpenJDK แทนที่ HotSpot ด้วย OpenJ9 ในขณะที่ยังใช้ OpenJDK ที่เหลืออยู่เช่นไลบรารีคลาสJava SE ตัวอย่างเช่นการกระจายที่สร้างไว้ล่วงหน้าที่มีอยู่ที่AdoptOpenJDKให้ทางเลือกของHotSpotหรือOpenJ9 ของคุณบนฮาร์ดแวร์บางตัว

ไดอะแกรมแสดงประวัติของการรวมฮอตสปอตและ JRockit และ OpenJ9 ทั้งสองมีอยู่ใน AdoptOpenJDK

แผนภาพแสดงประวัติของการรวมฮอตสปอต & JRockit และ OpenJ9 ทั้งสองมีอยู่ใน AdoptOpenJDK

HotSpot คืออะไรและเกี่ยวข้องกับ JVM และ OpenJDK อย่างไร มันเป็นห้องสมุดหรือไม่? มันทำอะไรกันแน่?

  • HotSpotเป็นการใช้งานส่วนหนึ่งของ JVM ที่ตีความและ / หรือคอมไพล์ Java bytecode ที่จะดำเนินการบนโฮสต์ CPU
  • OpenJ9เป็นทางเลือก

โดยทั่วไปแล้วOpenJ9เป็นที่รู้จักกันดีสำหรับการเริ่มต้นที่เร็วขึ้นและการใช้หน่วยความจำลดลงมากในขณะที่HotSpotอาจทำงานได้อย่างมีประสิทธิภาพมากขึ้นโดยรวมสำหรับแอพที่ใช้งานนาน ทั้งสองได้รับการยกย่องเป็นอย่างดีสวมใส่ได้และมีจำหน่ายด้วย OpenJDK

OpenJDKเป็นโครงการโอเพนซอร์ซที่ใช้ Java Specifications , JSR s และ JEP s ที่กำหนดแพลตฟอร์ม Javaอย่างสมบูรณ์ การใช้ JVM ทุกครั้งที่ฉันรู้จักในวันนี้นั้นขึ้นอยู่กับส่วนใหญ่หรือทั้งหมดบนรหัสฐานข้อมูล OpenJDKและใช้เทคโนโลยี HotSpot หรือ OpenJ9

นอกเหนือจาก JVM แล้ว OpenJDK ยังมีการใช้งานในซอร์สโค้ดสำหรับคลาสทั้งหมดที่กำหนดโดยข้อกำหนดคุณสมบัติ Java SE เช่นjava.lang , java.util , java.timeและแพ็คเกจอื่น ๆ

นอกจากนี้ความแตกต่างระหว่าง OpenJDK และ HotSpot คืออะไร?

ซอร์สโค้ดสำหรับHotSpotนั้นได้รับการดูแลรักษาและพัฒนาเพิ่มเติมซึ่งเป็นส่วนหนึ่งของโครงการOpenJDK ทางเลือกOpenJ9นั้นได้รับการดูแลรักษาและพัฒนาเพิ่มเติมที่Eclipse Foundationในขณะที่แทนที่ HotSpot ในการแจกจ่าย OpenJDK บางส่วน

การแจกแจงบางส่วนของเทคโนโลยี Java เลือกที่จะจัดส่งด้วย HotSpot กระจายบางคนเลือกที่จะทดแทนส่วนของOpenJDK codebase ที่เป็นHotSpotกับทางเลือกOpenJ9

นี่คือแผนผังลำดับงานเพื่อช่วยคุณเลือกผู้จำหน่ายสำหรับการเผยแพร่แพลตฟอร์ม Java

แผนผังลำดับงานแนะนำคุณในการเลือกผู้จำหน่ายสำหรับการนำ Java 11 ไปใช้

แรงจูงใจในการเลือกผู้จำหน่ายสำหรับ Java


8

HotSpot ดังกล่าวข้างต้นเป็นการใช้งานข้ามแพลตฟอร์มของแนวคิด Java Virtual Machine (JVM) และเผยแพร่ด้วย OpenJDK (Java Developer Kit) ภายใต้สัญญาอนุญาตสาธารณะทั่วไปของ GNU HotSpot เขียนเป็นภาษา C ++ เป็นหลักและได้รับการพัฒนาภายใต้ Sun Microsystems ปัจจุบันได้รับการพัฒนาภายใต้โครงการ OpenJDK ที่ www.java.net HotSpot JVM พร้อมใช้งานเป็นส่วนเสริมสำหรับ Java 1.2 และต่อมาถูกใช้เป็นค่าเริ่มต้น Sun JVM ใน Java 1.3 JVM ปัจจุบันอยู่ในเวอร์ชัน 7, Build b147 และมีชุมชนการพัฒนาที่ใช้งานอยู่ด้านหลัง

สำหรับข้อมูลเพิ่มเติมไปที่: https://www.java.net/

Happy Coding!


7

JVM เป็นเครื่องนามธรรม (ข้อกำหนด) HotSpot, OpenJDK และ JRockit และการใช้งานของ JVM

การใช้งานฟรีและโอเพนซอร์ส

  • HotSpotการอ้างอิงหลักของการติดตั้ง Java VM

  • OpenJDK - Open Java Development Kit เป็นการใช้งานฟรีและโอเพ่นซอร์สที่ได้รับอนุญาตภายใต้ GNU General Public License (GNU GPL) โดยมีข้อยกเว้นการเชื่อมโยง

การใช้งานที่เป็นกรรมสิทธิ์

  • JRockit (มาจากเครื่องเสมือนอุทธรณ์) ซึ่งได้รับโดย Oracle สำหรับ Linux, Windows และ Solaris

สำหรับลิงค์การปรับใช้เพิ่มเติมอธิบายความแตกต่างระหว่าง HotSpot และ JRocket


-25

HotSpot เป็นรูปแบบขั้นสูงของการแฮ็ค C ++ เพื่อที่จะใช้งานคุณจะต้องต่อกรกับมันเพื่อรวบรวมแม้แต่สิ่งที่ง่ายที่สุด เว้นแต่คุณจะปรับแต่งคอมไพเลอร์และหรือเขียนมันตั้งแต่ต้น HotSpot นั้นเป็นวิธีการแปลงซอร์สโค้ดเป็นรหัส C ++ จากนั้นทำการคอมไพล์ให้เป็นโค้ดเนทีฟดังนั้นคำว่า jit จะถูกคอมไพล์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.