charger une classe dynamiquement

charger une classe dynamiquement - Java - Programmation

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  :hello:


Message édité par godbeni le 20-05-2008 à 09:22:11
Reply

Marsh Posté le 20-05-2008 à 09:21:49   

Reply

Marsh Posté le 20-05-2008 à 09:51:57    

je suis pas sûr que tu prennes le problème dans le bon sens


---------------

Reply

Marsh 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

Reply

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  


---------------

Reply

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
 
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  


 
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 ).

Reply

Marsh Posté le 20-05-2008 à 11:30:15    

tua s ce genre de truc sinon :  
http://www.developpez.net/forums/s [...] hp?t=88086
 


---------------

Reply

Marsh 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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed