|
Vauban est en |
Vauban implémente le profil CDI 4.1 Lite. Migrer suppose donc d’abandonner les fonctionnalités du profil Full quand elles sont utilisées (portable extensions runtime, @ConversationScoped, passivation, EL applicatif).
Depuis Quarkus ArC
ArC partage la philosophie build-time de Vauban. Le portage est conceptuellement direct ; les écarts sont surtout outillage.
| ArC | Vauban | Note |
|---|---|---|
Build-time CDI complet |
Build-time CDI complet |
Modèle identique. Aucun changement de paradigme côté code applicatif. |
Génération bytecode via Gizmo |
Génération bytecode via Class-File API (JEP 484) |
Pas d’ASM. La sortie est compatible avec n’importe quel JVM 25+. |
|
Pas d’équivalent direct |
Vauban élimine actuellement uniquement les beans non référencés. // TODO@user: confirmer si une annotation similaire est planifiée. |
|
Pas d’équivalent |
Le profilage build-time relève de la couche Vidocq Runtime. |
Quarkus Dev Mode |
|
Vauban n’a pas de Dev Mode dédié. |
|
|
Pattern CDI standard. |
Depuis Weld
Weld implémente le profil Full ; certaines fonctionnalités utilisées par les applications historiques n’ont pas d’équivalent en Lite.
Différences clés :
-
Pas d'`AnnotatedType` lookup runtime — Vauban résout tout à la compilation. Le code qui appelle
BeanManager.createAnnotatedType(Class)doit être réécrit en Build Compatible Extension. -
Pas de
BeforeBeanDiscovery/AfterBeanDiscoveryruntime — remplacé par les phases BCE@Discovery/@Enhancement/@Registration/@Synthesis/@Validation. -
Pas de portable extensions — l’interface
Extensionn’est pas chargée viaServiceLoaderau runtime. Migrer chaque extension vers une BCE compile-time. -
Pas de
@ConversationScoped— refactorer en@SessionScoped(// TODO@user: confirmer support) ou en mécanisme applicatif explicite.
Tableau exhaustif Weld → Vauban des features supportées / non supportées. // TODO@user
Depuis OpenWebBeans
OpenWebBeans est très proche de Weld dans ses APIs. Le tableau Weld s’applique en grande partie. Les particularités OWB (résolution de bean différée, BeanArchive custom) ne sont pas supportées : Vauban n’a qu’un seul mode de découverte, statique.
Pièges CDI 4.1 Lite
Spécificités du profil Lite à connaître avant migration :
-
@Decorator— supporté en Lite, à valider sur votre code. // TODO@user: confirmer la couverture exacte. -
@Specializes— non supporté. Refactorer en composition ou en@Alternativepriorisée. -
@Alternative+@Priority— supporté ; vérifier les priorités existantes. -
Producer methods avec
@Disposes— supportés. -
Champ
@Injectsur scope normal — résout bien le client proxy (cf. correctif VAU-INJ-001 dans BUG.md). -
InjectionPointmetadata — supporté.
Stratégie recommandée
-
Faire tourner le code existant sous Vauban dans une branche dédiée.
-
Lancer
vauban:analyzepour détecter les split packages et exports JPMS manquants. -
Exécuter
vauban-test-suiteadapté au domaine applicatif. -
Activer la TCK CDI 4.1 Lite sur l’application elle-même via
vauban-junit. -
Itérer sur les BCE pour remplacer les portable extensions.
-
Tester en GraalVM
native-imagepour valider l’absence de réflexion résiduelle.
Pour aller plus loin
-
Concepts — vocabulaire et choix d’implémentation.
-
Fonctionnement interne — pipeline APT, modèle de threading.
-
BUG.md — bugs reproductibles tracés.