CommunityRédaction et éditiongithub.com

Betreazen/java-knowledge

Base de connaissances et workflow pour Java et la JVM dans tous les domaines — bibliothèques, backends (Spring Boot, Quarkus, Micronaut), JDBC/JPA, Kafka, CLI, JavaFX, Spark, applications ML/LLM, jeux (libGDX, LWJGL), mods/plugins Minecraft (Fabric, NeoForge, Paper, mixins), embarqué.

Qu'est-ce que java-knowledge ?

Ce skill fournit une base de connaissances complète et un pipeline de travail optimisé pour le développement Java, couvrant un large éventail de domaines allant des backends d'entreprise (Spring Boot, Quarkus) aux mods Minecraft et aux jeux. Il est conçu pour être utilisé comme référence lors de l'écriture, la révision ou l'optimisation de code Java. Les fonctionnalités incluent une bibliothèque organisée de livres, d'articles et de JEPs ; un ensemble d'outils vérifié avec des modèles de build Maven/Gradle, des analyseurs de code (Error Prone, SpotBugs) et des configurations CI ; ainsi qu'un pipeline de performance structuré qui guide l'utilisateur des tests et benchmarks (JMH) jusqu'à l'optimisation et la révision. Le skill supporte des plateformes comme Claude Code, Cursor et Codex, et ses références sont organisées par catégories (toolchain, tests, performance, architecture, etc.) pour un accès rapide. Les scripts utilitaires inclus, comme BenchCompare.java, automatisent la détection des régressions de performance.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Betreazen/java-knowledge-skill/tree/HEAD/java-knowledge

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation


name: java-knowledge description: Base de connaissances et workflow pour Java et la JVM dans tous les domaines — bibliothèques, backends (Spring Boot, Quarkus, Micronaut), JDBC/JPA, Kafka, CLI, JavaFX, Spark, applications ML/LLM, jeux (libGDX, LWJGL), mods/plugins Minecraft (Fabric, NeoForge, Paper, mixins), embarqué. Utilisez-le pour toute question concernant du code Java, même celles qui semblent rapides à répondre de mémoire : écrire ou réviser du Java ; erreurs javac (incompatible bounds, cannot find symbol) et exceptions (ConcurrentModificationException) ; records, sealed types, pattern matching, streams ; versions JDK et JEPs ; builds Maven ou Gradle, Lombok/MapStruct qui ne fonctionnent plus ; Error Prone, NullAway, SpotBugs, Spotless ; JUnit, Mockito, Testcontainers, JaCoCo ; code lent, trames de profilage chaudes, allocations, pauses GC, démarrage lent ; JMH, JFR, async-profiler ; blocages et deadlocks, threads virtuels, CompletableFuture, commonPool, modèle mémoire Java, API FFM ; structure multi-module, JPMS ; livres Java. Inclut une bibliothèque organisée, des modèles vérifiés par CI et un pipeline d'optimisation mesuré.

Java : base de connaissances et pipeline

Ce skill aide à écrire, vérifier et accélérer le code Java dans n'importe quel domaine. Il contient trois éléments :

  1. Bibliothèque de connaissances. Livres, articles, présentations, documentation, JEPs, bases de code et modèles par catégorie. Chaque source est fournie avec un lien, l'auteur, l'année et une explication de son utilité.
  2. Chaîne d'outils. Quels JDK, outils de build et analyseurs installer, quelles commandes exécuter et dans quel ordre. Des modèles pom.xml, Gradle et CI sont rassemblés et vérifiés.
  3. Pipeline. Ordre de travail : tests avant le code, vérifications de qualité, benchmarks JMH, révision, recherche de solutions dans la bibliothèque et remesure.

État des connaissances — novembre 2026 : JDK 27 (septembre 2026) — dernière version, JDK 25 — LTS actuel, JDK 21 et 17 — LTS précédents, JDK 28 sortira en mars 2027. Maven 3.9.16 et 3.10.0 (Maven 4 toujours en RC), Gradle 9.9, JUnit 6.1, Spring Boot 4.1, Quarkus 3.40, JMH 1.37. Minecraft : 26.3 — dernière version (septembre 2026), 26.4 en snapshots ; depuis 26.1 le jeu est sans obfuscation et nécessite Java 25.

Où chercher

