HotSpot
A HotSpot egy Java virtuális gép desktopokra és szerverekre, melyet az Oracle Corporation terjeszt és tart karban. Ebbe olyan technikák vannak beépítve, mint pl. a futásidejű fordítás vagy az alkalmazkodó optimalizáció, amelyet a teljesítmény javítására terveztek.
HotSpot | |
Fejlesztő | Oracle Corporation (korábban Sun Microsystems) |
Első kiadás | 1999. április 27. |
Legfrissebb stabil kiadás | 23.25-b01 (2016. január 1.) |
Programozási nyelv | C++, Assembly |
Operációs rendszer | Platformfüggetlen |
Kategória | Java virtuális gép |
Licenc | GNU General Public License |
A HotSpot weboldala |
Története
szerkesztésA HotSpotot először 1999. április 27-én adták ki. Eredetileg a Longview Technologies LLC fejlesztették ki, amely Animorphic néven működött, kis induló cégként, amelyet 1994-be alakítottak. Az Animorphic virtuális gép technológiáját korábban sikeresen használták egy Sun kutatási projektben, a Self programozási nyelvben. 1997-ben a Longview Technologies LLC-t (DBA Animorphic-t) megvette a Sun Microsystems.[1] Eredetileg beépülő modulként volt elérhető a Java 1.2-höz, de a Java 1.3-ban vált a HotSpot alapértelmezett Sun JVM-mé. [2]
A neve abból származik, hogy Java bájtkódot futtat, és folyamatosan analizálja a program teljesítményét a forró pontokért (angolul hot spotok), amelyek gyakran vagy ismétlődve hajtódnak végre. Ezek az optimalizációt célozzák meg és nagy teljesítményű végrehajtáshoz vezetnek, minimális többlet költséggel a kevésbé teljesítmény kritikus kód esetében. Néhány esetben lehetséges a JVM alkalmazkodó optimalizációja, hogy akár meg is haladja a kézzel kódolt C++ vagy C kód teljesítményét.[3]
Tulajdonságai
szerkesztésA Sun ill. most már az Oracle JRE két virtuális gépet nyújt, az egyiket Client-tnek a másikat Server-nek hívják. A kliens verzió gyors betöltésre van hangolva. Ez a java értelmezőt használja. A szerver verzió sokkal lassabban töltődik be, mivel több erőfeszítésbe kerül hogy előállítson magas szinten optimalizált JIT fordításokat, a magasabb teljesítmény érdekében. Mindkét VM csak a gyakran futó metódusokat fordítja le konfigurálható hívás-számláló-küszöbszámok használatával meghatározva az éppen lefordítandó metódust.
A HotSpot Java virtuális gépet C++-ban írták. Ahogy ezt HotSpot web oldalán állítják, a forráskód körülbelül 250 000 sorból áll.[4] A Hotspot a következőket nyújtja:
- a java osztály betöltő,
- a java bájtkód értelmező,
- kliens és szerver virtuális gép, optimalizálva a megfelelő használatra,
- számos szemétgyűjtő algoritmus,
- futtatókörnyezetet támogató osztálykönyvtárak.
A HotSpot Microsoft Windows verziója futtat egy jucheck.exe
nevű háttér processzt, amely folyamatosan vizsgálja, hogy elérhető-e frissítés az Oracle-től.[5]
JVM kapcsolók
szerkesztésA HotSpot számos parancssori argumentumot támogat a virtuális gép végrehajtási opcióihoz. Néhány ezek közül sztenderd és meg kell található legyen bármely Java virtuális gép konform implementációban, mások HotSpot specifikusak és nem találhatók meg más JVM-ekben (azok az opciók, amelyek -X
vagy -XX
-el kezdődnek nem sztenderdek).[6][7][8][9]
Licenc
szerkesztés2006. november 13-án, a Sun JVM és JDK licenceltté vált[10] GPL 2-es verzió alatt (lásd Sun OpenJDK Hotspot oldalán). Ez az a kód, ami részévé vált a Java 7-nek (kódneve Dolphin[11]).
Támogatott platformok
szerkesztésOracle által karbantartott
szerkesztésAhogy az egész JDK-t, a HotSpot-ot is támogatja az Oracle Corporation a következő platformokra: Microsoft Windows, Linux, és Solaris. Támogatja az ISA-t a következő architektúrákra: IA-32, x86-64 és SPARC (kizárólag Solarisra).[12]
Harmadik fél általi portolások
szerkesztésPortolások szintén elérhetők a harmadik fél által Mac OS X-re és számos más Unix operációs rendszerre. Számos különböző hardver architektúra támogatott, beleértve az x86-t, PowerPC-t, és SPARC-t (csak Solaris).
A HotSpot portolása meglehetősen nehéz, mivel a kód – bár elsődlegesen C++-ban írták –, rengeteg assembly nyelvű részt tartalmaz.[13] Ezt orvosolandó, az IcedTea projekt kifejlesztett egy általános HotSpot értelmező portolást, amit zero-assembler Hotspot-nak hívnak (vagy zero-nak), amely csaknem teljesen assembly kód nélküli. Ezt a portolást a HotSpot értelmező komponensének könnyű adaptációjára tervezték, bármelyik Linux processzor architektúrára. A zero-assembler Hotspot kódját használják a HotSpot összes nem x86 portolásához többek közt a (PPC, IA64, S390 és ARM) architektúrákra az Java 1.6-os verziója óta.[14][15][16]
Gary Benson – aki egy IcedTea fejlesztő –, kifejlesztett egy platformfüggetlen Shark for HotSpot nevű futásidejű fordítót, ami egy alacsony szintű virtuális gép és teljesíti a zero feltételeket.[17][18]
Jegyzetek
szerkesztés- ↑ Sun's Gosling Previews Hotspot Java Virtual Machine. ComputerGram, 1998. február 13. (Hozzáférés: 2008. április 20.)
- ↑ Sun Microsystems releases fastest client-side Java platform to date. Sun Microsystems, 2000. május 8. [2007. augusztus 17-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. október 3.)
- ↑ Lewis, J.P.: Performance of Java versus C++, 2004. (Hozzáférés: 2007. október 3.)
- ↑ The HotSpot Group. Sun Microsystems, 2007. január 1. (Hozzáférés: 2007. október 3.) „There are nearly 1500 C/C++ header and source files, comprising almost 250,000 lines of code”
- ↑ What is jucheck.exe?. Java.com. (Hozzáférés: 2011. augusztus 17.)
- ↑ Java HotSpot VM Options. Sun Microsystems. (Hozzáférés: 2009. február 8.)
- ↑ Mocker, Joseph D.: A Collection of JVM Options, 2007. augusztus 28. [2011. április 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. február 8.)
- ↑ Maximovich, Dmitri: The most complete list of -XX options for Java 6 JVM. [2010. január 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. február 8.)
- ↑ Nutter, Charles: My Favorite Hotspot JVM Flags, 2009. január 29. (Hozzáférés: 2009. február 8.)
- ↑ Sun Opens Java. Sun Microsystems, 2006. november 13. (Hozzáférés: 2007. október 3.)
- ↑ JDK7 Archiválva 2016. december 15-i dátummal a Wayback Machine-ben, Sun.
- ↑ Supported System Configurations. Sun Microsystems. (Hozzáférés: 2008. január 26.)
- ↑ Gary, Benson: Gary's guide to porting IcedTea, 2007. november 6. [2012. május 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. január 26.)
- ↑ Gary, Benson: 1st February 2008, 2008. február 1. [2012. május 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. február 3.)
- ↑ Andrew, Haley: Making zero-assembler the default on ppc, 2008. január 31. (Hozzáférés: 2008. február 3.)
- ↑ Lilian, Angel: IcedTea 1.6 Released with Zero-assembler and JNLP support!. Red hat, 2008. február 13. (Hozzáférés: 2008. február 13.)
- ↑ Gary, Benson: 31 March 2008. Red hat, 2008. március 31. (Hozzáférés: 2008. május 30.)
- ↑ Gary, Benson: 28 May 2008. Red hat, 2008. május 28. (Hozzáférés: 2008. május 30.) „Shark is a platform-independent JIT for HotSpot, to complement the zero-assembler interpreter we’ve been using”
További információk
szerkesztésKapcsolódó szócikkek
szerkesztés- Java virtuális gépek listája
- Java teljesítmény
- OpenJDK
- Da Vinci gép, egy kezdődő Sun projekt, amely a prototípus-készítést célozta meg, a JVM olyan kiterjesztéséhez, melynek segítségével támogatást lehet biztosítani a dinamikus nyelvekhez.
- Java virtuális gép heap
- Alkalmazás virtuális gépek összehasonlítása
Fordítás
szerkesztésEz a szócikk részben vagy egészben a HotSpot című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.