|Developer(s)||Oracle Corporation (formerly Sun Microsystems)|
|Initial release||April 27, 1999|
23.25-b01 / January 1, 2016
|Type||Java virtual machine|
|License||Proprietary (early versions), GNU General Public License (current)|
HotSpot, released as Java HotSpot Performance Engine, is a Java virtual machine for desktop and server computers, maintained and distributed by Oracle Corporation. It features improved performance via methods such as just-in-time compilation and adaptive optimization.
The Java HotSpot Performance Engine, first released April 27, 1999, built on technologies from an implementation of the programming language Smalltalk named Strongtalk, originally developed by Longview Technologies, which traded as Animorphic. A Sun research project, the language Self, had earlier successfully used Animorphic's virtual-machine technology. In 1997, Sun Microsystems purchased Animorphic.[not in citation given]
Shortly after acquiring Animorphic, Sun decided to write a new just-in-time (JIT) compiler for the Java virtual machine. This new compiler would give rise to the name HotSpot, derived from the software's behavior: as it runs Java bytecode, it continually analyzes the program's performance for hot spots which are executed often or repeatedly. These are then targeted for optimizing, leading to high-performance execution with a minimum of overhead for less performance-critical code. In one report, the JVM beat some C++ or C code in some benchmarks.
Sun's JRE features two virtual machines, one called Client and the other Server. The Client version is tuned for quick loading. It makes use of interpretation. The Server version loads more slowly, putting more effort into producing highly optimized JIT compilations, that yield higher performance. Both VMs compile only often-run methods, using a configurable invocation-count threshold to decide which methods to compile.
Tiered compiling, an option introduced in Java 7, uses both the client and server compilers in tandem to provide faster startup time than the server compiler, but similar or better peak performance. Starting in Java 8, tiered compilation is the default for the server VM.
- A Java Classloader
- A Java bytecode interpreter
- Client and Server virtual machines, optimized for their respective uses
- Several garbage collectors
- A set of supporting runtime libraries
HotSpot supports many command-line arguments for options of the virtual machine execution. Some are standard and must be found in any conforming Java virtual machine, others are specific to HotSpot and may not be found in other JVMs (options that begin with -X or -XX are non-standard).
Maintained by Oracle
As for the whole Java Development Kit (JDK), HotSpot is supported by Oracle Corporation on Windows, Linux, macOS, and Solaris. Supported instruction set architectures (ISAs) are IA-32, x86-64, ARMv6, ARMv7, and SPARC (Solaris only).
Ports by third parties
Porting HotSpot is difficult because the code, while written in mostly C++, contains much assembly language. To remedy this, the IcedTea project has developed a generic port of the HotSpot interpreter called zero-assembler Hotspot (or zero), with almost no assembly code. This port is intended for easy adaptation of the interpreter component of HotSpot to any Linux processor architecture. The code of zero-assembler Hotspot is used for all the non-x86 architecture ports of HotSpot (PowerPC, Itanium (IA-64), S390 and ARM) since version 1.6.
- List of Java virtual machines
- Comparison of Java virtual machines
- Java performance
- Da Vinci Machine, a project to prototype the extension of the JVM to add support for dynamic programming languages
- "Sun Announces Availability of the Java HotSpot Performance Engine". Press Release. Sun Microsystems. Retrieved 26 March 2013.
- "Sun's Gosling Previews Hotspot Java Virtual Machine". ComputerGram. 1998-02-13. Retrieved 2008-04-20.[dead link]
- "Cliff Click on Azul's Pauseless GC, Zing, JVM Languages". InfoQ. 2011-01-20. Retrieved 2016-05-10.
[...] Anamorphic was acquired by Sun so the original team was at a company called Anamorphic, they came in with a technology that was targeted at Smalltalk and they re-targeted it for Java and they hired me shortly afterwards to do a new JIT for their virtual machine.
- Lewis, J. P. (2004). "Performance of Java versus C++". Retrieved 2007-10-03.
- Shankland, Stephen (18 February 1999). "HotSpot finally makes its mark". Cnet.
- "Sun Microsystems releases fastest client-side Java platform to date". Sun Microsystems. 2000-05-08. Retrieved 2007-10-03.
- "The HotSpot Group". Sun Microsystems. 2007. Retrieved 2007-10-03.
There are nearly 1500 C/C++ header and source files, comprising almost 250,000 lines of code
- "Java HotSpot VM Options". Sun Microsystems. Retrieved 2009-02-08.
- Mocker, Joseph D. (2007-08-28). "A Collection of JVM Options". Archived from the original on 2011-04-30. Retrieved 2009-02-08.
- Maximovich, Dmitri. "The most complete list of -XX options for Java 6 JVM". Archived from the original on 2010-01-30. Retrieved 2009-02-08.
- Nutter, Charles (2009-01-29). "My Favorite Hotspot JVM Flags". Retrieved 2009-02-08.
- "Sun Opens Java". Sun Microsystems. 2006-11-13. Retrieved 2007-10-03.
- JDK7, Sun.
- "Supported System Configurations". Oracle Corporation. Retrieved 2012-01-06.
- Gary, Benson (2007-11-06). "Gary's guide to porting IcedTea". Retrieved 2008-01-26.[permanent dead link]
- Gary, Benson (2008-02-01). "1st February 2008". Retrieved 2008-02-03.[permanent dead link]
- Andrew, Haley (2008-01-31). "Making zero-assembler the default on ppc". Retrieved 2008-02-03.
- Lilian, Angel (2008-02-13). "IcedTea 1.6 Released with Zero-assembler and JNLP support!". Red Hat. Retrieved 2008-02-13.
- Official website
- A list of HotSpot VMOptions
- The Java Virtual Machine Specification
- History of the original Strongtalk-HotSpot team
- Sun announces availability of the Java Hotspot Performance Engine at the Wayback Machine (archived December 18, 2006)
- HotSpot Mercurial source code development repository (version control system) for JDK8