TâcheFichier
Nouvelle fonctionnalité, refactoring ou optimisation : ordre de travailreferences/pipeline.md
Distributions et versions JDK, installation, Maven et Gradle, plugins, BOM, processeurs d'annotations, javac -Xlint, Error Prone, NullAway, SpotBugs, PMD, Spotless, OpenRewrite, sécurité des dépendances, outils JDK, CI, modèlesreferences/toolchain.md
JUnit 6, AssertJ, Mockito, Testcontainers, slices Spring Boot, tests basés sur les propriétés et tests contractuels, JaCoCo, PIT, tests instablesreferences/testing.md
Code lent ou gourmand en mémoire : technique par symptôme, JMH, JFR, JIT, GC, démarrage et échauffementreferences/performance.md — commencez par le tableau « Symptôme → technique → source »
Fonctionnalités du langage Java 17–28 par JEP, idiomes, null et Optional, exceptions, patterns et anti-patterns, sécurité, checklist de révisionreferences/idioms-patterns.md
Structure de projet, builds multi-modules, paquets et JPMS, architecture en couches et hexagonale, DDD, ArchUnit, DI, évolution d'API, bases de code de référencereferences/architecture.md
Modèle mémoire, executors, CompletableFuture, verrous, threads virtuels, concurrence structurée, scoped values, bibliothèques réactives, API FFM, JNI, Unsafe, Vector APIreferences/concurrency-native.md
Domaines serveur : Spring Boot, Quarkus, Micronaut, Helidon, REST et gRPC, JDBC, JPA et Hibernate, migrations, Kafka, observabilité, sécurité, conteneurs et Kubernetesreferences/domains-server.md
Autres domaines : publication de bibliothèques, CLI et TUI, desktop, données, applications ML et LLM, jeux, embarqué, WebAssembly, interop, scriptsreferences/domains-client.md
Que lire, blogs, présentations, podcasts, cours, ressources en français, parcours d'apprentissage par niveauxreferences/books.md. Pour une question générale sur les livres, commencez par les sections « Liste courte : 20 sources principales » et « Parcours de lecture par niveaux », ouvrez les sections thématiques via la table des matières. Le fichier est volumineux, ne le lisez pas en entier

Branche Minecraft (Java Edition : mods et plugins serveur, Minecraft 26.x et dernière 1.21.x) :

TâcheFichier
Commencer un mod : choix du chargeur (Fabric, NeoForge, Forge, Quilt), version du jeu et Java, Loom et ModDevGradle, multi-chargeur et multi-version, publication sur Modrinth et CurseForge, builds de modpacks, CI, modèles vérifiésreferences/minecraft-modding.md
Code du mod : côtés et threads, registres, composants de données, blocs, entités, datagen, codecs, réseau, événements, mixins, access wideners et transformers, rendu, configs, génération du monde, migration vers une nouvelle version, checklist de révisionreferences/minecraft-mod-api.md — ce qui est cassé dans 26.x, voir la section « Ce qui est cassé dans 26.x »
Ralentissements, TPS et MSPT, FPS, mémoire, démarrage lent ; spark et JFR ; benchmark du monde /tick sprint ; GameTest et tests unitaires ; analyse des rapports de crash et conflits de modsreferences/minecraft-performance-testing.md — commencez par le tableau « Symptôme → technique → source »
Serveur : datapack, plugin ou mod ; Paper, Folia, Velocity, Spigot, Sponge, Minestom ; Polymer ; Geyser et ViaVersion ; ingénierie et modèles de pluginsreferences/minecraft-server-plugins.md
Documentation et sa fraîcheur, comment lire les anciens tutoriels, cours, mods de référence par type, communauté, parcours d'apprentissagereferences/minecraft-resources.md

Chaque guide commence par une table des matières. Lisez uniquement la section nécessaire, pas le fichier en entier.

Questions fréquentes et sections avec réponse :

QuestionSection
Après le passage à JDK 23+, les classes générées (Lombok, MapStruct, JMH) ont disparu, mais le build passe ; autres échecs de build non évidentstoolchain.md → « Pièges : résumé »
Quelle commande pour vérifier le projet avant une fusiontoolchain.md → « Vérifications minimales de qualité »
Que voit-on dans le profil ou le benchmark et qu'en faireperformance.md → « Symptôme → technique → source »
Comment écrire un benchmark qui ne mente pasperformance.md → « Benchmarks : JMH »
Avec quoi profiler sur Windows, Linux et macOSperformance.md → « Profilage »
Peut-on utiliser une fonctionnalité du langage sur notre version JDKidioms-patterns.md → « Versions du langage : Java 17–28 »
Faut-il migrer le service vers les threads virtuels et que vérifierconcurrency-native.md → « Threads virtuels », pour Spring Boot 4 — aussi domains-server.md → « Frameworks et runtimes »
Quel modèle de concurrence choisir sous chargeconcurrency-native.md → « Choix de l'outil selon la charge »
Qu'est-ce qui a changé dans Spring Boot 4, Jackson 3, Hibernate 7 et qu'est-ce qui a été supprimédomains-server.md → « Versions en novembre 2026 »
Endpoint lent, N+1, pool de connexionsdomains-server.md → « Performances du serveur : symptômes »
Comment diviser un projet en modules et verrouiller les frontièresarchitecture.md → « Règles courtes par défaut »
Existe-t-il un livre ou une éditionbooks.md → « Ce qui est sorti, ce qui est en early access et ce qui n'existe pas »
Minecraft : par où commencer un mod, projet prêt avec GameTest et CIminecraft-modding.md → « Modèles », choix du chargeur — « Stack par défaut »
Minecraft : ancien tutoriel ou mod qui ne compile pas sur 26.x (modImplementation, remapJar, ResourceLocation, Yarn)minecraft-modding.md → « Ce qui est incorrect dans les anciens tutoriels », minecraft-mod-api.md → « Ce qui est cassé dans 26.x »
Minecraft : le serveur rame (MSPT, TPS), comment trouver la cause et prouver que la correction a aidéminecraft-performance-testing.md → « Symptôme → technique → source », ordre de travail — pipeline.md → « Mods et plugins Minecraft »
Minecraft : datapack, plugin ou mod ; plugin Paper from scratchminecraft-server-plugins.md → « Que choisir : datapack, plugin ou mod », « Modèles »

