20 décembre 2007

encore une boulette de SUN

J'ai voulu essayer la pile jax-WS Metro...

Si on met de côté le manque de support pour maven2 lorsqu'il s'agit de diffuser les Jars des API Java (il faut jongler avec les repository de dev.java.net), je suis tombé sur une de ces boulettes auquel Java nous a habitué :

Lancé sur Java6, la génération JaxB plante ... car l'API jaxb2 fait partie de java6 et metro utilise Jaxb2.1 - incompatible bien entendu.

Cette sale habitude de fourrer toutes les API dans le JRE sans possibilité de modularisation est pénible (qui n'a pas galèré avec les API XML ?). A croire que le terme "compatibilité ascendante" n'existe pas chez les membres du JCP ?

Pourquoi ne pas laisser au soft le soin de définir ses dépendances ?
J'ai besoin de JAXB ? Je précise dans mon MANIFEST ce dont j'ai besoin, et la JVM me fournit le classpath "qui va bien".
La JSR-277 apportera t-elle une solution de ce type ? A quand une généralisation d'OSGi ? Pourquoi aura t-il fallu attendre Java 7 pour que ce problème soit enfin pris en considération ?

update :

d'après ce lien, le dernier "update" de la JVM 6 de SUN intègre JAXB 2.1 en remplacement de 2.0. Comme quoi un petit update n'est pas forcément anodin !

Je trouve très domageable qu'une version mineure intègre une mise à jour d'API, avec le risque que deux applications "java6" ne fonctionnent pas pour cause d'update insuffisant.
J'ented déjà les problèmes arriver :
"
- je n'arrive pas à compiler le projet : j'ai une erreur xxx
- quelle version du JDK tu utilises ?
- la 6 !
- quel update ?
- quel quoi ?
"