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 :

L'introspection en Java


Sujet :

Java

  1. #1
    Membre éclairé
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Par défaut L'introspection en Java
    Bonjour,
    J'aimerais avoir votre avis sur le passage suivant :

    l'introspection ne permet pas forcément de modifier le code existant, mais souvent de générer du code à la volée: Typiquement, générer de nouvelles classes qui implémentent une interface donnée
    Je connais très bien le cours de ce chapitre. Je comprends très bien le principe.
    Ce que je cherche c'est une expérimentation, un vécu !( un exemple clair et concret)
    Je suis preneur!
    Merci à vous

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    En Java, l'introspection ne permet pas de modifier l'existant ni de créer. Seulement de voir ou utiliser ce qui existe.

    Il y a des moyens de générer de nouvelles classes dynamiquement, par exemple en produisant leur code source, les compilant et les chargeant à l'aide de ClassLoader.
    Ou bien en implémentant un ClassLoader dont la vocation est de charger des classes que l'on définit dynamiquement.

    Mais ce n'est pas de l'introspection, et c'est diablement compliqué. Je me suis laissé dire qu'il existe des bibliothèques thirdparties qui simplifient tout ça, mais bon, bref, ça fait pas partie des fonctionnalités du langage.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    D'apres ce que je comprends, tu cherches un exemple d'utilisation de l'introspection. L'exemple le plus pertinent qui me vient à l'esprit, c'est d'utiliser l'introspection pour executer des tests unitaires de maniere automatique. Par exemple, parcourir les classes de l'application et chercher des methodes "executeTestUnit" pour automatiser l'execution de ceux-ci.

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Tu peux aussi prendre à peu près n'importe quel framework utilisant du xml (Struts, Hibernate, Spring, etc.), il utilisera de l'introspection pour faire le boulot.

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Ce n'est évidemment pas l'introspection en elle-même qui génère de nouvelles classes, interfaces, …
    mais elle est le premier maillon d'une chaîne d'outils qui permet de le faire.

    L'introspection permettant de connaître les meta informations des classes, une fois combinée avec d'autres techniques, elle ouvre la porte à toutes sortes de manipulations dépendant des meta informations.

    Exemples :
    - traitement des annotations conservées au runtime (configuration dynamique),
    - génération dynamique de proxy (classes implémentant une même interface que l'objet original mais ajoutant des fonctionnalités particulières)
    - sérialisation/marshalling des POJOs (vers XML, JSON, …)
    - etc.

    L'introspection est largement utilisée dans des technologies comme les JavaBeans, l'AOP, les ORMs, … des frameworks comme Spring, etc.
    Pour la génération de byte code dynamique : voir CGLIB, Javassist, ASM, …

    Une suite d'articles :

    Java programming dynamics

  6. #6
    Membre éclairé
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Par défaut
    OUI, c'est pas mal comme exemples.
    Merci à vous tous.
    Cordialement

  7. #7
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Par défaut
    tu peux aussi jeter un oeil à cela:

    http://asm.ow2.org/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Java - Introspection : méthodes héritées
    Par roswellenshort dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2013, 17h10
  2. Introspection sur un fichier .java
    Par Baptiste Wicht dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/11/2007, 09h18
  3. java introspection getField renvoi rien
    Par jeb001 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 13/09/2007, 10h24
  4. Introspection Reflect JAVA
    Par HICMAN dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 30/07/2007, 14h05
  5. introspection dans du code java
    Par trax44 dans le forum Langage
    Réponses: 2
    Dernier message: 08/05/2007, 12h46

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