Immutable Objects

tiny-tool.de
tiny-tool.de

Immutable Objects – also Objekte, deren Zustand sich nach der Erstellung nicht mehr ändern lässt – sind aus der modernen Softwareentwicklung kaum wegzudenken. Besonders wenn es um Stabilität, Lesbarkeit und Parallelverarbeitung geht, spielen sie ihre Stärken voll aus.

Warum eigentlich so ein Hype um die Unveränderlichkeit? Ganz einfach:

  • Kein Zustand, kein Stress: Einmal erzeugt, bleibt ein Immutable so, wie es ist. Damit entfallen typische Fehlerquellen wie versehentliche Seiteneffekte, und das Debugging wird deutlich entspannter.
  • Thread-Safety by Design: In Multi-Threading-Szenarien sind Immutables wahre Helden – kein Synchronisieren, kein Datenrennen. Einfach nutzen, ohne Angst vor Nebenwirkungen.
  • Kopieren statt Mutieren: Klar, man muss für jede Änderung ein neues Objekt erzeugen – aber in vielen Fällen zahlt sich das aus: in Form von klareren Datenflüssen und robusterer Architektur.
  • Funktionaler Stil inklusive: Immutables sind ein natürlicher Fit für funktionale Programmierparadigmen – sauber, nebeneffektfrei und gut testbar.
  • Cache-Freundlichkeit: Wer immutable speichert, kann sich auf die Konsistenz verlassen. Keine bösen Überraschungen durch heimliche Änderungen im Hintergrund.
  • Sauberes equals() und hashCode(): Weil sich der Zustand nie ändert, sind Vergleiche und Hashing zuverlässig – das spart Ärger, z. B. in Collections.

Natürlich ist nicht alles Gold, was immutable ist: Bei sehr großen oder häufig veränderten Datenstrukturen kann der Overhead schnell unangenehm werden. Wie so oft gilt also: Kontext ist King.

org.immutables

Die Bibliothek org.immutables liefert ein schlankes, aber mächtiges Annotation-Processing-Toolkit, mit dem sich thread-sichere, unveränderliche Objekte in Java bequem erzeugen lassen. Der Clou: Du definierst nur die Struktur – den lästigen Boilerplate-Code erledigt der Compiler für dich.

Mit einer simplen Annotation wie @Value.Immutable werden automatisch Implementierungen erstellt, die nicht nur immutable sind, sondern auch über sinnvolle Methoden wie equals(), hashCode() und toString() verfügen. Und das alles, ohne eine Zeile davon selbst schreiben zu müssen.

Warum org.immutables wählen?

  1. Weniger Boilerplate: Alle Standardmethoden werden automatisch generiert – inklusive praktischer Builder-API.
  2. Flexibilität: Du definierst nur die abstrakten Methoden – org.immutables kümmert sich um den Rest. Das sorgt für eine saubere Trennung von Struktur und Logik.
  3. Anpassbarkeit: Eigene Methoden, zusätzliche Felder oder Schnittstellen? Kein Problem – der Generator lässt sich gut erweitern und konfigurieren.
  4. Integration: JSON? Datenbank? Kein Thema. Die generierten Klassen spielen hervorragend mit anderen Tools und Frameworks zusammen – u. a. Jackson, Gson oder JPA.

Kurz gesagt: org.immutables bringt Ordnung in deine Datenmodelle und spart dir jede Menge Tipparbeit. Die Kombination aus Einfachheit, Sicherheit und Integration macht es zu einem starken Werkzeug für moderne Java-Projekte.

Mehr Infos und die offizielle Doku findest du auf immutables.org.

Beispiel für ein Immutable mit org.immutables

Das folgende Interface definiert ein einfaches User-Modell. Mithilfe der @Value.Immutable-Annotation wird daraus beim Build automatisch eine Implementierung erzeugt – inklusive aller Standardmethoden und einem passenden Builder:

package de.object.tests.immuables;

import org.immutables.value.Value;

import java.util.List;
import java.util.UUID;

@Value.Immutable
@ValueObject
public interface User {

    UUID getId();
    String getName();
    List getAliases();

}

Erzeugen eines Immutable-Objects

User user = ImmutableUser.builder()
        .id(UUID.randomUUID())
        .name("Max Mustermann")
        .aliases(List.of("Max", "Musti"))
        .build();

Werbung/Advertising

Aromatico

Im gezeigten Beispiel kommt eine benutzerdefinierte Annotation @ValueObject zum Einsatz. Sie dient dazu, die Erzeugung von Immutable-Objekten mit org.immutables zentral zu steuern und zu konfigurieren – entweder auf Paket- oder auf Typ-Ebene (also für Klassen oder Interfaces).

