IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

La multiplication des annotations [Débat]


Sujet :

Java

  1. #21
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    les versions, pour beaucoup de besoins, sont gérées au niveau du repository de code. Quand tu fait évoluer ta classe et ses annotation vers une situation nouvelle, tu reviens rarement en arrière, sauf pour du legacy, et là tu ressort le vieux code de ton bon vieux svn et tu le recompile. Et comme déjà mentionné, si le meme code doit etre utilisé dans des situation différente, ok pour les annotation a condition que des fichiers puissent préciser ou faire varier ces annotations. Dans le code, on met ce qui change pas, sauf si le code doit aussi changer

  2. #22
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    les versions, pour beaucoup de besoins, sont gérées au niveau du repository de code. Quand tu fait évoluer ta classe et ses annotation vers une situation nouvelle, tu reviens rarement en arrière, sauf pour du legacy, et là tu ressort le vieux code de ton bon vieux svn et tu le recompile. Et comme déjà mentionné, si le meme code doit etre utilisé dans des situation différente, ok pour les annotation a condition que des fichiers puissent préciser ou faire varier ces annotations. Dans le code, on met ce qui change pas, sauf si le code doit aussi changer
    On voit que tu n'as jamais fait d'application intéropérable. essai de communiquer entre 2 applications serveur si elles n'utilisent pas la meme version d'une norme d'echange, bonne chance.

    Tu ne geres pas les versions des normes au niveau du code, je suis surpris que tu proposes cette solution.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #23
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    J'a idéjà du travailler avec des serveur ou fallait balancer mes donnée dans des formats les pluts tordus les uns que les autres, sans annotations. Et même sans annotations, j'ai un template par format d'export. Je vois pas le lien avec les annotation dans l'histoire

    Et comme je l'ai dit, pour moi vouloir utiliser des annotation pour diriger la manière dont un code se comporte, alors que tu sais pertinement que ce code devra se comporter de manière différente suivant la situation, c'est assez inutile. Autant se passer des annotations dans ces cas là

  4. #24
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Et comme je l'ai dit, pour moi vouloir utiliser des annotation pour diriger la manière dont un code se comporte, alors que tu sais pertinement que ce code devra se comporter de manière différente suivant la situation, c'est assez inutile. Autant se passer des annotations dans ces cas là
    ca revient a ce que j'avasi dit : ne pas utiliser d'annotation pour ce qui est binding (xml ou autre)
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  5. #25
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par eclesia Voir le message
    Les annotations ne gerent pas les versions d'annotations
    Peux-tu expliciter ce point particulier ?

  6. #26
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Quand tu annote ta classe avec une api de binding : type jaxb.
    les annotations sont faites pour une version particuliere du xml.

    Quand on suit des normes, parmis lesquelles ISO et OGC, les normes évoluent avec les années avec une nouvelle version tout les 2/3ans environs et des revisions qui peuvent être quasi annuelle pour les normes très actives.

    Donc quand tu as annotée ta classe, tu l'as fait pour une version particulière. seulement il est rare d'avoir deux applications (venant de société différentes) alignée en permanence sur la même version. Par conséquent notre classe doit pouvoir être "marshaller" en différente version d'une même norme pour pouvoir vraiment etre interopérable. Mais il est impossible d'avoir plusieurs annotations faisant référence à différente version ou a différentes normes.

    Un exemple : j'ai une série de classes pour faire de la symbologie, il exite une norme OGC et une norme ISO et on peut aussi vouloir quelque chose de plus grand public comme le SVG ou le CSS.
    les 4 normes décrivent plus ou moins la meme chose mais de facon differente. Avec des annotations tu es foutu, tu dois faire une interface et N implémentation pour chaque version/norme.

    Un bon parser en vrai java et son lot de tests unitaires, c'est la seule solution viable a long terme.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  7. #27
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    dans ce cas là, bien sur, mais ca n'enlève rien à l'utilité ds annotation si tout ce que tu veux c'est marshaller ta classe pour la récupérer 5 minutes après sur la même version de ton appli, bref quand le format est à usage interne seulement (communication client / server utilsant la même version du protocole par exemple).

    Perso il m'est jamais venu à l'idée d'utiliser des annotations pour exporter vers des format étranger à mon appli, j'ai toujours préféré l'utilisation d'un bon vieux template en freemarker ou en jsf (facelet parfois c'est du tout bon pour l'export format XML de données :p) qu'on sais faire évoluer sans toucher au code.

  8. #28
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par eclesia Voir le message
    Quand on suit des normes, parmis lesquelles ISO et OGC, les normes évoluent avec les années avec une nouvelle version tout les 2/3ans environs et des revisions qui peuvent être quasi annuelle pour les normes très actives.
    Tout à fait.

    Citation Envoyé par eclesia Voir le message
    Un exemple : j'ai une série de classes pour faire de la symbologie, il exite une norme OGC et une norme ISO et on peut aussi vouloir quelque chose de plus grand public comme le SVG ou le CSS.
    les 4 normes décrivent plus ou moins la meme chose mais de facon differente.
    Si c'est fait de façon différente, c'est que le modèle qui le capture est également différent (un schema iso est différent d'un schema ogc); Donc il existe plusieurs traductions dans le code, et donc plusieurs jeu d'annotations.

    Comment résous-tu ce problème avec une sérialisation classique ?

  9. #29
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Perso il m'est jamais venu à l'idée d'utiliser des annotations pour exporter vers des format étranger à mon appli, j'ai toujours préféré l'utilisation d'un bon vieux template en freemarker ou en jsf (facelet parfois c'est du tout bon pour l'export format XML de données :p) qu'on sais faire évoluer sans toucher au code.
    Ce ne sont pas des formats étranger justement, on doit les gérer pour pouvoir communiquer avec les autres applications. le but de nos applications est en grande partie l'échange d'informations, se sont des applis serveur qui fournissent des services normalisés qui ne communique pas necessairement avec des clients fait par nous.
    Un exemple (réel) un client MapFaces qui communique avec les serveurs cartographique de la nasa ou de l'unesco.

    Je ne vois pas ce que vient faire jsf et les servlets la dedans

    Si c'est fait de façon différente, c'est que le modèle qui le capture est également différent (un schema iso est différent d'un schema ogc); Donc il existe plusieurs traductions dans le code, et donc plusieurs jeu d'annotations.

    Comment résous-tu ce problème avec une sérialisation classique ?
    Il n'y a pas plusieurs traduction dans le code, il y a une classe "Style" qui cumule toutes les possibilités des différentes normes, a cause de ca, la structure de la classe ne colle a aucune des normes mais est capable d'en gérer tous les élements.

    Comme le modèle ne colle pas a la norme je ne peux pas l'annoter, alors la solution est de transformer ses classes vers des classes annotées pour une norme et une version donné, ce qui peut en faire beaucoup. c'est le choix qu'a fait la société.

    Personnellement, j'aurais fait des parseur stax, ce qui serait beaucoup plus performant, moins couteux en mémoire mais qui aurait prit plus de temps a réaliser. malheureusement jaxb est tres a la mode a cause de metro et des autres api, va donc expliquer a un patron non développeur pourquoi il ne devrait pas utiliser une api que tout le monde utilise
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  10. #30
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par eclesia Voir le message
    Ce ne sont pas des formats étranger justement

    .... qui ne communique pas necessairement avec des clients fait par nous.
    Perso c'est ma définition de "étranger à mon application", t'as pas le controle absolue sur le lecteur et l'encodeur

    JSF était juste un exemple. Pour les export j'évite au maximum d'utiliser du code, j'utilise toujours des système de template (freemarker par exemple peu lire un template et y injecter les données :p). par contre, de fait, pour la lecture, il faut souvent passer par du code ^^

    On en reviens de toutes facon au final a être d'accord il me semble: les annotation: oui pour ce qui est lié au code , sinon c'est pas la peine (logique puisqu'elles sont dans le code :p)

  11. #31
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par eclesia Voir le message
    Il n'y a pas plusieurs traduction dans le code, il y a une classe "Style" qui cumule toutes les possibilités des différentes normes, a cause de ca, la structure de la classe ne colle a aucune des normes mais est capable d'en gérer tous les élements.
    Ok, tu as donc un modèle protéiforme qui ne singularise pas chaque norme.

    Citation Envoyé par eclesia Voir le message
    Comme le modèle ne colle pas a la norme je ne peux pas l'annoter, alors la solution est de transformer ses classes vers des classes annotées pour une norme et une version donné, ce qui peut en faire beaucoup. c'est le choix qu'a fait la société.
    C'est aussi le choix que nous avons fait. C'est pas que je sois un adorateur de jaxb, mais le choix Jaxb peut se défendre pour plusieurs raisons dont une est qu'il permet une réification du schema xml dans le code, donc de tirer bénéfice du compilateur pour le binding, il est bidirectionnel et il est global (et non séquentiel). Après, effectivement, c'est lourd et consommateur de mémoire.

    En outre, avec des outils comme hyperjaxb, il est possible à la fois de créer un maping xml-objet, mais aussi objet-relationnel. Ce qui est très intéressant.

    Citation Envoyé par eclesia Voir le message
    Personnellement, j'aurais fait des parseur stax, ce qui serait beaucoup plus performant, moins couteux en mémoire mais qui aurait prit plus de temps a réaliser.
    A réaliser, à mettre au point et à maintenir. En outre, il me semble que stax ne gère que les chaines de caractères, ce qui implique de mettre en place des convertisseurs (date, nombres).
    Nous, nous travaillons sur les normes iso 19139. Ecrire un parseur stax de cette norme est inimaginable tellement c'est complexe. Les décideurs sont peut-être pro-production, mais les informaticiens sont aussi très faignants.

  12. #32
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pour les export j'évite au maximum d'utiliser du code, j'utilise toujours des système de template (freemarker par exemple peu lire un template et y injecter les données :p).
    C'est pas à mettre au même niveau que jaxb. Freemarker c'est du rendu, jaxb du mapping;
    En outre, avec freemarker, tu n'as aucun controle sur la validité de ce que tu produit (à moins de rajouter une couche). Un export xml ou json peut se retrouver foireux sans que tu t'en apperçoive (c'est du vécu).

    Perso, nous utilisons un mapping dozer + jaxb, qui permet l'export/import xml et json sans faute et sans code supplémentaire.

  13. #33
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Perso, nous utilisons un mapping dozer + jaxb, qui permet l'export/import xml et json sans faute et sans code supplémentaire.
    merci pour le truc de mon coté, pour tous nos format d'export, c'est à chaque fois des formats bidouille a moitié pas documenté exigés par un service externe et, (là aussi c'est du vécu) a la question "vous avez un DTD, un serveur ou n'importe quoi pour pouvoir tester la validité des données par rapport au format approximativement documenté que vous utilisez?" j'ai eu une réponse variant autour de
    vous nous envoyez le fichier, on l'ouvre dans excel pour regarder si il y a des erreur flagrante, ensuite on l'importe dans notre serveur de test pour voir si tout va bien et finalement, on l'importe sur le serveur SAP si ca fonctionne. Si il y a une erreur ou vous rappel
    Devant ce genre de réponse, je me sens parfois désespéré (quand c'est pas des format impossibles à respecter car il y a incohérence entre le format (théorie) et les données réelles (la pratique))

Discussions similaires

  1. [Débat] La multiplication des annotations
    Par nicorama dans le forum Langage
    Réponses: 0
    Dernier message: 09/04/2009, 13h38
  2. Multiplication des enregistrements
    Par crovette51101 dans le forum Access
    Réponses: 5
    Dernier message: 29/12/2006, 09h18
  3. [JDK 5.0] Intérêt des annotations ??
    Par pitoubicou dans le forum Langage
    Réponses: 7
    Dernier message: 04/05/2006, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo