Portal > Foren > Java > Allgemeine Java-Programmierung > uncomp. sourcecode zur laufzeit ausführen?
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 11.05.2005, 00:23 Nach oben    #1
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard uncomp. sourcecode zur laufzeit ausführen?

Hallo Forum,

funktioniert es eigentlich das ich uncompilierten source-code zur laufzeit ausführe?

oder gibt es eine möglichkeit den code aus dem programm heraus compilieren zu lassen?

Das Problem ist, dass ich einem benutzer die möglichkeit geben möchte, z. B. auf einem Buttondruck eigenen code aufzurufen, der direkt einfluß auf das zur laufzeit geladene programm haben soll.

Kleines Beispiel.

Ein JFrame (frame)
in dem Frame:
1 TextArea (textarea)
1 TextFileld (textfield)
1 button (button)

der benutzer soll jetzt in die textarea code eingeben können der vom Programm zur Laufzeit ausgeführt werden kann, das Programm läuft logischerweise schon.
Der Code soll ausgeführt werde solbald der User den button drückt

der user tippt in die textarea:
tesfield.setText("Hallo Welt");

und drück den Button
nun soll auch wirklich Hallo Welt in dem Textfield auftauchen.

Der Benutzer könnte aber auch tippen
this.dispose();

und zack, das Frame wäre zu.

Wie bringe ich aber das Programm dazu den Code auszuführen?

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 01:27 Nach oben    #2
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 432
Standard

Du stellst immer Fragen. Ich kann mir schwer vorstellen, dass das irgendwie geht. Du könntest natürlich die möglichen Befehle abfangen und mit implementieren. Aber für alle Kommandos wäre das wohl etwas viel.

Einen einzelnen Befehl kann man ja sowieso schlecht in ein laufendes Programm einbinden.
__________________
Denk mal darüber nach...

Lars

ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen.
www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de
Sym ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 07:22 Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

Scriptbarkeit in Programmen kannt du vermutlich mit Jython erreichen - das ist ein Python-Interpreter in Java und so. Ich würde auf jeden Fall mal in die Richtung suchen (aber ehrlich gesagt habe ich keine Ahnung was Jython alles genau kann und wofür es gedacht ist/war )

Oder mit irgend einer anderen Scriptsprache im Zusammenhang mit Java - aber eher weniger mit Java-Code selber.

MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM
"We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth
peschmae ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 09:20 Nach oben    #4
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Zitat:
Zitat von Sym
Du stellst immer Fragen.
Och komm, manchmal versuche ich auch antworten zu geben


Wahrscheinlich werde ich die Befehle die man anwenden kann selber im Programm selbst abfangen und auswerten.
Ist ja nicht so schwer die Befehle zu interpretieren.

Aber es ist nun mal nötig in einem "Formulargenerator" auch Aktionen für die Buttons hinterlegen zu können

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 10:50 Nach oben    #5
LordOfCodes
Gast
 
Beiträge: n/a
Standard

Hi

Hab HIER folgendes gefunden:

Zitat:
PROGRAMMATIC INTERFACE
The com.sun.tools.javac.Main class provides two static methods to invoke the compiler from a program:

public static int compile(String[] args);
public static int compile(String[] args, PrintWriter out);

The args parameter represents any of the command line arguments that would normally be passed to the javac program and are outlined in the above Synopsis section.

The out parameter indicates where the compiler's diagnostic output is directed.

The return value is equivalent to the exit value from javac.

Note that all other classes and methods found in a package whose name starts with com.sun.tools.javac (informally known as sub-packages of com.sun.tools.javac) are strictly internal and subject to change at any time.
Also bei 1.5 ists com.sun.tools.javac.Main
und bei 1.4 ists sun.tools.javac.Main

Greets
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 11:51 Nach oben    #6
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 432
Standard

Das ist ja mal interessant. Was das für Möglichkeiten bietet. Aber ich habe eigentlich zu viel um die Ohren, als dass ich dafür jetzt noch Zeit aufbringen kann.
__________________
Denk mal darüber nach...

Lars

ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen.
www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de
Sym ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 13:25 Nach oben    #7
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

@ Lord

Vielen Dank!
Das ist ja mal ungalaublich was man hier so erfährt wenn man seltsame Sachen fragt.
Werd das direkt mal im Programm ausprobieren.

Klingt auf jeden Fall vielversprechend.

...

Allerdings brauch dann auch jeder Benutzer ein JDK auf seinem System....

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 21:23 Nach oben    #8
Lunatic Pandora
Gast
 
Beiträge: n/a
Standard

Ich glaube, ich hab dich nicht richtig verstanden, aber hast du dir die Klassen "RunTime" und "Process" schon angeschaut?

Gruß,
Bastian
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 22:18 Nach oben    #9
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Zitat:
Zitat von Lunatic Pandora
Ich glaube, ich hab dich nicht richtig verstanden, aber hast du dir die Klassen "RunTime" und "Process" schon angeschaut?
Die Klassen sind mir durchaus bekannt, aber wie sollten Sie mir hier helfen können?
Bin heute etwas langsam, helf mir mal.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.05.2005, 22:50 Nach oben    #10
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.135
Standard