Diese Annotation hilft dabei, eine einheitliche Struktur für alle Immutable-Objekte im Projekt sicherzustellen. Ihre Definition kombiniert gezielt verschiedene Meta-Annotationen und Einstellungen.

  • @Target({ElementType.PACKAGE, ElementType.TYPE}): Gibt an, wo @ValueObject eingesetzt werden kann – auf Paketen oder Typen.
  • @Retention(RetentionPolicy.CLASS): Die Annotation wird beim Kompilieren in den Bytecode übernommen, steht aber zur Laufzeit nicht mehr über Reflection zur Verfügung.
  • @Value.Style: Konfiguriert das Verhalten der Code-Generierung. Wichtige Parameter dabei:
    • jdkOnly = true: Nur Klassen aus dem JDK werden berücksichtigt – das erhöht die Portabilität.
    • defaultAsDefault: Erlaubt die Definition von Standardwerten über Methoden mit default.
    • allParameters = true: Konstruktoren erwarten alle Felder als Parameter – hilfreich für klare Initialisierungen.
    • depluralize = true: Sammlungsmethoden wie getAliases() führen zu Zugriffen wie alias() – das wirkt leserlicher.
    • visibility = Value.Style.ImplementationVisibility.PUBLIC: Die generierten Klassen sind öffentlich zugänglich.
    • defaults = @Value.Immutable(): Alle damit markierten Klassen gelten automatisch als @Value.Immutable.
    • get = {"is*", "get*"}: Legt die akzeptierten Präfixe für Getter-Methoden fest – ideal für Bean-Kompatibilität.

Die Definition von @ValueObject wirkt damit wie eine Art „Default-Konvention“, die überall im Projekt für Konsistenz sorgt. Entwickler sparen sich damit wiederholte Annotationen und behalten gleichzeitig volle Kontrolle über das Verhalten der generierten Klassen – ganz im Sinne von Clean Code und Best Practices.

Beispiel für eine benutzerdefinierte Annotation @ValueObject

package de.object.tests.immuables;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.immutables.value.Value;

@Target({ElementType.PACKAGE, ElementType.TYPE})
@Retention(RetentionPolicy.CLASS)
@Value.Style(
    jdkOnly = true,
    defaultAsDefault = true,
    allParameters = true,
    depluralize = true,
    visibility = Value.Style.ImplementationVisibility.PUBLIC,
    defaults = @Value.Immutable(),
    get = {"is*", "get*"})
public @interface ValueObject {

}

org.projectlombok

Die Bibliothek Project Lombok hat ein klares Ziel: weniger Boilerplate, mehr Fokus auf das Wesentliche. Mit wenigen Annotationen erzeugt Lombok beim Kompilieren automatisch genau den Code, den man sonst immer wieder selbst schreiben müsste – von Getter/Setter über Konstruktoren bis zu Buildern.

Dadurch lassen sich wiederkehrende Muster stark vereinfachen und der Quellcode bleibt schlank, übersichtlich und besser wartbar. Besonders in komplexeren Datenmodellen ist das ein echter Produktivitätsbooster.

Highlights von Project Lombok

  1. @Data: Generiert alles in einem Rutsch: Getter, Setter, toString(), equals(), hashCode() und einen AllArgsConstructor.
  2. @Builder: Ermöglicht eine elegante Builder-API – besonders nützlich bei vielen Feldern oder optionalen Parametern.
  3. @Slf4j: Fügt automatisch ein Logger-Feld hinzu – ideal für Logging ohne Setup-Aufwand.
  4. @NonNull: Automatisiert Nullprüfungen bei Parametern und hilft so, NullPointerExceptions frühzeitig zu vermeiden.
  5. @Cleanup: Kümmert sich um das sichere Schließen von Ressourcen wie Streams oder Datenbankverbindungen.

Warum Project Lombok?

Mit Lombok verlagert sich der Fokus weg vom repetitiven Code hin zur eigentlichen Business-Logik. Das reduziert Fehlerquellen, erhöht die Lesbarkeit und spart eine Menge Zeit im Alltag.

Auch wenn Lombok manchmal als „Magie“ verschrien ist – richtig eingesetzt kann es den Code nicht nur kürzer, sondern auch klarer machen. Und wer die generierten Klassen einmal im Build-Ordner betrachtet hat, weiß: Da passiert keine Zauberei, sondern solide Code-Generierung.

Mehr zur Bibliothek findest du auf der offiziellen Seite: projectlombok.org.

Beispiel für ein Immutable mit org.projectlombok

package de.object.tests.lombok;

import lombok.Builder;
import lombok.Value;

import java.util.List;
import java.util.UUID;

@Value
@Builder
public class User {
    UUID id;
    String name;
    List getAliases();
}

Erzeugen eines Immutable-Objects

User user = User.builder()
        .id(UUID.randomUUID())
        .name("Max Mustermann")
        .aliases(List.of("Max", "Musti"))
        .build();

Werbung/Advertising

<

Eizo FlexScan EV2436W-BK schwarz 24 Zoll WUXGA 1920x1200 DisplayPort DVI Höhenverstellbar

Eizo FlexScan EV2436W-BK schwarz 24 Zoll WUXGA 1920x1200 DisplayPort DVI Höhenverstellbar

Preis: 129,00 EUR

Zum Angebot
🔥 Bestseller

HP ZBook 15 G6 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro

HP ZBook 15 G6 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro

Preis: 779,00 EUR

Zum Angebot
🔥 Bestseller

HP ZBook Firefly 14 G9 14 Zoll 1920x1200 WUXGA Intel Core i7 512GB SSD 16GB Windows 10 Pro Fingerprint

HP ZBook Firefly 14 G9 14 Zoll 1920x1200 WUXGA Intel Core i7 512GB SSD 16GB Windows 10 Pro Fingerprint

Preis: 679,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad X1 Yoga Gen 7 14 Zoll Touch Display Intel Core i5 256GB SSD 32GB Windows 11 Pro LTE

