Friends Of OpenJDK

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 views

Basic 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 views

Bytecode

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 views

Class 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 views

Compact 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 views

CPU 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 views

CRaC (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 views

Disco 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 views

Epsilon 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 views

Foreign 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 views

Garbage 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 views

GC 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 views

GraalVM 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 views

Heap 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 views

Jakarta 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 views

Java Champion

A Java Champion is a recognised leader, educator, or innovator in the Java community — someone who has demonstrated a sustained, meaningful …

4,133 views

Java 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 views

Java 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 views

Java 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 views

JDK 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 views

JDK 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 views

JEP (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 views

JFR (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 views

JIT 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 views

jtreg 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 views

Latency

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 views

LTS 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 views

OpenJDK

OpenJDK is the open-source reference implementation of the Java Platform, Standard Edition (Java SE) specification. It is the upstream project from …

2,424 views

OpenJDK 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 views

OpenJDK Projects

OpenJDK is organised into named Projects: focused research and development efforts that explore or implement significant improvements to the Java …

234 views

OpenJDK 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 views

Pattern 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 views

Preview 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 views

Project 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 views

Project 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 views

Project 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 views

Project 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 views

Project 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 views

Records

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 views

Scoped 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 views

Sealed 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 views

Security and Vulnerability Management

Within OpenJDK, the OpenJDK Vulnerability Group receives and discusses reports about security vulnerabilities in OpenJDK. It implements and tests …

3,826 views

Stop-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 views

Structured 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 views

Switch Expressions

Switch expressions, finalised in Java 14 (JEP 361), extend the traditional switch statement to work as an expression — producing a value — and …

89 views

Technology 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 views

Text 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 views

The 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 views

Thread 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 views

Value 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 views

Virtual 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