Java Terms Explained
A plain-language glossary of Java and OpenJDK terminology, from the Friends Of OpenJDK.
AOT Compilation (Ahead-of-Time)
Ahead-of-time (AOT) compilation converts Java source code or bytecode into native machine code before the application runs, rather than during …
375 viewsBasic Java Concepts
The Java programming language and Java virtual machine (also known as Java runtime environment) provide the tools to write operating system …
5,213 viewsBytecode
When you compile a Java source file, the Java compiler (javac) does not produce native machine code for a specific CPU. Instead it produces bytecode: …
97 viewsClass Loading
Before the JVM can execute any code it must load the corresponding .class file into memory. This process is handled by class loaders, which locate, …
96 viewsCompact Profiles
Note: Compact Profiles are a Java 8 feature. Starting with Java 9, the same goal — creating a minimal, self-contained runtime — is achieved more …
3,781 viewsCPU and PSU
From Java 9 onward, Oracle moved to a six-month release cadence, releasing a new JDK version every March and September. Security patches, bug fixes, …
4,986 viewsCRaC (Coordinated Restore at Checkpoint)
CRaC is an OpenJDK project that solves one of the most common complaints about Java in cloud environments: slow startup. The JVM traditionally takes …
121 viewsDisco API
The Disco API (short for Universal OpenJDK Discovery API) is a database and REST API that catalogues every available OpenJDK package from every major …
208 viewsEpsilon GC
Epsilon GC is a no-op garbage collector: it allocates memory on request but never reclaims it. When the Java heap is exhausted, the JVM exits with an …
97 viewsForeign Function & Memory API
The Foreign Function & Memory (FFM) API, finalised in Java 22 (JEP 454), provides a safe, efficient, and pure-Java way to interact with native code …
212 viewsGarbage Collection
Garbage Collection (GC) is the process by which the JVM automatically reclaims memory occupied by objects that are no longer reachable by the running …
93 viewsGC Algorithms: G1, ZGC, and Shenandoah
The JDK ships with several garbage collectors, each designed for different goals. Choosing the right one depends on whether your application …
179 viewsGraalVM and Native Image
GraalVM is a high-performance JDK distribution and runtime developed by Oracle. It extends the standard JDK with two key capabilities: the Graal JIT …
429 viewsHeap Dump
A heap dump is a snapshot of all the objects in a Java process's heap memory at a specific point in time, written to a file. It captures every object, …
108 viewsJakarta EE
Jakarta EE is the open-source, community-driven successor to Java EE (Java Platform, Enterprise Edition). It defines a set of specifications for …
113 viewsJava Champion
A Java Champion is a recognised leader, educator, or innovator in the Java community — someone who has demonstrated a sustained, meaningful …
4,133 viewsJava Community Process (JCP)
The Java Community Process (JCP) is the formal mechanism through which the Java platform specifications are created and evolved. Established in 1998, …
128 viewsJava Module System (JPMS)
The Java Platform Module System (JPMS), introduced in Java 9 as part of Project Jigsaw, brings a formal module concept to the Java platform. A module …
105 viewsJava Native Interface (JNI)
The Java Native Interface (JNI) is the standard mechanism that allows Java code running in the JVM to call, and be called by, native code written in …
283 viewsJDK Distributions
The OpenJDK project publishes source code, not binaries. To actually run Java, you need a distribution: a pre-built, tested binary of OpenJDK packaged …
153 viewsJDK Mission Control (JMC)
JDK Mission Control is a suite of tools for profiling, monitoring, and diagnosing Java applications. It provides a GUI frontend for Java Flight …
339 viewsJEP (JDK Enhancement Proposal)
A JDK Enhancement Proposal (JEP) is the formal document used to propose, track, and communicate a significant change to the Java platform. Every major …
262 viewsJFR (Java Flight Recorder)
Java Flight Recorder (JFR) is a low-overhead profiling and event-collection framework built into the JDK. It records a continuous stream of events …
100 viewsJIT Compilation (Just-in-Time)
Just-in-time (JIT) compilation is the process by which the JVM translates bytecode into native machine code while the application is running, rather …
91 viewsjtreg Test Suites
jtreg is the test harness for regression and unit testing used by the JDK test framework. For many OpenJDK distributions, the jtreg tests are run in …
4,731 viewsLatency
Latency is the time between the initiation of a procedure and the completion of the procedure; in other words, how long it takes for something to …
4,328 viewsLTS and Non-LTS Releases
Since Java 9, the JDK has followed a strict six-month release cadence: a new version ships every March and September. Most of these are feature …
116 viewsOpenJDK
OpenJDK is the open-source reference implementation of the Java Platform, Standard Edition (Java SE) specification. It is the upstream project from …
2,424 viewsOpenJDK Coding Guidelines and Code Reviews
OpenJDK does not have a single exhaustive coding style guide. Sub-components come from diverse origins (HotSpot, the standard library, OpenJFX, etc.) …
3,647 viewsOpenJDK Projects
OpenJDK is organised into named Projects: focused research and development efforts that explore or implement significant improvements to the Java …
234 viewsOpenJDK with Visual C++
Historical context: This article describes the Visual C++ considerations that applied during the Java 8 / early Java 11 era (2018–2021). It is …
4,631 viewsPattern Matching
Pattern matching is a set of language features that allow you to test the structure or type of a value and extract components from it in a single, …
85 viewsPreview and Incubator Features
Java ships new language features and APIs in two provisional states before they are finalised: Preview features (for language changes and JVM …
176 viewsProject Amber
Project Amber is the OpenJDK project behind most of what makes modern Java look different from Java 8: records, sealed classes, pattern matching, text …
1 viewsProject Babylon
Project Babylon extends Java's reflection to reach inside method bodies, so a library can read and transform the code of a lambda. Its driving use …
1 viewsProject Leyden
Project Leyden is the OpenJDK initiative focused on improving the startup time, warmup time, and footprint of Java programs by capturing and reusing …
212 viewsProject Lilliput
Project Lilliput shrinks the Java object header. Compact object headers cut it from 128 to 64 bits, which typically saves a few percent of heap on …
1 viewsProject Loom
Project Loom is the OpenJDK project that made concurrency cheap again: virtual threads, structured concurrency and scoped values, so a server can …
Project Panama
Project Panama connects Java to code and data outside the JVM. It delivered the Foreign Function & Memory API, the jextract tool that generates …
1 viewsRecords
Records, introduced as a preview in Java 14 and finalised in Java 16, are a concise way to declare classes whose primary purpose is to hold immutable …
82 viewsScoped Values
Scoped Values, finalised in Java 24 (JEP 487), provide a mechanism to share immutable data within and across threads in a structured, predictable way …
86 viewsSealed Classes
Sealed classes, introduced as a preview in Java 15 and finalised in Java 17, let you explicitly control which classes or interfaces are permitted to …
78 viewsSecurity and Vulnerability Management
Within OpenJDK, the OpenJDK Vulnerability Group receives and discusses reports about security vulnerabilities in OpenJDK. It implements and tests …
3,826 viewsStop-the-World Pause
A stop-the-world (STW) pause is a period during garbage collection when all application threads are suspended so the GC can safely examine and modify …
84 viewsStructured Concurrency
Structured Concurrency, finalised in Java 24 (JEP 499), is a programming model that treats concurrent tasks executing in parallel as a single unit of …
73 viewsSwitch Expressions
Switch expressions, finalised in Java 14 (JEP 361), extend the traditional switch statement to work as an expression — producing a value — and …
89 viewsTechnology Compatibility Kit
Technology Compatibility Kit is the official Java SE test suite used to test compatibility and performance of the JRE/JDK against Java SE …
6,885 viewsText Blocks
Text blocks, finalised in Java 15 (JEP 378), are a multi-line string literal that avoids the need for most escape sequences and manual concatenation …
86 viewsThe Heap, Stack, and Metaspace
The JVM divides memory into several distinct regions, each serving a different purpose. The Heap is where object instances live. When you call new, …
83 viewsThread Dump
A thread dump is a snapshot of the state of all threads in a running Java process at a specific point in time, written as plain text. It captures each …
5,289 viewsValue Objects (Project Valhalla)
Value objects are a new kind of Java class being developed under Project Valhalla — available in preview in recent Java releases — that behave like …
607 viewsVirtual Threads
Virtual threads, introduced as a preview in Java 19–20 and finalised in Java 21 (JEP 444), are lightweight threads managed by the JVM rather than the …
112 views