Lenovo ThinkPad X1 Yoga Gen 7 14 Zoll Touch Display Intel Core i5 256GB SSD 32GB Windows 11 Pro LTE

Preis: 859,00 EUR

Zum Angebot

Fujitsu Celsius M740 Intel Xeon Quad Core E5 v4 512GB SSD 32GB Windows 10 Pro Nvidia Quadro

Fujitsu Celsius M740 Intel Xeon Quad Core E5 v4 512GB SSD 32GB Windows 10 Pro Nvidia Quadro

Preis: 719,00 EUR

Zum Angebot

Apple iPhone XR Smartphone Handy 6,1 Zoll 128GB Speicher Schwarz

Apple iPhone XR Smartphone Handy 6,1 Zoll 128GB Speicher Schwarz

Preis: 229,00 EUR

Zum Angebot

Apple iPad 7 Tablet 10,2 Zoll Retina Multi-Touch 128GB SSD Wi-Fi + Cellular Space Grau

Apple iPad 7 Tablet 10,2 Zoll Retina Multi-Touch 128GB SSD Wi-Fi + Cellular Space Grau

Preis: 259,00 EUR

Zum Angebot
🔥 Bestseller

Acer B246HYLBymiprx dunkelgrau 23,8 Zoll Full HD 1920x1080 DisplayPort HDMI VGA Höhenverstellbar UM.QB6EE.A05

Acer B246HYLBymiprx dunkelgrau 23,8 Zoll Full HD 1920x1080 DisplayPort HDMI VGA Höhenverstellbar UM.QB6EE.A05

Preis: 119,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkVision T24v-10 schwarz 23,8 Zoll Full HD 1920x1080 HDMI DisplayPort VGA Höhenverstellbar 61BCMAR6

Lenovo ThinkVision T24v-10 schwarz 23,8 Zoll Full HD 1920x1080 HDMI DisplayPort VGA Höhenverstellbar 61BCMAR6

Preis: 169,00 EUR

Zum Angebot
🔥 Bestseller

HP ZBook Fury 15 G7 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro T1000

HP ZBook Fury 15 G7 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro T1000

Preis: 879,00 EUR

Zum Angebot
🔥 Bestseller

HP ZBook 15 G6 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 16GB Windows 10 Pro

HP ZBook 15 G6 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 16GB Windows 10 Pro

Preis: 848,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad P14s Gen 2 14 Zoll 1920x1080 Full HD Intel Core i5 512GB SSD 24GB Windows 11 Pro Nvidia Quadro

Lenovo ThinkPad P14s Gen 2 14 Zoll 1920x1080 Full HD Intel Core i5 512GB SSD 24GB Windows 11 Pro Nvidia Quadro

Preis: 719,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad P14s Gen 2 14 Zoll 1920x1080 Full HD Intel Core i5 512GB SSD 16GB Windows 11 Pro Fingerprint

Lenovo ThinkPad P14s Gen 2 14 Zoll 1920x1080 Full HD Intel Core i5 512GB SSD 16GB Windows 11 Pro Fingerprint

Preis: 729,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre neo 50q Gen 4 Intel Core i5-13420H 512GB SSD 16GB Windows 11 Pro inkl. W-Lan - Neugerät

Lenovo ThinkCentre neo 50q Gen 4 Intel Core i5-13420H 512GB SSD 16GB Windows 11 Pro inkl. W-Lan - Neugerät

Preis: 679,00 EUR

Zum Angebot

Fujitsu Esprimo P5010n Intel Core i5-10400 256GB SSD 16GB Windows 11 Pro

Fujitsu Esprimo P5010n Intel Core i5-10400 256GB SSD 16GB Windows 11 Pro

Preis: 419,00 EUR

Zum Angebot

Fujitsu Esprimo D956 E85+ Desktop Intel Quad Core i5 256GB SSD 8GB Windows 10 Home

Fujitsu Esprimo D956 E85+ Desktop Intel Quad Core i5 256GB SSD 8GB Windows 10 Home

Preis: 219,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad USB-C Dock Gen 2 40AS Dockingstation inkl. 90 Watt Netzteil 40AS0090EU 03X7609

Lenovo ThinkPad USB-C Dock Gen 2 40AS Dockingstation inkl. 90 Watt Netzteil 40AS0090EU 03X7609

Preis: 109,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre neo 50q Gen 4 Intel Core i5-13420H 256GB SSD 8GB Windows 11 Pro inkl. W-Lan - Neugerät

Lenovo ThinkCentre neo 50q Gen 4 Intel Core i5-13420H 256GB SSD 8GB Windows 11 Pro inkl. W-Lan - Neugerät

Preis: 639,00 EUR

Zum Angebot

AOC I2475PXQU-GR Pro-line LED grau 23,8 Zoll Full HD 1920x1080 DisplayPort HDMI DVI-D VGA USB Höhenverstellbar

AOC I2475PXQU-GR Pro-line LED grau 23,8 Zoll Full HD 1920x1080 DisplayPort HDMI DVI-D VGA USB Höhenverstellbar

Preis: 119,00 EUR

Zum Angebot

LG 24BK550Y-B 24 Zoll Full HD 1920x1080 VGA DVI DisplayPort HDMI Höhenverstellbar Schwarz

