Pensez vous que JAXB a un avenir dans le monde professionnel ?
Bonsoir,
Je me pose beaucoup cette question depuis que j'ai eu a utiliser cette technologie pour "marshaller" et "unmarshaller" des objets sous differentes version xml.
JaxB a des avantages :
- lire et ecrire dans une vaste gamme de type d'entrée/sortie (Fichier, Flux, Noeud Dom ...etc...)
- Facilité d'utilisation.
Mais elle aussi de nombreux defauts :
- Utilisation d'annotations, ce qui oblige a alterer les classes d'origines (autrement dit impossible de l'utiliser sur une bibliotheque tierce)
- Reformatage des classes pour avoir soit des methodes get/set annotés ou des variables annotées
Et voici une liste de problemes auxquels je me suis confronté et n'ai pas pu trouver de reponses (meme en allant sur la mailing list officielle)
Citation:
en version 1.0
@XmlElement(name="AnchorPoint", namespace="http://org.opengis/sld")
Resultat : <sld:AnchorPoint></sld:AnchorPoint>
en version 1.1
@XmlElement(name="AnchorPoint", namespace="http://org.opengis/se")
Resultat : <se:AnchorPoint></se:AnchorPoint>
JaxB ne permet pas d'avoir des classes annotés pour plus versions, plusieurs normes XML ou differents namespace. (exemple issu des normes OGC Styled Layer Descriptor version 1.0 et 1.1)
Citation:
<Width>456</Width>
Un @XmlValue
OU
<Width><Literal>456</Literal></Width>
Des @XmlElement
Jaxb ne permet pas d'avoir des tags avec soit une valeur text soit des sous tags
Citation:
Pas de mapping differencier.
Ce que j'entend par la c'est qu'il est impossible de faire en sorte d'avoir un objet se differencier en 2 ou N tag differents selon ses parametres.
Citation:
Inefficace avec les interfaces.
Si on travail avec des interfaces, ce qui est une pratique souvent recommandé, il faut annoter toutes les implémentations qui existe.
Voila donc mon resenti vis a vis de cette technologie.
JaxB n'est utilisable que pour des mapping 1 pour 1 (ou presque), avec des variables de type primitif ou peu evoluer et pour une version unique d'une norme xml. Autrement dit il est inutilisable dans le cadre de projet voué a évoluer (changement des versions et normes xml impossible) et il est invasif dans le code source (annotations, refonte des classes avec des constructeurs sans arguments et autres ...)
En temps normal je ne dirais rien d'une api avec beaucoup de défaut, mais le fait qu'elle soit incluse dans la JRE me choque enormement. Elle aurait du exister en tant que librairie tierce mais pas etre imposer.
Qu'en pensez vous ?