HotSpot
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
Developer(s) | Oracle Corporation (previously Sun Microsystems) |
---|---|
Stable release | 23.25-b01 |
Written in | C++ |
Operating system | Cross-platform |
Type | Java Virtual Machine |
License | Proprietary (early versions), GNU General Public License (current) |
Website | Sun's OpenJDK Hotspot page |
HotSpot, released as the "Java HotSpot Performance Engine"[1] is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.
Contents
History
The Java HotSpot Performance Engine, first released April 27, 1999,[1] built on technologies from the Strongtalk implementation of the Smalltalk programming language originally developed by Longview Technologies, which traded as "Animorphic". Animorphic's virtual-machine technology had earlier been successfully used in a Sun research project, the Self programming language. In 1997 Sun Microsystems purchased Animorphic.[2][not in citation given]
Shortly after acquiring Animorphic, Sun intended to write a new just-in-time (JIT) compiler for the newly developed virtual machine.[3] This new compiler would give rise to the name "HotSpot", which derives from the fact that, as the software runs Java bytecode, it continually analyzes the program's performance for "hot spots" which are frequently or repeatedly executed. These are then targeted for optimization, 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.[4]
Initially available as an add-on for Java 1.2,[5] HotSpot became the default Sun JVM in Java 1.3.[6]
Features
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 compilation, 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.[7] Starting in Java 8, tiered compilation is the default for the server VM.[8]
The HotSpot Java virtual machine is written in C++. As stated on the HotSpot web page, the source contains approximately 250,000 lines of code.[9] Hotspot provides:
- A class loader
- A bytecode interpreter
- Client and Server virtual machines, optimized for their respective uses
- Several garbage collectors
- A set of supporting runtime libraries
JVM flags
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).[10][11][12][13]
License
On 13 November 2006, the HotSpot JVM and the JDK were licensed[14] under the GPL version 2. This is the code that became part of Java 7 (codename Dolphin[15]).
Supported platforms
Maintained by Oracle
As for the whole JDK, HotSpot is supported by Oracle Corporation on Microsoft Windows, Linux, Solaris, and Mac OS X. Supported ISAs are IA-32, x86-64, ARMv6, ARMv7, and SPARC (exclusive to Solaris).[16]
Ports by third parties
Ports are also available by third parties for various other Unix operating systems. Several different hardware architectures are supported, including x86, PowerPC, and SPARC (Solaris only).
Porting HotSpot is difficult because the code, while primarily written in C++, contains a lot of assembly language.[17] 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 ports of HotSpot (PPC, IA-64, S390 and ARM) since version 1.6.[18][19][20]
See also
- List of Java virtual machines
- Comparison of Java virtual machines
- Java performance
- OpenJDK
- Da Vinci Machine, a starting Sun project aiming to prototype the extension of the JVM to add support for dynamic languages
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
External links
- Sun's OpenJDK Hotspot page
- A list of HotSpot VMOptions
- The Java Virtual Machine Specification
- The history of the original Strongtalk/HotSpot team
- Sun announces availability of the Java Hotspot Performance Engine at sun.com (Error: unknown archive URL) (archived (Date missing))
- HotSpot Mercurial source code development repository (version control system) for JDK8
- ↑ 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.[dead link]
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html
- ↑ https://docs.oracle.com/javase/8/docs/technotes/guides/vm/performance-enhancements-7.html
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ JDK7, Sun.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- Pages with reference errors
- All articles with failed verification
- Articles with failed verification from March 2013
- Webarchive template warnings
- Webarchive template unknown archives
- Java virtual machine
- Oracle software
- Sun Microsystems software
- Free software programmed in C++
- Software written primarily in assembly language
- Articles with dead external links from March 2013