LG 24BK550Y-B 24 Zoll Full HD 1920x1080 VGA DVI DisplayPort HDMI Höhenverstellbar Schwarz

Preis: 129,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad L15 Gen 3 15,6 Zoll 1920x1080 Full HD AMD Ryzen 5 PRO 512GB SSD 16GB Windows 11 Pro Fingerprint

Lenovo ThinkPad L15 Gen 3 15,6 Zoll 1920x1080 Full HD AMD Ryzen 5 PRO 512GB SSD 16GB Windows 11 Pro Fingerprint

Preis: 709,00 EUR

Zum Angebot
🔥 Bestseller

HP EliteBook 840 G6 14 Zoll 3840x2160 4K UHD Intel Core i7 1TB SSD 16GB Windows 11 Pro Webcam

HP EliteBook 840 G6 14 Zoll 3840x2160 4K UHD Intel Core i7 1TB SSD 16GB Windows 11 Pro Webcam

Preis: 699,00 EUR

Zum Angebot
🔥 Bestseller

HP EliteBook 840 G7 14 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 10 Pro LTE

HP EliteBook 840 G7 14 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 10 Pro LTE

Preis: 758,00 EUR

Zum Angebot

Apple iPhone XR Smartphone Handy 6,1 Zoll 64GB Speicher Schwarz

Apple iPhone XR Smartphone Handy 6,1 Zoll 64GB Speicher Schwarz

Preis: 189,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkStation P520 Intel Xeon W-2135 1TB SSD 64GB Windows 11 Pro Nvidia Geforce RTX 2080

Lenovo ThinkStation P520 Intel Xeon W-2135 1TB SSD 64GB Windows 11 Pro Nvidia Geforce RTX 2080

Preis: 919,00 EUR

Zum Angebot

Fujitsu Esprimo D756 E85+ Intel Pentium G4400 256GB SSD 4GB Windows 10 Pro DVD Brenner

Fujitsu Esprimo D756 E85+ Intel Pentium G4400 256GB SSD 4GB Windows 10 Pro DVD Brenner

Preis: 219,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad Thunderbolt 3 Dock 40AC Dockingstation inkl. 135 Watt Netzteil inkl. USB-C Kabel 40AC0135EU

Lenovo ThinkPad Thunderbolt 3 Dock 40AC Dockingstation inkl. 135 Watt Netzteil inkl. USB-C Kabel 40AC0135EU

Preis: 119,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkStation P720 2x Intel Xeon Gold 5122 1TB SSD 64GB Windows 11 Pro Nvidia Quadro P4000 inkl. W-Lan

Lenovo ThinkStation P720 2x Intel Xeon Gold 5122 1TB SSD 64GB Windows 11 Pro Nvidia Quadro P4000 inkl. W-Lan

Preis: 899,00 EUR

Zum Angebot
🔥 Bestseller

Dell Optiplex 7060 Micro Intel Core i5-8500 256GB SSD 16GB Windows 11 Pro

Dell Optiplex 7060 Micro Intel Core i5-8500 256GB SSD 16GB Windows 11 Pro

Preis: 349,00 EUR

Zum Angebot

Apple iPhone XR Smartphone Handy 6,1 Zoll 256GB Speicher Schwarz

Apple iPhone XR Smartphone Handy 6,1 Zoll 256GB Speicher Schwarz

Preis: 239,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad P15 Gen 1 15,6 Zoll Full HD Intel Core i7 512GB SSD 32GB Windows 10 Pro Nvidia Quadro T2000

Lenovo ThinkPad P15 Gen 1 15,6 Zoll Full HD Intel Core i7 512GB SSD 32GB Windows 10 Pro Nvidia Quadro T2000

Preis: 879,00 EUR

Zum Angebot

Apple iPad Air 3 (2019) 10,5 Zoll 256GB Wi-Fi + Cellular Space Grau

Apple iPad Air 3 (2019) 10,5 Zoll 256GB Wi-Fi + Cellular Space Grau

Preis: 329,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre Tiny-in-One 24 Gen 4 schwarz 23,8 Zoll Full HD 1920x1080 DisplayPort inkl. Webcam - Neugerät

Lenovo ThinkCentre Tiny-in-One 24 Gen 4 schwarz 23,8 Zoll Full HD 1920x1080 DisplayPort inkl. Webcam - Neugerät

Preis: 269,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkStation P520c Intel Xeon W-2133 512GB SSD 32GB Windows 11 Pro Nvidia Quadro P4000

Lenovo ThinkStation P520c Intel Xeon W-2133 512GB SSD 32GB Windows 11 Pro Nvidia Quadro P4000

Preis: 699,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre neo 50q Gen 4 Intel Core i5-13420H 256GB SSD 16GB Windows 11 Pro inkl. W-Lan - Neugerät

Lenovo ThinkCentre neo 50q Gen 4 Intel Core i5-13420H 256GB SSD 16GB Windows 11 Pro inkl. W-Lan - Neugerät

Preis: 659,00 EUR

Zum Angebot

Eizo FlexScan EV2736W-BK LED IPS 27 Zoll WQHD 2560x1440 DisplayPort DVI Schwarz

Eizo FlexScan EV2736W-BK LED IPS 27 Zoll WQHD 2560x1440 DisplayPort DVI Schwarz

Preis: 219,00 EUR

Zum Angebot

