Java-Wissensbibliothek und Pipeline
Dieser Skill hilft, Java-Code in jeder Domäne zu schreiben, zu überprüfen und zu beschleunigen. Er besteht aus drei Teilen:
- Wissensbibliothek. Bücher, Artikel, Vorträge, Dokumentation, JEPs, Codebasen und Muster nach Kategorien. Jede Quelle wird mit Link, Autor, Jahr und einer Erklärung, warum sie lesenswert ist, angegeben.
- Toolchain. Welche JDKs, Build-Tools und Analysewerkzeuge zu installieren sind, welche Befehle in welcher Reihenfolge ausgeführt werden.
pom.xml- und Gradle-Vorlagen sowie CI-Konfigurationen sind zusammengestellt und geprüft. - Pipeline. Arbeitsablauf: Tests vor Code, Qualitätsprüfungen, JMH-Benchmarks, Code-Review, Suche nach Lösungen in der Bibliothek und erneute Messung.
Wissensstand – November 2026: JDK 27 (September 2026) ist die letzte Version, JDK 25 ist das aktuelle LTS, JDK 21 und 17 sind vorherige LTS-Versionen, JDK 28 erscheint im März 2027. Maven 3.9.16 und 3.10.0 (Maven 4 immer noch RC), Gradle 9.9, JUnit 6.1, Spring Boot 4.1, Quarkus 3.40, JMH 1.37. Minecraft: 26.3 ist die neueste Version (September 2026), 26.4 ist in den Snapshots; seit 26.1 läuft das Spiel ohne Obfuskation und benötigt Java 25.
Inhaltsverzeichnis der Referenzen
| Aufgabe | Datei |
|---|---|
| Neue Funktion, Refactoring oder Optimierung: Arbeitsablauf | references/pipeline.md |
JDK-Distributionen und -Versionen, Installation, Maven und Gradle, Plugins, BOM, Annotation Processors, javac -Xlint, Error Prone, NullAway, SpotBugs, PMD, Spotless, OpenRewrite, Abhängigkeitssicherheit, JDK-Werkzeuge, CI, Vorlagen | references/toolchain.md |
| JUnit 6, AssertJ, Mockito, Testcontainers, Spring Boot Slices, property-basierte und Vertragstests, JaCoCo, PIT, flaky Tests | references/testing.md |
| Code ist langsam oder verbraucht viel Speicher: Techniken nach Symptom, JMH, JFR, JIT, GC, Start und Aufwärmphase | references/performance.md – beginnen Sie mit der Tabelle „Symptom → Technik → Quelle“ |
| Java-Sprachfunktionen 17–28 nach JEP, Idiome, null und Optional, Ausnahmen, Muster und Anti-Patterns, Sicherheit, Review-Checkliste | references/idioms-patterns.md |
| Projektstruktur, Multi-Modul-Builds, Pakete und JPMS, Schichten- und Hexagonale Architektur, DDD, ArchUnit, DI, API-Evolution, Referenz-Codebasen | references/architecture.md |
| Speichermodell, Executors, CompletableFuture, Sperren, Virtuelle Threads, Strukturierte Nebenläufigkeit, Scoped Values, Reaktive Bibliotheken, FFM API, JNI, Unsafe, Vector API | references/concurrency-native.md |
| Serverbereiche: Spring Boot, Quarkus, Micronaut, Helidon, REST und gRPC, JDBC, JPA und Hibernate, Migrationen, Kafka, Beobachtbarkeit, Sicherheit, Container und Kubernetes | references/domains-server.md |
| Weitere Bereiche: Bibliotheksveröffentlichung, CLI und TUI, Desktop, Daten, ML und LLM-Anwendungen, Spiele, Embedded, WebAssembly, Interop, Skripte | references/domains-client.md |
| Was zu lesen ist, Blogs, Vorträge, Podcasts, Kurse, deutschsprachige Ressourcen, Lernpfad nach Niveaus | references/books.md. Bei einer allgemeinen Frage zu Büchern beginnen Sie mit den Abschnitten „Kurze Liste: 20 Hauptquellen“ und „Lesepfad nach Niveaus“; thematische Abschnitte über das Inhaltsverzeichnis öffnen. Die Datei ist groß, lesen Sie sie nicht vollständig |
Minecraft-Zweig (Java Edition: Mods und Server-Plugins, Minecraft 26.x und letztes 1.21.x):
| Aufgabe | Datei |
|---|---|
| Mit einem Mod beginnen: Auswahl des Mod-Loaders (Fabric, NeoForge, Forge, Quilt), Spiel- und Java-Version, Loom und ModDevGradle, Multi-Loader und Multi-Version, Veröffentlichung auf Modrinth und CurseForge, Modpack-Builds, CI, geprüfte Vorlagen | references/minecraft-modding.md |
| Mod-Code: Seiten und Threads, Registrys, Datenkomponenten, Blöcke, Entitäten, Datagen, Codecs, Netzwerk, Events, Mixins, Access Wideners und Transformer, Rendering, Konfiguration, Weltgenerierung, Update auf eine neue Version, Review-Checkliste | references/minecraft-mod-api.md – was in 26.x kaputt ist, finden Sie im Abschnitt „Was in 26.x kaputt ist“ |
Lags, TPS und MSPT, FPS, Speicher, langsamer Start; Spark und JFR; Welt-Benchmark /tick sprint; GameTest und Unit-Tests; Analyse von Crash-Reports und Mod-Konflikten | references/minecraft-performance-testing.md – beginnen Sie mit der Tabelle „Symptom → Technik → Quelle“ |
| Server: Datapack, Plugin oder Mod; Paper, Folia, Velocity, Spigot, Sponge, Minestom; Polymer; Geyser und ViaVersion; Plugin-Engineering und -Vorlagen | references/minecraft-server-plugins.md |
| Dokumentation und deren Aktualität, wie man alte Tutorials liest, Kurse, Referenz-Mods nach Typ, Community, Lernpfad | references/minecraft-resources.md |
Jedes Handbuch beginnt mit einem Inhaltsverzeichnis. Lesen Sie nur den benötigten Abschnitt, nicht die gesamte Datei.
Häufige Fragen und Abschnitte mit Antworten
| Frage | Abschnitt |
|---|---|
| Nach dem Wechsel zu JDK 23+ fehlen generierte Klassen (Lombok, MapStruct, JMH), aber der Build läuft; andere unerwartete Build-Fehler | toolchain.md → „Fallstricke: Zusammenfassung“ |
| Mit welchem Befehl das Projekt vor dem Merge prüfen | toolchain.md → „Minimale Qualitätsprüfungen“ |
| Was im Profil oder Benchmark sichtbar ist und was damit zu tun ist | performance.md → „Symptom → Technik → Quelle“ |
| Wie schreibe ich einen Benchmark, der nicht lügt | performance.md → „Benchmarks: JMH“ |
| Womit auf Windows, Linux und macOS profilen | performance.md → „Profiling“ |
| Kann ich eine Sprachfunktion auf unserer JDK-Version verwenden | idioms-patterns.md → „Java-Sprachversionen: 17–28“ |
| Soll der Dienst auf virtuelle Threads umgestellt werden und was ist zu prüfen | concurrency-native.md → „Virtuelle Threads“; für Spring Boot 4 zusätzlich domains-server.md → „Frameworks und Runtimes“ |
| Welches Nebenläufigkeitsmodell unter Last wählen | concurrency-native.md → „Werkzeugauswahl nach Last“ |
| Was hat sich in Spring Boot 4, Jackson 3, Hibernate 7 geändert und was wurde entfernt | domains-server.md → „Versionen im November 2026“ |
| Langsamer Endpunkt, N+1, Verbindungspool | domains-server.md → „Server-Performance: Symptome“ |
| Wie das Projekt in Module aufgeteilt und Grenzen festgelegt werden | architecture.md → „Kurze Standardregeln“ |
| Gibt es ein Buch oder eine Ausgabe | books.md → „Was erschienen ist, was im Early Access ist und was es nicht gibt“ |
| Minecraft: Wo fange ich mit einem Mod an, fertiges Projekt mit GameTest und CI | minecraft-modding.md → „Vorlagen“, Loader-Auswahl – „Standard-Stack“ |
Minecraft: Altes Tutorial oder Mod baut nicht auf 26.x (modImplementation, remapJar, ResourceLocation, Yarn) | minecraft-modding.md → „Was in alten Tutorials falsch ist“, minecraft-mod-api.md → „Was in 26.x kaputt ist“ |
| Minecraft: Server laggt (MSPT, TPS), wie finde ich die Ursache und beweise, dass die Behebung geholfen hat | minecraft-performance-testing.md → „Symptom → Technik → Quelle“, Arbeitsablauf – pipeline.md → „Minecraft-Mods und Plugins“ |
| Minecraft: Datapack, Plugin oder Mod; Paper-Plugin von Grund auf | minecraft-server-plugins.md → „Was wählen: Datapack, Plugin oder Mod“, „Vorlagen“ |
Das Skript scripts/BenchCompare.java vergleicht JMH-Durchläufe „vorher“ und „nachher“ anhand ihrer JSON-Daten unter Berücksichtigung des Rauschens zwischen den Durchläufen und gibt bei einer Regression den Code 1 zurück. Ausführung ohne Build: java BenchCompare.java <vorher> <nachher> auf JDK 17+. Es wird in Schritt 11 der Pipeline benötigt.
Für Minecraft gibt es zwei weitere Skripte:
- scripts/tick_sprint_bench.sh – Benchmark des gesamten Servers mit dem Befehl
/tick sprint. Das Ergebnis wird im JMH-JSON-Format ausgegeben, sodass es vonBenchCompare.javaverglichen werden kann. - scripts/EmptyStructure.java – leere Struktur
.nbtfür GameTest. Wird auf NeoForge benötigt, wo es keine eigene leere Struktur gibt.
Die Skripte befinden sich im Ordner scripts/ neben dieser SKILL.md. Bei Installation für alle Projekte ist dies ~/.claude/skills/java-knowledge/scripts/, bei Installation im Projekt .claude/skills/java-knowledge/scripts/. Setzen Sie diesen Pfad in den Befehlen aus den Handbüchern ein.
Arbeitsweise
Für Aufgaben, die mehr als eine Methode umfassen, folgen Sie der Pipeline:
- Abfrage.
- Plan und Spezifikation.
- Teilaufgaben.
- Tests vor Code.
- Isolation im Worktree.
- Benchmarks.
- Basismessung und Profil.
- Review.
- Lösungssuche in der Bibliothek.
- Optimierung.
- Erneute Messung.
Für kleine Korrekturen reicht der Kurzmodus aus derselben Datei: Test, Code, Prüfungen, Review.
Bevor Sie die Arbeit als fertig erklären, führen Sie die minimalen Prüfungen durch und zeigen Sie deren Ausgabe:
./mvnw -B -ntp verify # Kompilierung mit -Xlint -Werror, Error Prone und NullAway, Tests, Spotless, JaCoCo-Schwelle
./mvnw -B -ntp dependency:analyze
osv-scanner scan source -r .
Für Gradle: ./gradlew build, ./gradlew buildHealth, osv-scanner scan source -r .. Analysatoren und Schwellen sollten im Build verankert sein – Vorlagen in toolchain.md. Wenn sie im Projekt nicht vorhanden sind, führen Sie das aus, was vorhanden ist, und geben Sie an, welche Prüfungen fehlen. Wenn ein Werkzeug nicht installiert ist, schlagen Sie den Installationsbefehl aus toolchain.md vor und überspringen Sie den Schritt nicht stillschweigend.
Bei der Optimierung:
- Zuerst messen, dann ändern. Ohne Basislinie kann man nicht sagen, dass der Code schneller geworden ist.
- Messen Sie mit JMH, nicht mit
System.nanoTime()in einer Schleife: Der JIT entfernt ungenutzte Arbeit. In einem lokalen Test sah eine Berechnung mit verworfenem Ergebnis 14-mal billiger aus als die eigentliche Berechnung. - Führen Sie 5 Durchläufe „vorher“ und „nachher“ in separaten JVM-Starts durch, abwechselnd in der Reihenfolge (ABBA). Läufe desselben JARs weichen um 12–22% voneinander ab.
- Fügen Sie immer
-prof gchinzu und beachten Siegc.alloc.rate.norm(Bytes pro Operation): Diese Metrik rauscht fast nicht. - Führen Sie immer nur einen JMH gleichzeitig auf einem Rechner aus und belasten Sie den Rechner während der Messung nicht mit anderen Arbeiten.
- Suchen Sie die Technik nach Symptom in performance.md und geben Sie die Quelle neben der Änderung an.
- Akzeptieren Sie eine Änderung nur, wenn der Benchmark einen signifikanten Gewinn gezeigt hat und die Tests grün geblieben sind.
Beim Review verwenden Sie die Checklisten:
- idioms-patterns.md – für jeden Code;
- testing.md – für Tests;
- concurrency-native.md – für nebenläufigen Code, virtuelle Threads und nativen Code;
- domains-server.md – für Server-Code, Datenbank und Sicherheit;
- domains-client.md – für zu veröffentlichende Bibliotheken;
- architecture.md – für Projektstruktur und Modulgrenzen.
Bibliotheksnutzungsregeln
- Quellen angeben. Wenn Sie ein Muster oder eine Optimierung empfehlen, geben Sie einen Link aus dem Handbuch an. So kann der Benutzer den Rat überprüfen, und die Lösung wirkt nicht erfunden.
- Markierungen beachten.
[veraltet]bedeutet, dass es einen Ersatz für das Material gibt, der daneben angegeben ist.[nicht geprüft]bedeutet, dass die Aussage aus einer einzigen sekundären Quelle stammt; sie sollte überprüft werden, bevor eine Lösung darauf aufbaut. - Versionen prüfen. Die Versionen gelten für November 2026. In den Jahren 2025–2026 wurden viele Hauptversionen mit Breaking Changes veröffentlicht: Spring Boot 4 und Spring Framework 7 (umbenannte Starter, entfernte APIs), Jackson 3 (Pakete
tools.jackson), Hibernate 7, JUnit 6, Testcontainers 2 (neue Artefakte und Pakete), google-java-format 2. Die Veröffentlichung über OSSRH ist seit dem 30. Juni 2025 geschlossen. Vor wichtigen Entscheidungen konsultieren Sie Maven Central, die Dokumentation und die Release Notes. - Ziel-Java-Version berücksichtigen. Stellen Sie
maven.compiler.releaseoder das Toolchain in Gradle fest, bevor Sie ...