Generated by DeepSeek V3.2| Java virtual machine | |
|---|---|
| Name | Java virtual machine |
| Developer | Sun Microsystems, Oracle Corporation, Eclipse Foundation |
| Released | 23 January 1996 |
| Programming language | C, C++, Java |
| Operating system | Cross-platform |
| Genre | Virtual machine |
| License | GPLv2 with Classpath exception |
Java virtual machine. It is an abstract computing machine that enables a computer to run Java programs as well as programs written in other languages that are compiled to Java bytecode. The specification, developed by Sun Microsystems and now stewarded by Oracle Corporation, provides a runtime environment which executes code independently of the underlying operating system and hardware architecture. This design principle of "write once, run anywhere" has been central to the widespread adoption of the Java platform across diverse computing environments, from embedded devices to enterprise servers.
The core concept, originally conceived by a team including James Gosling at Sun Microsystems, is to provide a layer of abstraction between compiled applications and the host platform. Programs are compiled into a standardized, platform-neutral intermediate format known as Java bytecode, which is then interpreted or compiled at runtime. This architecture allows the same class file to be executed on any device equipped with a compatible implementation, such as those from IBM or Azul Systems. The Java Community Process governs the evolution of the technical specifications, ensuring compatibility across different vendors and versions like Java SE 17.
The internal architecture is defined by a specification that includes several key components. The Class loader subsystem is responsible for loading class files from the file system or network. The memory area is logically divided into regions such as the heap, where object instances are allocated, and the Method area, which stores class structures. The Execution engine, which may utilize an interpreter or a Just-In-Time compiler like HotSpot, executes the bytecode instructions. Other critical runtime data areas include the Java virtual machine stacks for thread execution and the program counter register.
The runtime environment, often referred to as the Java Runtime Environment, provides the libraries and components necessary for execution. It manages system resources through services like automatic garbage collection, which reclaims memory from unused objects, and thread synchronization primitives. The environment also includes core class libraries such as java.lang and java.util, which are essential for basic operations. For specific deployment scenarios, tailored environments like Java Platform, Micro Edition for mobile devices or Jakarta EE for enterprise applications build upon this core runtime.
Early implementations relied primarily on interpretation, which incurred significant overhead. A major advancement was the introduction of Just-in-time compilation technology, notably in the HotSpot engine developed by Longview Technologies, which dynamically compiles frequently executed bytecode sequences into native machine code for the host CPU. Further optimizations include Adaptive optimization, Escape analysis, and advanced garbage collection algorithms like G1GC and ZGC. These innovations, championed by engineers at Oracle Corporation and the OpenJDK community, have closed the performance gap with natively compiled languages like C++.
There are numerous independent implementations of the specification, each targeting different performance profiles and use cases. The official reference implementation is OpenJDK, governed by the Eclipse Foundation. Other significant implementations include the IBM J9 virtual machine, Azul Systems' Zing with its C4 collector, and the GraalVM project, which supports Ahead-of-time compilation and multiple languages like JavaScript and Python. For embedded and mobile systems, implementations such as Dalvik and its successor Android Runtime were used in the Android platform.
Security is a foundational aspect, enforced through a multi-layered model often described as the Java sandbox. The Class loader architecture, combined with the Bytecode verifier, ensures that loaded code adheres to structural constraints before execution. A central SecurityManager class, though deprecated in modern versions like Java SE 17, historically enforced fine-grained access controls based on security policies. The model also incorporates cryptographic services through the Java Cryptography Architecture and manages code provenance via digitally signed Java Archive files, concepts critical in environments like the Jakarta EE platform. Category:Virtual machines Category:Java (programming language)