Microsoft 365 Business Standard Office - 1 Nutzer

Microsoft 365 Business Standard Office - 1 Nutzer

Preis: 129,00 EUR

Zum Angebot
🔥 Bestseller

HP EliteBook 840 G8 14 Zoll 1920x1080 Full HD Intel Core i5 256GB SSD 16GB Windows 10 Pro - Neugerät

HP EliteBook 840 G8 14 Zoll 1920x1080 Full HD Intel Core i5 256GB SSD 16GB Windows 10 Pro - Neugerät

Preis: 668,00 EUR

Zum Angebot

Apple iPhone X Smartphone Handy 5,8 Zoll 64GB Speicher Space Grau

Apple iPhone X Smartphone Handy 5,8 Zoll 64GB Speicher Space Grau

Preis: 229,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad X1 Yoga Gen 7 14 Zoll Touch Display Intel Core i5 256GB SSD 32GB Windows 10 Pro LTE

Lenovo ThinkPad X1 Yoga Gen 7 14 Zoll Touch Display Intel Core i5 256GB SSD 32GB Windows 10 Pro LTE

Preis: 869,00 EUR

Zum Angebot
🔥 Bestseller

HP ZBook Fury 15 G7 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro

HP ZBook Fury 15 G7 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro

Preis: 699,00 EUR

Zum Angebot

Philips V-Line 243V7QDSB 24 Zoll Full HD 1920x1080 IPS VGA DVI HDMI Schwarz NEU & OVP

Philips V-Line 243V7QDSB 24 Zoll Full HD 1920x1080 IPS VGA DVI HDMI Schwarz NEU & OVP

Preis: 139,00 EUR

Zum Angebot

Fujitsu Esprimo D956 E85+ Desktop Intel Quad Core i5 256GB SSD 8GB Windows 10 Pro

Fujitsu Esprimo D956 E85+ Desktop Intel Quad Core i5 256GB SSD 8GB Windows 10 Pro

Preis: 269,00 EUR

Zum Angebot

Eizo FlexScan EV2436WFS-GY Lichtgrau 24 Zoll WUXGA 1920x1200 DisplayPort DVI VGA

Eizo FlexScan EV2436WFS-GY Lichtgrau 24 Zoll WUXGA 1920x1200 DisplayPort DVI VGA

Preis: 139,00 EUR

Zum Angebot
🔥 Bestseller

HP ZBook Fury 15 G8 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 10 Pro Nvidia Quadro T1200

HP ZBook Fury 15 G8 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 10 Pro Nvidia Quadro T1200

Preis: 759,00 EUR

Zum Angebot

Eizo FlexScan EV2456-BK schwarz 24 Zoll WUXGA 1920x1200 DisplayPort HDMI DVI-D VGA USB Höhenverstellbar

Eizo FlexScan EV2456-BK schwarz 24 Zoll WUXGA 1920x1200 DisplayPort HDMI DVI-D VGA USB Höhenverstellbar

Preis: 199,00 EUR

Zum Angebot

Apple iPhone X Smartphone Handy 5,8 Zoll 256GB Speicher Space Grau

Apple iPhone X Smartphone Handy 5,8 Zoll 256GB Speicher Space Grau

Preis: 339,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo Thinkpad Thunderbolt 3 Dock 40AC Dockingstation inkl. 135 Watt Netzteil inkl. USB-C Kabel

Lenovo Thinkpad Thunderbolt 3 Dock 40AC Dockingstation inkl. 135 Watt Netzteil inkl. USB-C Kabel

Preis: 129,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre M70q Gen 5 Tiny Intel Core i5 256GB SSD 8GB Windows 11 Pro inkl. W-Lan - Neugerät

Lenovo ThinkCentre M70q Gen 5 Tiny Intel Core i5 256GB SSD 8GB Windows 11 Pro inkl. W-Lan - Neugerät

Preis: 719,00 EUR

Zum Angebot

Apple iPhone 11 Smartphone Handy 6,1 Zoll 128GB Speicher Schwarz

Apple iPhone 11 Smartphone Handy 6,1 Zoll 128GB Speicher Schwarz

Preis: 309,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad P15 Gen 1 15,6 Zoll Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro T2000

Lenovo ThinkPad P15 Gen 1 15,6 Zoll Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro T2000

Preis: 879,00 EUR

Zum Angebot

MSA-1 Monitorschwenkarm High Quality, Aluminium silbergrau, inkl. Tischbefestigung

MSA-1 Monitorschwenkarm High Quality, Aluminium silbergrau, inkl. Tischbefestigung

Preis: 169,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkVision T24d-10 schwarz 24 Zoll WUXGA 1920x1200 HDMI DisplayPort VGA Höhenverstellbar

Lenovo ThinkVision T24d-10 schwarz 24 Zoll WUXGA 1920x1200 HDMI DisplayPort VGA Höhenverstellbar

Preis: 159,00 EUR

Zum Angebot

Fujitsu Display B22-8 WE Neo 22 Zoll HD+ 1680x1050 DisplayPort DVI-D VGA Höhenverstellbar NEU & OVP

Fujitsu Display B22-8 WE Neo 22 Zoll HD+ 1680x1050 DisplayPort DVI-D VGA Höhenverstellbar NEU & OVP

Preis: 139,00 EUR

Zum Angebot

