charger une classe dynamiquement - Java - Programmation
Marsh Posté le 20-05-2008 à 09:51:57
ReplyMarsh Posté le 20-05-2008 à 10:42:41
flo850 a écrit : je suis pas sûr que tu prennes le problème dans le bon sens |
que me proposerais-tu sachant que je dois avoir les étapes suivantes:
fonction écrite par l'utilisateur sous forme de string: f(x)=2x+cos(x) par exemple
je dois créé la méthode computeFunction(double x) à partir de cette string et l'utiliser fréquement dans mon programme
Marsh Posté le 20-05-2008 à 10:49:13
une classe qui se charge de lire la fonction et de produire un arbre d'exécution ( en prenant en compte la priorité des opérateurs, les parenthèse, .... ) , en fonction d'une grammaire définie
une classe qui se charge d'exécuter cet arbre
en C , il y a LEX et YACC qui permettent de faire ça, des équivalent existent surement en java
Marsh Posté le 20-05-2008 à 11:28:02
flo850 a écrit : une classe qui se charge de lire la fonction et de produire un arbre d'exécution ( en prenant en compte la priorité des opérateurs, les parenthèse, .... ) , en fonction d'une grammaire définie |
Oui j'avais pensé aux arbres mais ça n'est pas réalisable dans ce projet. Calculer une fonction à partir d'un arbre est beaucoup plus couteux que de l'avoir directement codée sous forme de méthode du style return f=2*c+Math.cos(x);
Pour détailler un peu plus, j'utilise ma fonction dans une heuristique qui dure environ 6 heures et qui appelle la fonction en permanence ( fonction de fitness ). Il me la faut donc coder de sorte qu'elle soit la plus rapide possible à executer ( la fonction ).
Marsh Posté le 20-05-2008 à 11:30:15
ReplyMarsh Posté le 20-05-2008 à 11:34:19
Bah fais pas de Java alors ... travailler avec un arbre pour des petites formules, ça ne doit pas avoir un si gros surcout que ça avec le JIT.
Sinon y a javax.tools.
Marsh Posté le 20-05-2008 à 09:21:49
Bonjour, je réalise une petite appli qui doit à un moment généré du code:
L'utilisateur entre sa formule mathématique au clavier, un parser génère une classe calcul.java qui contient les méthodes générées à partir de la fonction de l'utilisateur. Je désire maintenant transformé cette classe en bytecode durant l'exécution de cette dernière et charger la classe dans mon appli pour l'exécuter. Je n'ai pas trouvé de tuto alors ma question est simple: comment faire, avez-vous un petit exemple (ou tuto) sous le coude?
Par avance merci
Message édité par godbeni le 20-05-2008 à 09:22:11