JEP 384 bringt Records als „Second Preview“ für Java. Bei Records handelt es sich um einen neuen Klassentyp, der im Zuge des Projektes Valhalla entwickelt wurde. Diese stellen – wie beispielsweise auch enums – eine eingeschränkte Form der Deklaration class
dar. Records unterscheiden sich von klassischen Klassen darin, dass sie ihr API nicht von dessen Repräsentation entkoppeln können. Die Freiheit die dabei verloren geht, wird aber durch die gewonnene Präzision wettgemacht.
Im Proposal zu den Records hieß es dazu, dass ein Record „der Zustand, der gesamte Zustand und nichts als der Zustand“ sei. Er besteht aus einem Namen, einem Header und dem Body:
record Point(int x, int y) { }
Der Header stellt hier die Liste der Komponenten des Records dar, also die Variablen, die den Zustand beschreiben. Records bleiben dabei Klassen, auch wenn sie eingeschränkt sind. So können sie etwa Annotationen oder Javadocs enthalten und deren Body u.a. statische Felder sowie Methoden, Konstruktoren oder Instanzmethoden deklarieren. Was sie allerdings nicht vermögen, ist die Erweiterung anderer Klassen oder die Deklaration von Instanzfeldern (mit der Ausnahme der Statuskomponenten, die im Header des Records deklariert wurden).

Creating a hybrid and multi-cloud strategy using Azure API Management
Eldert Grootenboer (Motion10)

From Horror Story to Fairy Tale: Writing code people want to read
Michael Dowden (Andromeda Galactic Solutions)