Fujitsu Esprimo Q957 Intel Core i3 128GB SSD + 500GB HDD 8GB Windows 10 Home

Fujitsu Esprimo Q957 Intel Core i3 128GB SSD + 500GB HDD 8GB Windows 10 Home

Preis: 219,00 EUR

Zum Angebot

Apple iPad 6 Tablet 9,7 Zoll Retina Multi-Touch 32GB SSD Wi-Fi + Cellular Space Grau

Apple iPad 6 Tablet 9,7 Zoll Retina Multi-Touch 32GB SSD Wi-Fi + Cellular Space Grau

Preis: 199,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkVision P27h-10 schwarz 27 Zoll WQHD 2560x1440 HDMI DisplayPort USB Höhenverstellbar 61AFGAT1EU

Lenovo ThinkVision P27h-10 schwarz 27 Zoll WQHD 2560x1440 HDMI DisplayPort USB Höhenverstellbar 61AFGAT1EU

Preis: 219,00 EUR

Zum Angebot
🔥 Bestseller

Dell P2419HC schwarz 23,8 Zoll Full HD 1920x1080 DisplayPort HDMI USB Höhenverstellbar

Dell P2419HC schwarz 23,8 Zoll Full HD 1920x1080 DisplayPort HDMI USB Höhenverstellbar

Preis: 149,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkStation P330 Tower Gen 2 Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro RTX 4000

Lenovo ThinkStation P330 Tower Gen 2 Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro RTX 4000

Preis: 899,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre Tiny-in-One 24 Gen 4 schwarz 23,8 Zoll Full HD 1920x1080 DisplayPort inkl. Webcam

Lenovo ThinkCentre Tiny-in-One 24 Gen 4 schwarz 23,8 Zoll Full HD 1920x1080 DisplayPort inkl. Webcam

Preis: 188,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo Thinkpad Thunderbolt 3 Dock 40AC Dockingstation inkl. 135 Watt Netzteil inkl. USB-C Kabel 40AC0135EU

Lenovo Thinkpad Thunderbolt 3 Dock 40AC Dockingstation inkl. 135 Watt Netzteil inkl. USB-C Kabel 40AC0135EU

Preis: 119,00 EUR

Zum Angebot
🔥 Bestseller

HP EliteBook x360 830 G8 13,3 Zoll Touch Display Intel Core i5 256GB SSD 16GB Windows 10 Pro Webcam

HP EliteBook x360 830 G8 13,3 Zoll Touch Display Intel Core i5 256GB SSD 16GB Windows 10 Pro Webcam

Preis: 629,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad L14 Gen 3 14 Zoll Touch Display AMD Ryzen 7 PRO 512GB SSD 16GB Windows 11 Pro Webcam

Lenovo ThinkPad L14 Gen 3 14 Zoll Touch Display AMD Ryzen 7 PRO 512GB SSD 16GB Windows 11 Pro Webcam

Preis: 709,00 EUR

Zum Angebot

Apple iPhone SE (2022) 64GB Dual-SIM Mitternacht MMXF3ZD/A

Apple iPhone SE (2022) 64GB Dual-SIM Mitternacht MMXF3ZD/A

Preis: 279,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad P53 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro

Lenovo ThinkPad P53 15,6 Zoll 1920x1080 Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro

Preis: 799,00 EUR

Zum Angebot

Fujitsu Esprimo Q556 Intel Core i3 128GB SSD 4GB Windows 10 Home DVD Brenner

Fujitsu Esprimo Q556 Intel Core i3 128GB SSD 4GB Windows 10 Home DVD Brenner

Preis: 199,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkVision T24v-10 schwarz 23,8 Zoll Full HD 1920x1080 HDMI DisplayPort VGA Höhenverstellbar 61BCMAR6EU

Lenovo ThinkVision T24v-10 schwarz 23,8 Zoll Full HD 1920x1080 HDMI DisplayPort VGA Höhenverstellbar 61BCMAR6EU

Preis: 149,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkCentre M70q Gen 5 Tiny Intel Core i5 256GB SSD 16GB Windows 11 Pro inkl. W-Lan - Neugerät

Lenovo ThinkCentre M70q Gen 5 Tiny Intel Core i5 256GB SSD 16GB Windows 11 Pro inkl. W-Lan - Neugerät

Preis: 749,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkStation P520c Intel Xeon W-2133 512GB SSD 32GB Windows 10 Pro Nvidia Quadro P4000

Lenovo ThinkStation P520c Intel Xeon W-2133 512GB SSD 32GB Windows 10 Pro Nvidia Quadro P4000

Preis: 699,00 EUR

Zum Angebot
🔥 Bestseller

Lenovo ThinkPad P15 Gen 1 15,6 Zoll Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro T1000

Lenovo ThinkPad P15 Gen 1 15,6 Zoll Full HD Intel Core i7 512GB SSD 32GB Windows 11 Pro Nvidia Quadro T1000

Preis: 859,00 EUR

Zum Angebot

Fujitsu Esprimo P757 E85+ Intel Quad Core i5 512GB SSD 16GB Windows 10 Home DVD Brenner

Fujitsu Esprimo P757 E85+ Intel Quad Core i5 512GB SSD 16GB Windows 10 Home DVD Brenner

Preis: 249,00 EUR

Zum Angebot