Le script scripts/BenchCompare.java compare les runs JMH « avant » et « après » via leur JSON en tenant compte du bruit entre les runs et retourne le code 1 en cas de régression. Exécution sans build : java BenchCompare.java <avant> <après> sur JDK 17+. Il est nécessaire à l'étape 11 du pipeline.

Pour Minecraft, il y a deux autres scripts :

  • scripts/tick_sprint_bench.sh — benchmark complet du serveur avec la commande /tick sprint. Le résultat est écrit au format JSON JMH, donc il est comparé par le même BenchCompare.java ;
  • scripts/EmptyStructure.java — structure .nbt vide pour GameTest. Nécessaire sur NeoForge, où il n'y a pas de structure vide par défaut.

Les scripts se trouvent dans le dossier scripts/ à côté de ce SKILL.md. Lors de l'installation pour tous les projets, c'est ~/.claude/skills/java-knowledge/scripts/, lors de l'installation dans un projet, c'est .claude/skills/java-knowledge/scripts/. Utilisez ce chemin dans les commandes des guides.

Comment travailler

Pour une tâche de plus d'une méthode, suivez le pipeline :

  1. Enquête.
  2. Plan et spécification.
  3. Sous-tâches.
  4. Tests avant le code.
  5. Isolation dans un worktree.
  6. Benchmarks.
  7. Mesure initiale et profil.
  8. Révision.
  9. Recherche de solutions dans la bibliothèque.
  10. Optimisation.
  11. Remesure.

Pour une petite correction, le mode court du même fichier suffit : test, code, vérifications, révision.

Avant de déclarer le travail terminé, exécutez les vérifications minimales et montrez leur sortie :

./mvnw -B -ntp verify                 # compilation avec -Xlint -Werror, Error Prone et NullAway, tests, Spotless, seuil JaCoCo
./mvnw -B -ntp dependency:analyze
osv-scanner scan source -r .

Sur Gradle : ./gradlew build, ./gradlew buildHealth, osv-scanner scan source -r .. Les analyseurs et seuils doivent être attachés au build — modèles dans toolchain.md. S'ils ne sont pas présents dans le projet, exécutez ce qui existe et dites quelles vérifications manquent. Si l'outil n'est pas installé, proposez la commande d'installation depuis toolchain.md, ne sautez pas l'étape en silence.

Lors de l'optimisation :

  • D'abord mesurer, puis corriger. Sans ligne de base, on ne peut pas dire que le code est plus rapide.
  • Mesurez avec JMH, pas avec System.nanoTime() dans une boucle : le JIT supprime le travail inutilisé. Dans une mesure locale, un calcul avec un résultat jeté semblait 14 fois moins cher que le réel.
  • Prenez 5 runs « avant » et « après » avec des lancements JVM séparés, en alternant l'ordre (ABBA). Les lancements du même jar varient de 12 à 22%.
  • Ajoutez toujours -prof gc et regardez gc.alloc.rate.norm (octets par opération) : cette métrique a presque pas de bruit.
  • Lancez un seul JMH à la fois sur la machine et ne chargez pas la machine avec d'autre travail pendant la mesure.
  • Cherchez la technique par symptôme dans performance.md et indiquez la source à côté de la correction.
  • Acceptez la correction seulement si le benchmark a montré un gain significatif et que les tests sont toujours verts.

Lors de la révision, utilisez les checklists :

Règles d'utilisation de la bibliothèque

  • Citez la source. En recommandant un pattern ou une optimisation, donnez un lien depuis le guide. Ainsi l'utilisateur peut vérifier le conseil et la solution ne semble pas inventée.
  • Tenez compte des annotations. [obsolète] signifie que le matériau a un remplacement, indiqué à côté. [non vérifié] signifie que l'affirmation provient d'une source secondaire unique ; il convient de la revérifier avant de bâtir une solution dessus.
  • Vérifiez les versions. Les versions sont données pour novembre 2026. En 2025–2026, de nombreuses versions majeures avec des changements cassants sont sorties : Spring Boot 4 et Spring Framework 7 (starters renommés, API supprimées), Jackson 3 (paquets tools.jackson), Hibernate 7, JUnit 6, Testcontainers 2 (nouveaux artefacts et paquets), google-java-format 2. La publication via OSSRH est fermée depuis le 30 juin 2025. Avant des décisions importantes, vérifiez avec Maven Central, la documentation et les notes de version.
  • Tenez compte de la version Java cible. Précisez maven.compiler.release ou toolchain dans Gradle avant de

Skills associés