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

API standards et tierces Java Discussion :

[Info][API]Générateur de code


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut [Info][API]Générateur de code
    Bonjour,

    Je suis à la recherche d'une API permettant de générer du code Java et surtout de compiler ce code "à chaud" au cours de l'exécution de l'application principale. Des idées ?
    [ Modéré par vedaer ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre expérimenté
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Par défaut
    Générer du code java, c'est générer du texte, il n'y a pas besoin d'API spéciale.
    Par contre, si tu veux le générer automatiquement à partir d'une autre source, alors il te faudra une API pour lire cette source, comme par exemple un parser XML. A ce moment là, précise nous comment tu veux générer ton code et à partir de quoi.

    Pour le compiler "à chaud", je n'ai jamais entendu parler d'API conçue dans ce but. Mais tu peux peut-être utiliser celle d'un compilateur Open Source.

    Juste par curiosité, que veux-tu faire ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    La commande java est suffisante, il suffit juste de creer un .java correspondant pour chaque classe créée puis de lancer cette commande. Je ne sais pas quel est ton probleme mais peut etre que la reflexivitée pourrait t'interesser si tu cherches à faire des comportements proches des EDI.

  4. #4
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    Ok décrivons plus en détails les choses, j'ai un AST (Abstract Syntax Tree), chacun des noeuds de cet arbre est lié à une fonction, ces fonctions correspondent à des classes Java. Suite à certaines analyses, je souhaite fusionner un certain nombre de noeuds en un seul et générer une fonction unique à partir des fonctions associées aux noeuds fusionnés. Le nouveau noeud sera donc associé à une nouvelle fonction (classe Java) compilée à chaud...

    Voilà en espérant avoir été plus clair.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Je pense en effet que cela est possible mais la recherche des fonctions "redondantes" et la fusion, je vois mal comment automatiser cela. Sinon ton probleme se resout par la modifications des *.java liées au fonctions ciblées, leur recompilation et leur rechargement (ce terme fait bizarre... ) dynamiquement.

    Comme je le disais cela se raproche d'un EDI et certains EDI sont ecrit purement en Java donc c'est possible.

  6. #6
    Membre expérimenté
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Par défaut
    Personnellement, j'écrirais une fonction fusion() qui prend en argument un ensemble de méthodes (voir l'API réflexion). Cette fonction crée une instance d'une classe encapsulant la méthode "fusionnée" en la surchargeant et en appelant les méthodes passées en argument avec la réflexion.

    Un exemple sera peut-être plus clair (API 1.4):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public HotClass fusionne(Vector methods){
        HotClass result = new HotClass(){
            public void hotMethod(){
                for(Iterator i = methods.iterator(); i.hasNext();){
                    Method m = (Method) i.next();
                    m.invoke(...);
                }
            }
        }
        return result;
    }
    C'est un truc comme ça que tu veux faire ? Après tu peux appeler result.hotMethod(). Après tout dépend de la façon dont tu veux fusionner, et il faut aussi voir avec les arguments des méthodes, mais c'est juste une piste.
    En espérant que ça t'aide...

  7. #7
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    [strabest] Je n'avais pas vu le problème sous cet angle mais ça peut etre une piste intéressante

Discussions similaires

  1. Générateur de code API web (beta test)
    Par EricLebottier dans le forum IGN API Géoportail
    Réponses: 11
    Dernier message: 24/01/2012, 20h44
  2. [andromda]Infos sur andromda, générateur de code JAVA
    Par ugos dans le forum EDI et Outils pour Java
    Réponses: 5
    Dernier message: 08/09/2009, 15h30
  3. [Sunopsis] et les ETL générateur de code ?
    Par manuaccess10 dans le forum ODI (ex-Sunopsis)
    Réponses: 5
    Dernier message: 20/12/2006, 12h54
  4. Réponses: 4
    Dernier message: 21/02/2006, 19h45
  5. Est ce que ça existe une api java pour code barre ?
    Par miloud dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 14/04/2005, 17h20

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