Fujitsu Esprimo P757 E85+ Intel Quad Core i5 512GB SSD 16GB Windows 10 Pro DVD Brenner

Fujitsu Esprimo P757 E85+ Intel Quad Core i5 512GB SSD 16GB Windows 10 Pro DVD Brenner

Preis: 269,00 EUR

Zum Angebot
>

java.lang.Record

Mit Java 14 hat die Sprache eine elegante Neuerung bekommen: Records. Diese neue Sprachfunktion zielt darauf ab, Datenmodelle möglichst kompakt und unveränderlich darzustellen – ohne den üblichen Boilerplate-Code wie Getter, equals() oder toString().

Records wurden entwickelt, um typische „Datencontainer-Klassen“ effizienter und ausdrucksstärker zu machen – mit weniger Code und besserer Lesbarkeit. Seit Java 16 sind sie ein fester Bestandteil der Sprache.

Was macht Java Records besonders?

  1. Kompakte Syntax: Die Definition ist minimalistisch – ein einziges record-Statement erzeugt Konstruktor, Getter, equals(), hashCode() und toString().
  2. Unveränderlichkeit: Alle Felder eines Records sind implizit final. Das sorgt für Sicherheit in Nebenläufigkeit und klare Datenmodelle.
  3. Datenzentriert: Records sollen keine komplexe Logik enthalten, sondern einfache, saubere Datenträger sein – genau dafür wurden sie gemacht.
  4. Lesbarkeit: Der deklarative Stil macht sofort klar, worum es geht – perfekte Transparenz beim Modellieren von Datenstrukturen.

Einsatzgebiete von Java Records

Typische Use Cases für Records sind überall dort, wo kompakte, unveränderliche Datenobjekte gefragt sind:

  • Datenübertragungsobjekte (DTOs)
  • Value Objects im Domain-Driven Design
  • Prototypen von Datenmodellen – schnell erstellt, sofort einsetzbar

Weitere Infos findest du in der offiziellen Dokumentation: Java Records

Beispiel für einen Java Record

package de.object.tests.records;

import java.util.List;
import java.util.UUID;

public record User(UUID id, String name, List aliases) {}

Mit nur einer Zeile lässt sich ein kompletter User-Record definieren – inklusive aller üblichen Methoden wie equals(), hashCode() und toString(). Das spart Zeit und sorgt für sauberen, übersichtlichen Code.

Doch Vorsicht: Ist der Record damit wirklich komplett „immutable“? Auf den ersten Blick sieht alles gut aus – schließlich sind alle Felder final. Aber gerade bei komplexeren Feldern wie List aliases kann das trügen. Listen in Java sind nämlich standardmäßig veränderbar.

Das heißt: Auch wenn der Record selbst nicht veränderbar ist, kann der Inhalt der Liste aliases nachträglich verändert werden – was das Prinzip der Unveränderlichkeit unterläuft und im schlimmsten Fall zu Nebenwirkungen oder Threading-Problemen führt.

Um echte Unveränderlichkeit zu gewährleisten, sollte man übergebene Listen bei der Initialisierung in eine unmodifizierbare Variante umwandeln. Dafür bietet sich z. B. List.copyOf() an – oder alternativ Collections.unmodifiableList(), wenn man eine schreibgeschützte Ansicht erzeugen will.

So stellt man sicher, dass niemand außerhalb des Records nachträglich Änderungen an der Liste vornehmen kann – und das Objekt bleibt wirklich immutable.

Beispiel: Liste im Record absichern

package de.object.tests.records;

import java.util.Collections;
import java.util.List;
import java.util.UUID;

public record User(UUID id, String name, List aliases) {
    public User(UUID id, String name, List aliases) {
        this.id = id;
        this.name = name;
        this.aliases = List.copyOf(aliases);
    }

    public List aliases() {
        return Collections.unmodifiableList(aliases);
    }
}

Erzeugen eines Immutable-Objects

User user = new User(UUID.randomUUID(), "Max Mustermann", List.of("Max", "Musti"));

Fazit

Im Abschluss unserer Betrachtung von org.immutables, Project Lombok und Java Records stechen sowohl ihre Gemeinsamkeiten als auch ihre Unterschiede deutlich hervor. Alle drei Ansätze zielen darauf ab, die Java-Entwicklung effizienter zu gestalten, indem sie den Boilerplate-Code reduzieren und die Handhabung von Datenobjekten vereinfachen. Trotz dieser gemeinsamen Zielsetzung unterscheiden sie sich in ihrer Herangehensweise und Flexibilität sowie in den spezifischen Anwendungsfällen, für die sie jeweils am besten geeignet sind.

Gemeinsamkeiten

  • Effizienzsteigerung: Alle drei Technologien reduzieren den manuellen Schreibaufwand durch Automatisierung von Standardmethoden wie equals(), hashCode(), toString() und die Implementierung von Mustern wie dem Builder.
  • Förderung der Unveränderlichkeit: Sie unterstützen die Erstellung unveränderlicher (immutable) Objekte, was zur Thread-Sicherheit und Vorhersehbarkeit des Codes beiträgt.

