HotSpot, released as Java HotSpot Performance Engine,
is a
Java virtual machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describe ...
for
desktop and
server
Server may refer to:
Computing
*Server (computing), a computer program or a device that provides functionality for other programs or devices, called clients
Role
* Waiting staff, those who work at a restaurant or a bar attending customers and su ...
computers, developed by
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, t ...
and now maintained and distributed by
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation headquartered in Austin, Texas. In 2020, Oracle was the third-largest software company in the world by revenue and market capitalization. The company sells da ...
. It features improved performance via methods such as
just-in-time compilation and
adaptive optimization
Adaptive optimization is a technique in computer science that performs dynamic recompilation of portions of a program based on the current execution profile. With a simple implementation, an adaptive optimizer may simply make a trade-off between ...
.
History
The Java HotSpot Performance Engine was released on April 27, 1999,
built on technologies from an implementation of the programming language
Smalltalk
Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan ...
named
Strongtalk, originally developed by Longview Technologies, which traded as Animorphic. The Longview virtual machine was based on the
Self
The self is an individual as the object of that individual’s own reflective consciousness. Since the ''self'' is a reference by a subject to the same subject, this reference is necessarily subjective. The sense of having a self—or ''selfhoo ...
virtual machine, with an interpreter replacing the fast-and-dumb first compiler. When Sun cancelled the Self project, two key people,
Urs Hölzle
Urs Hölzle () is a Swiss software engineer and technology executive. He is the senior vice president of technical infrastructure and Google Fellow at Google. As Google's eighth employee and its first VP of Engineering, he has shaped much of Goo ...
and
Lars Bak
Lars Ytting Bak (born 16 January 1980) is a Danish former professional road bicycle racer, who rode professionally between 2002 and 2019 for the Fakta, , , , and squads. From 2022, Bak will act as team manager for UCI Women's WorldTeam .
Bac ...
left Sun to start Longview. In 1997,
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, t ...
purchased Animorphic.
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
In computing, Java bytecode is the bytecode-structured instruction set of the Java virtual machine (JVM), a virtual machine that enables a computer to run programs written in the Java programming language and several other programming langua ...
, as with the Self VM, HotSpot 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.
Initially available as an add-on for Java 1.2,
HotSpot became the default Sun JVM in Java 1.3.
Features
JRE (originally from Sun, now from Oracle) 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 to 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.
HotSpot is written in
C++ and Assembly. In 2007, Sun estimated it comprised approximately 250,000 lines of source code. Hotspot provides:
* A
Java Classloader
* A templating
Java bytecode
In computing, Java bytecode is the bytecode-structured instruction set of the Java virtual machine (JVM), a virtual machine that enables a computer to run programs written in the Java programming language and several other programming langua ...
interpreter
* ''Client'' and ''Server'' Just-in Time Compilers, optimized for their respective uses
* Several
garbage collectors (including the very-low-pause-time ZGC and pauseless Shenandoah)
* 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
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describe ...
; others are specific to HotSpot and may not be found in other JVMs (options that begin with -X or -XX are non-standard).
License
On 13 November 2006, the HotSpot JVM and the
Java Development Kit (JDK) were licensed under the
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
(GPL) version 2. This is the code that became part of
Java 7
The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community ...
.
[JDK7](_blank)
Sun.
Supported platforms
Maintained by Oracle
As with the entire
Java Development Kit (JDK), HotSpot is supported by
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation headquartered in Austin, Texas. In 2020, Oracle was the third-largest software company in the world by revenue and market capitalization. The company sells da ...
on
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for se ...
,
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
, and
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
. Supported
instruction set
In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an ...
architectures (ISAs) are
x86-64
x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
and
AArch64. Since JDK 15,
Solaris and
SPARC
SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system develope ...
are no more supported.
Ports by third parties
Ports are also available by third parties for various other
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, ...
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s. Several different hardware architectures are supported, including x86,
PowerPC
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple– IBM– ...
, and SPARC (Solaris only).
Porting HotSpot is difficult, as much of it is almost extensively written in
assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence b ...
, though several sections of it are also written in purely
standards conformant ISO C++. 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
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
processor architecture. The code of ''zero-assembler Hotspot'' is used for all the non-
x86 architecture ports of HotSpot (
PowerPC
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple– IBM– ...
,
Itanium
Itanium ( ) is a discontinued family of 64-bit Intel microprocessors that implement the Intel Itanium architecture (formerly called IA-64). Launched in June 2001, Intel marketed the processors for enterprise servers and high-performance comput ...
(
IA-64
IA-64 (Intel Itanium architecture) is the instruction set architecture (ISA) of the Itanium family of 64-bit Intel microprocessors. The basic ISA specification originated at Hewlett-Packard (HP), and was subsequently implemented by Intel in col ...
),
S390 and
ARM) since version 1.6.
See also
*
List of Java virtual machines
*
Comparison of Java virtual machines
:
Version information
Technical information
Supported CPU architectures
Supported operating systems
References
{{Java Virtual Machine
Java platform software
Java virtual machine
Software comparisons ...
*
Java performance
*
OpenJDK
OpenJDK (Open Java Development Kit) is a free and open-source implementation of the Java Platform, Standard Edition (Java SE). It is the result of an effort Sun Microsystems began in 2006. The implementation is licensed under the GPL-2.0-only w ...
*
Da Vinci Machine, a project to prototype the extension of the JVM to add support for
dynamic programming languages
References
External links
*
A list of HotSpot VMOptionsThe Java Virtual Machine Specification*
HotSpot Mercurial source code development repository (version control system) for JDK8
{{DEFAULTSORT:Hotspot
Assembly language software
Free software programmed in C++
Java virtual machine
Oracle software
Sun Microsystems software