http://www.beanshell.org

Schätzungsweise ist das genau das, was du suchst.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 01:40 Nach oben    #11
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Zitat:
Zitat von TheDragonMaster
http://www.beanshell.org

Schätzungsweise ist das genau das, was du suchst.
Eigentlich ist es genau das richtige, aber gibt es auch die Möglichkeit damit meine Applikation zur Laufzeit zu ändern, ohne die Objekte explizit zu übergeben?

Also so in der Art:

Application:
PHP-Code:
Class Test extends JFrame {

    
JTextField jtf = new JTextField(20);
    
Interpreter i = new Interpreter;

    public 
Test {
        
add(jtf);
        
pack();
        
setVisible(true);
        
i.source("test.bsh");
    }

und folgendes Script in der test.bsh:
PHP-Code:
jtf.setText("Hallo Welt"); 
Also wenn ich das richtig verstehe, dann könnte ich das Textfeld vor dem Ausführen des Scripts an den Interpreter übergeben und nach dem Ausführen des Scripts wieder auslesen, aber bei dem Programm das ich schreiben will wäre diese Methode außerordentlich aufwendig, um nicht zu sagen kaum umsetzbar.

Gibt es eine Möglichkeit den Interpreter so einzubinden, dass das Script direkt auf meine Variablen und Objekte in der Applikation zugreifen kann?

Vielen Dank für deine Hilfe!

Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 08:24 Nach oben    #12
LordOfCodes
Gast
 
Beiträge: n/a
Standard

@dragon master
Hey vielen Dank, genau so etwas suche ich schon seit langem!
Das Ding ist genial!
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 09:16 Nach oben    #13
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.135
Standard

Du kannst einfach die Variablen an den Interpreter übergeben und dann deinen Code verwenden.
Ist wirklich kein Problem, du musst danach nichts ändern, also nur im Interpreter registrieren und fertig.

@LordOfCodes: Kein Problem.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 10:54 Nach oben    #14
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Zitat:
Zitat von TheDragonMaster
Du kannst einfach die Variablen an den Interpreter übergeben und dann deinen Code verwenden.
Ist wirklich kein Problem, du musst danach nichts ändern, also nur im Interpreter registrieren und fertig.

@LordOfCodes: Kein Problem.

Darf ich für mein obiges Beispiel um einen klein wenig Beispielcode bitten?
Dann kann ich direkt anschauen ob sich Beanshell als Interpreter für einen Formulargenerator eignet.

Wäre wirklich suber von dir.

Ich hätte zum Beispiel ein Problem wenn ich dir übergebene Variable nach auslesen des Scripts erst wieder zurückholen müßte.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 12:23 Nach oben    #15
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.135
Standard

Code:
class Test extends JFrame {

    JTextField jtf = new JTextField(20);
    Interpreter i = new Interpreter;

    public Test {
        add(jtf);
        pack();
        setVisible(true);
        i.set("jtf", jtf);
        i.source("test.bsh");
    }
}
Code:
// Code in test.bsh
jtf.setText("Hallo Welt");
Nach dem Parsen steht dann "Hallo Welt" im Textfeld.

Ich benutze Beanshell z.B. für mein Action-Framework (Teil von PgsSwing). Vereinfacht wirklich vieles und ist einfach zu benutzen.

Wenn's nicht unbedingt Java sein muss kannst du dir auch mal Jython, Rhino und wie-sie-nicht-alle-heißen angucken. Auf IBM gibt es einen Bereich für Scriptsprachen in Java. Auch sehr nett.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 12:36 Nach oben    #16
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Ui, na wenn das wirklich so einfach funktioniert wäre ja super.

Ich würde schon ganz gerne bei Java bleiben, ich möchte nämlich einen Builder für JFrames erstellen, die auf eine Datenbank zugreifen.
Man bastelt sich also die Frames zusammen, das Programm speichert die Daten in einer XML-Datei und mit einem "Run-Tool" können diese später wieder angezeigt werden.
Das Funktioniert soweit auch ganz gut, ich habe nur, logischerweise, ein Problem dem Benutzer zu ermöglichen eigene Aktionen auf einen Button zu legen.
Wenn das wirklich so funktioniert wie du sagst, dann brauche ich den Benutzer eigentlich nur den Code der innerhalb des ActionListeners stehen soll eingeben lassen, sorge dafür, dass das Programm alle nötigen Daten an den Interpreter übergibt und kann den dann entsprechend ausführen lassen.
Werde das auf jeden Fall versuchen.

Nochmal danke!

Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sourcecode von Klassen aus Java Native Interface (JNI) xyz Allgemeine Java-Programmierung 0 22.11.2005 10:21
java programm ausführen alekz Allgemeine Java-Programmierung 4 26.10.2004 01:01


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45