Unterschiede

  • Flexibilität und Kontrolle: org.immutables und Project Lombok bieten mehr Flexibilität und Kontrolle über die generierten Implementierungen. Java Records sind hingegen in ihrer Struktur festgelegt und bieten weniger Anpassungsmöglichkeiten.
  • Einführung und Kompatibilität: Java Records sind ein Sprachfeature, das ab Java 14 verfügbar ist, während org.immutables und Project Lombok als externe Bibliotheken hinzugefügt werden müssen. Dies kann insbesondere bei der Einrichtung von Build-Prozessen und der Integration in bestehende Projekte eine Rolle spielen.
  • Anwendungsbereich: Project Lombok ist nicht speziell auf Unveränderlichkeit ausgerichtet und bietet eine breite Palette von Hilfsmitteln, die über die Erstellung von Datenobjekten hinausgehen. org.immutables und Java Records hingegen sind stark auf die Modellierung unveränderlicher Datenobjekte fokussiert.

Vorteile und Nachteile

  • org.immutables bietet eine umfangreiche und flexible Lösung zur Erstellung von immutablen Objekten, kann aber eine Einarbeitungszeit erfordern und erzeugt zusätzlichen Code zur Kompilierzeit.
  • Project Lombok reduziert Boilerplate-Code effektiv mit minimaler Konfiguration, kann jedoch in einigen Entwicklungsumgebungen Probleme verursachen, da es den Kompilierungsprozess modifiziert.
  • Java Records sind einfach zu verwenden und verstärken die Lesbarkeit und Wartbarkeit von Code durch ihre klare Struktur, bieten jedoch weniger Flexibilität im Vergleich zu den anderen beiden Lösungen.

Empfehlungen

  • Für Projekte, die Unveränderlichkeit und klare Datenmodellierung priorisieren, sind Java Records eine hervorragende Wahl, sofern sie in einer Umgebung ab Java 14 eingesetzt werden können.
  • Wenn Flexibilität und Kontrolle über die Generierung von Code erforderlich sind, bieten org.immutables und Project Lombok robuste Lösungen. org.immutables ist besonders geeignet, wenn die Unveränderlichkeit im Fokus steht, während Project Lombok eine breite Palette von Hilfsmitteln für verschiedene Aspekte der Java-Entwicklung bereitstellt.
  • In bestehenden Projekten, die eine schnelle Effizienzsteigerung ohne größere Änderungen benötigen, kann die Einführung von Project Lombok eine unkomplizierte Lösung bieten.

Letztlich sollte die Wahl der Technologie sowohl von den spezifischen Anforderungen des Projekts als auch von den Präferenzen des Entwicklungsteams abhängen. Es ist nicht unüblich, dass alle genannten Optionen in einem Projekt verwendet werden.


🔎
Transparenzhinweis:
Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt recherchiert und aufbereitet. Quellen werden transparent benannt und regelmäßig geprüft. Dennoch kann keine Garantie für die Richtigkeit, Vollständigkeit oder Aktualität sämtlicher Informationen übernommen werden. Auch bei der Verwendung von künstlicher Intelligenz – etwa zur Erstellung von Bildern oder zur redaktionellen Unterstützung – achten wir auf eine sachliche und nachvollziehbare Darstellung – Irrtümer sind jedoch nicht ausgeschlossen.

KI-Hinweis: Teile dieses Beitrags – zum Beispiel bei der Recherche, Strukturierung oder sprachlichen Ausarbeitung – wurden mit Unterstützung durch KI-basierte Systeme erstellt. Dabei handelt es sich um redaktionelle Werkzeuge, die uns beim Verfassen und Optimieren unterstützen. Die inhaltliche Verantwortung, Endredaktion und Veröffentlichung liegen vollständig bei der Redaktion von tiny-tool.de. Wir achten darauf, nur seriöse Quellen zu verwenden und sämtliche Inhalte eigenständig zu prüfen und final zu gestalten.

Bitte beachte: Die Inhalte dienen ausschließlich der allgemeinen Information und stellen keine verbindliche Beratung (z. B. rechtlicher, steuerlicher oder finanzieller Art) dar. Die Nutzung der Inhalte erfolgt auf eigene Verantwortung. Eine Haftung für Schäden materieller oder immaterieller Art, die durch die Nutzung oder Nichtnutzung der bereitgestellten Informationen verursacht wurden, ist ausgeschlossen, sofern seitens des Anbieters kein nachweislich vorsätzliches oder grob fahrlässiges Verschulden vorliegt.

Werbung & Affiliate-Links: Manche Beiträge enthalten Affiliate-Links oder werbliche Hinweise. Diese sind entsprechend als Werbung oder Anzeige gekennzeichnet. Wenn du über solche Links einkaufst, erhalten wir ggf. eine kleine Provision – für dich bleibt der Preis gleich.

Markenrechtlicher Hinweis: Alle genannten Markennamen, Logos und Warenzeichen sind Eigentum der jeweiligen Rechteinhaber und dienen hier ausschließlich der identifizierenden Beschreibung. Es besteht keine Verbindung zu den genannten Unternehmen.

Externe Links: Diese Website enthält Verlinkungen zu externen Websites Dritter. Für die Inhalte dieser externen Seiten übernehmen wir trotz sorgfältiger Prüfung keine Verantwortung. Zum Zeitpunkt der Verlinkung waren keine rechtswidrigen Inhalte erkennbar. Eine permanente inhaltliche Kontrolle externer Seiten ist jedoch nicht zumutbar. Bei Bekanntwerden von Rechtsverstößen werden entsprechende Links umgehend entfernt.