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

Langage Java Discussion :

Créer du code java avec un programme en code java et utilisé par ce même programme


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 80
    Par défaut Créer du code java avec un programme en code java et utilisé par ce même programme
    lu,

    Est il possible de faire créer du code java par un programme en code java et utilisé par ce même programme ?
    Du code java avec des conditions, ..., et pas du code binaire

    Que le code se change et se "perfectionne" pour faire simple (à l'inverse du virus).
    Du genre lorsqu'il y a exception, il repère et corrige de lui même selon des impératifs initiaux, par copie de l'original, ajout ou suppression de code dans l'original et remplacement de l'original.

    Dans ce cas, qu'elle est la meilleure façon de le mettre en place ?

    Merci
    @+

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    C'est tout à fait possible, mais ce n'est pas simple. Premièrement, parce que lorsqu'une classe est chargée par un classloader standard, elle est chargée définitivement. Pour la remplacer, il faudra utiliser non seulement un classloader spécial (capable de décharger et recharger des classes), mais faire du code permettant aux autres classes qui pourraient avoir des références sur les objets existants d'une classe rechargée de changer toutes leurs références vers ces objets vers les nouveaux, tout en conservant les états de ces classes. On peut déplacer la complexité en jouant avec des interfaces, des wrappers, de la réflexion, mais ça reste complexe.
    Par ailleurs, il faudra pouvoir non seulement compiler mais éventuellement décompiler, et en tout cas parser du code Java pour pouvoir le modifier
    Et je ne parle pas des algorithmes "d'amélioration".
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Non-obstant les problèmes cités ci-dessus, il est possible d'invoquer l'API du compilateur lorsque le JDK es installé. Il est de plus possible d'invoquer l'API de JShell pour disposer d'un interpréteur plus dynamique.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Ca ressemble à ça ce que tu essaye de faire.
    Bon courage

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Drowan Voir le message
    Ca ressemble à ça ce que tu essaye de faire.
    Ce genre d'IA n'implique pas forcément du code automodifié ou autogénéré. Un réseau de neurones, ce sont des données, ce qui se gère sans problème techniques particuliers en Java, et un réseau de neurones qui produit une réseau de neurones, également (je ne dis pas que c'est simple ou facile pour autant, mais il n'y a pas de techniques très spéciales propres au fonctionnement de Java et de la JVM à connaître). Il y a également des solutions par algorithmes génétiques d'ailleurs qui permettent d'avoir un programme qui évolue sans pour autant que le code se modifie. Et on pourra aussi citer de simple asservissements fondés sur des algorithmes mathématiques simples qui s'adaptent jusqu'à se stabiliser, sans pour autant que le code se modifie.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Oui bien sûr.

    Ce que je voulais relevé c'est que ça me parait très compliqué comme idée.
    Dans le sens où, si j'ai bien compris, aristeas cherche a faire un programme (appelons le correcteur) qui lorsqu'on lui fournit un autre programme (appelons le sujet), l’exécute, observe son comportement. Puis ensuite le correcteur en déduit les bugs et les corrigent. Puis recompile et vérifie les corrections. Puis applique des optimisations, etc. A ma connaissance un tel programme n'existe pas, sinon je pense qu'on en aurait entendu parler et que tout le monde utiliserait ça... Mais je peux me tromper.
    En voyant la problématique, j'ai impression que le correcteur doit soit connaitre toutes les erreurs possible à l'avance afin de trouver les bugs et les corriger (mais je crois pas qu'on puisse lister tout les bugs possibles). Soit apprendre au fur et à mesure qu'il rencontre des erreurs et réussi à les résoudre. On se rapproche d'une IA capable de comprendre/corriger du code.
    C'était dans ce sens là où je faisais ma remarque, mais encore une fois je peux être à côté de la plaque.

    Après si aristeas tu arrives à faire un tel correcteur bravo

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Drowan Voir le message
    snip
    Je pense surtout qu'il voudrait savoir si c'est faisable. En revanche, s'il doit vraiment développer une application, l'autre solution pour laquelle il demandait des renseignements me semble la solution vers laquelle il devrait s'orienter amha.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    snip 2
    Du coup on se dirigerait plutôt dans le premier cas que j'ai décris. A savoir on définirait certaines règles (via fichiers externes) que le correcteur appliquerait au sujet ?

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Drowan Voir le message
    Du coup on se dirigerait plutôt dans le premier cas que j'ai décris. A savoir on définirait certaines règles (via fichiers externes) que le correcteur appliquerait au sujet ?
    C'est à @Aristeas de nous dire ce qu'il a en tête, finalement.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 80
    Par défaut code dans code
    lu,

    C'est juste un sujet de reflexion parmi d'autres.
    En fait le code informatique, actuellement, me semble trop limité à une "simple" gestion des données : la logique (code) est plus ou moins fixe alors que les données (base données) peuvent évoluer.
    Au lieu d'être un équilibre entre chemin logique et données.
    Résultat il faut gérer la logique comme une donnée. Et je trouve cela dommage.

    Donc effectivement je pense que la meilleure technique actuellement, si je veux rendre "évolutif" mon code Java, serait de créer un lecteur de code "externe" (avec un parser perso).
    Donc recréer un "langage informatique" dans le langage informatique. Super redondant.

    Ou bien je crée mon propre langage informatique.


    En tout cas, merci pour vos messages

    Et si une technique, qui n'est pas une usine à gaz, vous vient à l'esprit, je suis preneur.

    @+

  11. #11
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    j'ai pas tout compris ... mais un DSL (Domain Specific Language) en Groovy serait-il une solution?
    (j'ai fait des trucs très sophistiqués de configuration dans un grand projet avec ça)

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/06/2014, 12h14
  2. Réponses: 14
    Dernier message: 26/01/2014, 00h46
  3. Réponses: 5
    Dernier message: 14/05/2008, 18h14
  4. Créer une classe .java avec un code java
    Par demcoul dans le forum Langage
    Réponses: 10
    Dernier message: 03/01/2008, 00h06
  5. Lire et modifier un port com utilisé par un autre programme
    Par KBNOT-PRC600 dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 17h40

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