Référence consolidée des artifacts Maven, modules JPMS, annotations supportées, propriétés JsonbConfig, et points de configuration runtime de Champollion.
Artifacts Maven
groupId:artifactId |
Rôle |
|---|---|
|
Re-exposition pure des specs Jakarta ( |
|
Implémentation JSON-P 2.1 (parser, generator, object model, Patch / Pointer / Merge Patch). |
|
Implémentation JSON-B 3.0 ( |
|
Annotation Processor (scope |
|
Mojo |
|
JMH — comparatifs Parsson/Yasson/Jackson. Pas de scope runtime. |
|
Exemples exécutables. |
|
Runners TCK officiels JSON-P 2.1 + JSON-B 3.0. Lancement via |
Modules JPMS
| Module | Exports publics | SPI / provides |
|---|---|---|
|
|
— |
|
|
|
|
|
|
|
— |
|
Packages internes (internal.*) non exportés — ne pas dépendre dessus, ils peuvent casser entre versions.
Annotations JSON-B supportées
Annotations standard Jakarta JSON Binding 3.0 — toutes supportées :
| Annotation | Effet |
|---|---|
|
Renomme la propriété JSON. Sur paramètre de constructeur : utilisé pour la résolution. |
|
Exclut la propriété (lecture et écriture). |
|
Format date / time. S’applique à |
|
Format numérique (cf. |
|
Adapter sur la propriété ou la classe. |
|
Sérialiseur / désérialiseur custom. |
|
Stratégie de visibilité (champs vs accesseurs). |
|
Constructeur ou factory à utiliser pour la désérialisation. Records natifs supportés sans annotation. |
|
Force l’écriture des |
|
Ordre d’écriture des propriétés. |
|
Polymorphisme avec discriminant (nouveau en JSON-B 3.0). |
Annotations Champollion-spécifiques :
|
Marque un type pour la génération de binding par |
Propriétés JsonbConfig
Toutes les propriétés standard de jakarta.json.bind.JsonbConfig sont supportées (cf. https://jakarta.ee/specifications/jsonb/3.0/) :
| Propriété | Description |
|---|---|
|
Pretty-print avec indentation. |
|
Inclure les propriétés à |
|
Locale pour les formats date / nombre. |
|
Format date / time global. |
|
|
|
|
|
|
|
|
|
Enregistrement global. |
Propriétés Champollion-spécifiques (préfixe champollion.) :
|
Si |
|
Taille du pool de buffers du parser. Défaut : 8. |
JsonProvider & JsonbProvider
Découverts automatiquement via ServiceLoader :
-
META-INF/services/jakarta.json.spi.JsonProvider→io.vidocq.champollion.jsonp.ChampollionJsonProvider -
META-INF/services/jakarta.json.bind.spi.JsonbProvider→io.vidocq.champollion.jsonb.ChampollionJsonbProvider
Pour forcer l’implémentation (cas multi-impl sur le classpath) :
-Djakarta.json.provider=io.vidocq.champollion.jsonp.ChampollionJsonProvider
-Djakarta.json.bind.provider=io.vidocq.champollion.jsonb.ChampollionJsonbProvider
Plugin Maven champollion-codegen-maven-plugin
<plugin>
<groupId>io.vidocq.champollion</groupId>
<artifactId>champollion-codegen-maven-plugin</artifactId>
<version>${champollion.version}</version>
<executions>
<execution>
<goals><goal>generate</goal></goals>
</execution>
</executions>
<configuration>
<targets>
<target>com.acme.dto.*</target>
</targets>
<excludes>
<exclude>com.acme.dto.internal.*</exclude>
</excludes>
</configuration>
</plugin>
Lié à generate-sources. Délègue 100 % à champollion-codegen-apt — pas de duplication.
Compatibilité
-
Java : 25 (LTS).
-
Maven : 3.9.16 (Model 4.0.0 — toute la stack Vidocq est passée à Maven 3.9 ; voir TCK Jakarta JSON-P 2.1 + JSON-B 3.0 pour la note historique sur ShrinkWrap).
-
JPMS : strict, tous les modules ont un
module-info.java. -
Virtual threads : aucun
synchronized, aucunThreadLocalexporté. -
AOT : compatible GraalVM
native-imageet Leyden CDS en mode codegen statique. -
Specs : conforme https://jakarta.ee/specifications/jsonp/2.1/ et https://jakarta.ee/specifications/jsonb/3.0/.
Ressources
-
lien:https://codeberg.org/Vidocq/champollion/src/branch/main/BENCH.md[BENCH.md] — benchmarks JMH vs Parsson / Yasson / Jackson
-
lien:https://codeberg.org/Vidocq/champollion/src/branch/main/TCK.md[TCK.md] — détail TCK
-
lien:https://codeberg.org/Vidocq/champollion/src/branch/main/ROADMAP.md[ROADMAP.md] — phases M0..M7