อ่าน 5 นาที
ฮอตสปอต
HotSpot ซึ่งเปิดตัวในชื่อ Java HotSpot Performance Engine [ 1 ] เป็นเครื่อง เสมือน Java สำหรับ คอมพิวเตอร์ เดสก์ท็อป และ เซิร์ฟเวอร์ พัฒนาโดย Sun Microsystems...
ฮอตสปอต
| เครื่องเสมือน Java HotSpot | |
|---|---|
| ผู้เขียนต้นฉบับ | ซัน ไมโครซิสเต็มส์ |
| นักพัฒนา | บริษัท ออราเคิล คอร์ปอเรชั่น |
| ปล่อย | 27 เมษายน พ.ศ. 2542 [ 1 ] |
| เวอร์ชันเสถียร | Java SE 26 [ 2 ] |
| เขียนเป็น | ซี++แอสเซมบลี |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| พิมพ์ | เครื่องเสมือน Java |
| ใบอนุญาต | ลิขสิทธิ์เฉพาะ (เวอร์ชันแรกๆ), ลิขสิทธิ์สาธารณะทั่วไปของ GNU (เวอร์ชันปัจจุบัน) |
| เว็บไซต์ | openjdk.org/groups/hotspot/ |
| ที่เก็บข้อมูล | github.com/openjdk/jdk/tree/master/src/hotspot |
HotSpotซึ่งเปิดตัวในชื่อJava HotSpot Performance Engine [ 1 ]เป็นเครื่องเสมือน Javaสำหรับ คอมพิวเตอร์ เดสก์ท็อปและเซิร์ฟเวอร์พัฒนาโดยSun Microsystemsซึ่งถูกซื้อกิจการและกลายเป็นแผนกหนึ่งของOracle Corporationในปี 2010 คุณสมบัติของมันรวมถึงประสิทธิภาพที่ได้รับการปรับปรุงผ่านวิธีการต่างๆ เช่นการคอมไพล์แบบทันเวลาและการเพิ่มประสิทธิภาพแบบปรับตัวได้ถือเป็นเครื่องเสมือน Java มาตรฐานที่ใช้กันโดยทั่วไป
ประวัติศาสตร์
Java HotSpot Performance Engine เปิดตัวเมื่อวันที่ 27 เมษายน พ.ศ. 2542 [ 1 ]โดยสร้างขึ้นจากเทคโนโลยีจากการใช้งานภาษาโปรแกรมSmalltalkที่ชื่อStrongtalkซึ่งเดิมพัฒนาโดย Longview Technologies ซึ่งทำการค้าในชื่อ Animorphic เครื่องเสมือน Longview ใช้พื้นฐานจาก เครื่องเสมือน Selfโดยมีตัวแปลภาษามาแทนที่คอมไพเลอร์ตัวแรกที่เร็วและโง่ เมื่อ Sun ยกเลิกโครงการ Self บุคคลสำคัญสองคนคือUrs HölzleและLars Bakได้ออกจาก Sun เพื่อไปก่อตั้ง Longview ในปี พ.ศ. 2540 Sun Microsystemsได้ซื้อ Animorphic [ 3 ]
หลังจากเข้าซื้อ Animorphic ได้ไม่นาน Sun ก็ตัดสินใจเขียนคอมไพเลอร์แบบ just-in-time (JIT) ที่แข็งแกร่งกว่าเดิม สำหรับ Java virtual machine [ 4 ]ซึ่งมีชื่อว่า HotSpot server compiler (ชื่อภายใน C2) ซึ่งเดิมทีพัฒนาโดยClifford Click [ 5 ]และเป็นส่วนขยายของวิทยานิพนธ์ปริญญาเอกของเขาเกี่ยวกับการเพิ่มประสิทธิภาพคอมไพเลอร์[ 6 ]ชื่อHotSpotมาจากพฤติกรรมของซอฟต์แวร์: ขณะที่รันJava bytecodeเช่นเดียวกับ Self VM HotSpot จะวิเคราะห์ประสิทธิภาพของโปรแกรมอย่างต่อเนื่องเพื่อหาhot spotsที่ถูกเรียกใช้งานบ่อยหรือซ้ำๆ จากนั้นจึงกำหนดเป้าหมายเพื่อเพิ่มประสิทธิภาพทำให้ได้การทำงานที่มีประสิทธิภาพสูงโดยมีค่าใช้จ่ายน้อยที่สุดสำหรับโค้ดที่ไม่สำคัญต่อประสิทธิภาพมากนัก ในรายงานฉบับหนึ่ง JVM เอาชนะ โค้ด C++หรือC บางส่วน ในเกณฑ์มาตรฐานบางอย่าง[ 7 ]
HotSpot เดิมทีมีให้ใช้งานเป็นส่วนเสริมสำหรับ Java 1.2 [ 8 ]และกลายเป็น JVM ของ Sun ที่เป็นค่าเริ่มต้นใน Java 1.3 [ 9 ]
คุณสมบัติ
JRE (เดิมทีเป็นของ Sun ปัจจุบันเป็นของ Oracle) ประกอบด้วยเครื่องเสมือนสองเครื่อง เครื่องหนึ่งเรียกว่าClientและอีก เครื่องเรียกว่า Serverเวอร์ชัน Client ถูกปรับแต่งให้โหลดเร็ว โดยใช้การตีความ (interpretation) ส่วนเวอร์ชัน Server โหลดช้ากว่า โดยเน้นการสร้างการคอมไพล์แบบ JIT ที่ได้รับการปรับแต่งอย่างสูง เพื่อให้ได้ประสิทธิภาพที่ดีกว่า ทั้งสองเครื่องเสมือนจะคอมไพล์เฉพาะเมธอดที่ใช้งานบ่อย โดยใช้เกณฑ์จำนวนการเรียกใช้งานที่กำหนดค่าได้เพื่อตัดสินใจว่าจะคอมไพล์เมธอดใดบ้าง
การคอมไพล์แบบแบ่งระดับ ซึ่งเป็นตัวเลือกที่แนะนำใน Java 7 ใช้ทั้งคอมไพเลอร์ฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ควบคู่กันเพื่อให้เวลาเริ่มต้นเร็วกว่าคอมไพเลอร์ฝั่งเซิร์ฟเวอร์ แต่มีประสิทธิภาพสูงสุดที่คล้ายคลึงกันหรือดีกว่า[ 10 ]ตั้งแต่ Java 8 เป็นต้นไป การคอมไพล์แบบแบ่งระดับถือเป็นค่าเริ่มต้นสำหรับ VM ฝั่งเซิร์ฟเวอร์[ 11 ]
HotSpot เขียนด้วยภาษาC++และ Assembly ในปี 2550 Sun ประเมินว่าประกอบด้วยซอร์สโค้ดประมาณ 250,000 บรรทัด[ 12 ] Hotspot ให้บริการดังต่อไปนี้:
- ตัวโหลดคลาส Java
- ตัวแปลไบต์โค้ด Java แบบเทมเพลต
- คอมไพเลอร์แบบ Just-in-Time สำหรับ ไคลเอ็นต์ (C1) และเซิร์ฟเวอร์ (C2) ซึ่งได้รับการปรับแต่งให้เหมาะสมกับการใช้งานของแต่ละฝ่าย
- ตัวเก็บขยะหลายตัว(รวมถึง ZGC ที่มีความหน่วงต่ำและ Shenandoah ที่มีเวลาหยุดชั่วคราวต่ำ) [ 13 ] [ 14 ] [ 15 ]
- ชุดไลบรารีรันไทม์ที่สนับสนุน
- คุณสมบัติการให้บริการ
แฟล็ก JVM
HotSpot รองรับอาร์กิวเมนต์บรรทัดคำสั่ง จำนวนมาก สำหรับตัวเลือกในการดำเนินการเครื่องเสมือน บางส่วนเป็นมาตรฐานและต้องพบในเครื่องเสมือน Java ที่สอดคล้องทุก เครื่อง บางส่วนเป็นเฉพาะของ HotSpot และอาจไม่พบใน JVM อื่นๆ (ตัวเลือกที่ขึ้นต้นด้วย -X หรือ -XX ถือเป็นตัวเลือกที่ไม่เป็นมาตรฐาน) [ 16 ] [ 17 ] [ 18 ] [ 19 ]
ใบอนุญาต
เมื่อวันที่ 13 พฤศจิกายน พ.ศ. 2549 HotSpot JVM และJava Development Kit (JDK) ได้รับการอนุญาตภายใต้GNU General Public License (GPL) เวอร์ชัน 2 [ 20 ]นี่คือโค้ดที่กลายเป็นส่วนหนึ่งของJava 7 [ 21 ]
แพลตฟอร์มที่รองรับ
ดูแลโดย Oracle
เช่นเดียวกับ Java Development Kit (JDK) ทั้งหมดHotSpot ได้รับการสนับสนุนโดยOracle CorporationบนWindows , LinuxและmacOS สถาปัตยกรรม ชุดคำสั่ง (ISA) ที่รองรับคือx86-64และAArch64 [ 22 ]ตั้งแต่ JDK 15 เป็นต้นไปSolarisและSPARCจะไม่ได้รับการสนับสนุนอีกต่อไป[ 23 ]
ท่าเรือโดยบุคคลที่สาม
นอกจากนี้ ยังมีพอร์ตจากผู้พัฒนาภายนอกสำหรับระบบปฏิบัติการUnix อื่นๆ อีก หลายระบบ รองรับสถาปัตยกรรมฮาร์ดแวร์ที่หลากหลาย รวมถึง x86, PowerPCและ SPARC (เฉพาะ Solaris)
การพอร์ต HotSpot นั้นยาก เนื่องจากส่วนใหญ่เขียนด้วยภาษาแอสเซมบลีเกือบทั้งหมด [ 24 ] แม้ว่าบางส่วนจะเขียนด้วยISO C++ ที่สอดคล้องกับมาตรฐาน อย่างสมบูรณ์ก็ตาม เพื่อแก้ไขปัญหานี้ โครงการ IcedTeaได้พัฒนาพอร์ตทั่วไปของตัวแปล HotSpot ที่เรียกว่าzero-assembler Hotspot (หรือzero ) ซึ่งแทบไม่มีโค้ดแอสเซมบลีเลย พอร์ตนี้มีจุดประสงค์เพื่อให้สามารถปรับส่วนประกอบตัวแปลของ HotSpot ให้เข้ากับ สถาปัตยกรรมโปรเซสเซอร์ Linux ใดๆ ได้ง่าย โค้ดของzero-assembler Hotspotถูกนำมาใช้สำหรับพอร์ตสถาปัตยกรรมที่ไม่ใช่x86 ทั้งหมด ของ HotSpot ( PowerPC , Itanium ( IA-64 ), S390และARM ) ตั้งแต่เวอร์ชัน 1.6 เป็นต้นไป[ 25 ] [ 26 ] [ 27 ]
ดูเพิ่มเติม
- รายชื่อเครื่องเสมือน Java
- การเปรียบเทียบเครื่องเสมือน Java
- ประสิทธิภาพของ Java
- โอเพ่นเจดีเค
- Da Vinci Machineคือโครงการสร้างต้นแบบส่วนขยายของ JVM เพื่อเพิ่มการสนับสนุนภาษาการเขียนโปรแกรมแบบไดนามิก
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- รายการตัวเลือก VM ของ HotSpot
- ข้อกำหนดเครื่องเสมือน Java
- ประวัติความเป็นมาของทีม Strongtalk-HotSpot ดั้งเดิม
- " Sun ประกาศเปิดตัว Java Hotspot Performance Engine"เก็บถาวรจากต้นฉบับเมื่อวันที่ 18 ธันวาคม 2549 เรียกดูเมื่อวันที่ 27 มีนาคม 2557
{{cite web}}: CS1 maint: bot: สถานะ URL เดิมไม่ทราบ ( ลิงก์ ) - HotSpot Mercurial คือระบบจัดเก็บและควบคุมเวอร์ชันของซอร์สโค้ดสำหรับ JDK8
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ฮอตสปอต
HotSpot ซึ่งเปิดตัวในชื่อ Java HotSpot Performance Engine [ 1 ] เป็นเครื่อง เสมือน Java สำหรับ คอมพิวเตอร์ เดสก์ท็อป และ เซิร์ฟเวอร์ พัฒนาโดย Sun Microsystems...
ประวัติศาสตร์
Java HotSpot Performance Engine เปิดตัวเมื่อวันที่ 27 เมษายน พ.ศ.
คุณสมบัติ
JRE (เดิมทีเป็นของ Sun ปัจจุบันเป็นของ Oracle) ประกอบด้วยเครื่องเสมือนสองเครื่อง เครื่องหนึ่งเรียกว่า Client และอีก เครื่องเรียกว่า Server เวอร์ชัน Client ถูกปรับแต่งให้โหลดเร็ว โดยใช้การตีความ (interpretation) ส่วนเวอร์ชัน Server โหลดช้ากว่า โดยเน้นการสร้าง...
แฟล็ก JVM
HotSpot รองรับ อาร์กิวเมนต์บรรทัดคำสั่ง จำนวนมาก สำหรับตัวเลือกในการดำเนินการเครื่องเสมือน บางส่วนเป็นมาตรฐานและต้องพบใน เครื่องเสมือน Java ที่สอดคล้องทุก เครื่อง บางส่วนเป็นเฉพาะของ HotSpot และอาจไม่พบใน JVM อื่นๆ (ตัวเลือกที่ขึ้นต้นด้วย -X หรือ -XX...