Uwe: eval() Methode für Java?

Hallo an alle,
gibt es eigentlich sowas wie die eval() Funktion aus javascript auch in  Java? Bin dazu bisher noch nicht fündig geworden.

Grüße Uwe

  1. Hallo an alle,
    gibt es eigentlich sowas wie die eval() Funktion aus javascript auch in  Java? Bin dazu bisher noch nicht fündig geworden.

    Grüße Uwe

    hallo,
    erkundige dich mal nach "reflektions"

    mfg

    1. Hallo,

      erkundige dich mal nach "reflektions"

      Reflections.
      Und eigentlich ist das nur begrenzt mit "eval()" vergleichbar.

      Gruß
      Slyh

  2. Hi,

    gibt es eigentlich sowas wie die eval() Funktion aus javascript auch in  Java? Bin dazu bisher noch nicht fündig geworden.

    eval() ist m.E. ein typisches Merkmal in Interpreter-Sprachen (wie z.B. Javascript).

    Bei Interpreter-Sprachen steht zur Laufzeit immer der Parser für die Sprache zur Verfügung (der wird ja für die Interpretation des Scripts sowieso benötigt), also kostet es nichts, diesen auch für das Script selbst zur Verfügung zu stellen.

    Bei Compiler-Spracher (wie z.B. Java) steht der Parser üblicherweise nur zur Kompilierungszeit, aber nicht zur Laufzeit, zur Verfügung. Daher haben derartige Sprachen meist keine eval()-Funktion - denn dann müßte der komplette Parser auch zur Laufzeit zur Verfügung gestellt werden.

    Was genau hast Du denn vor, daß Du meinst, eval() zu brauchen?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,

      Bei Compiler-Spracher (wie z.B. Java) steht der Parser üblicherweise nur zur Kompilierungszeit, aber nicht zur Laufzeit, zur Verfügung. Daher haben derartige Sprachen meist keine eval()-Funktion - denn dann müßte der komplette Parser auch zur Laufzeit zur Verfügung gestellt werden.

      Man kann natürlich auf Ebene des kompilierten Codes arbeiten -> http://jakarta.apache.org/bcel/index.html

      Viele Grüße,
      Martin Jung

      1. Hi,

        Bei Compiler-Spracher (wie z.B. Java) steht der Parser üblicherweise nur zur Kompilierungszeit, aber nicht zur Laufzeit, zur Verfügung. Daher haben derartige Sprachen meist keine eval()-Funktion - denn dann müßte der komplette Parser auch zur Laufzeit zur Verfügung gestellt werden.
        Man kann natürlich auf Ebene des kompilierten Codes arbeiten -> http://jakarta.apache.org/bcel/index.html

        Und was hat das mit eval zu tun?
        eval wird ja - wenn überhaupt sinnvoll - dann eingesetzt, wenn der auszuwertende Code erst zur Laufzeit (z.B. aus User-Eingaben) entsteht - da gibt es keinen kompilierten Code.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          Und was hat das mit eval zu tun?

          Dass man zur Laufzeit eine Klasse generieren kann?

          Viele Grüße,
          Martin Jung

          1. Hi,

            Und was hat das mit eval zu tun?
            Dass man zur Laufzeit eine Klasse generieren kann?

            Naja, dazu muß man aber wieder den String parsen - wozu aber der Parser fehlt bzw. selbst mitgebracht werden muß ...

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hi,

              Naja, dazu muß man aber wieder den String parsen - wozu aber der Parser fehlt bzw. selbst mitgebracht werden muß ...

              Wenn man mit z.B. BCEL ein eval()-Äquivalent in Java implementieren möchte, benötigt man _einen_ Parser (dies trifft jedoch z.B. auch auf XML-Verarbeitung zu). _Der_ Java-Parser hingegen ist nicht zwangsläufigerweise notwendig.

              Bevor ich meine Haarspalterei hiermit beende: Es hat seine (wohlüberlegten) Gründe, warum eine solche Funktionalität keine Entsprechenung in Java-Syntax und -Plattform hat ;-)

              Viele Grüße,
              Martin Jung

              1. Hi,

                Naja, dazu muß man aber wieder den String parsen - wozu aber der Parser fehlt bzw. selbst mitgebracht werden muß ...
                Wenn man mit z.B. BCEL ein eval()-Äquivalent in Java implementieren möchte, benötigt man _einen_ Parser [...]. _Der_ Java-Parser hingegen ist nicht zwangsläufigerweise notwendig.

                Unter eval() verstehe ich, daß dort Code derselben Sprache ausgewertet wird, in der das eigentliche Script/Programm geschrieben ist.
                Im Falle von Java ist also der (bzw. ein) Java-Parser erforderlich.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Hi,

                  ich dann doch nochmal ;-)

                  Unter eval() verstehe ich, daß dort Code derselben Sprache ausgewertet wird, in der das eigentliche Script/Programm geschrieben ist.
                  Im Falle von Java ist also der (bzw. ein) Java-Parser erforderlich.

                  Yep, ich legte die Betonung auf _einen_ Parser. Was in der Praxis bedeutet, dass auf den Zielrechnern die Installation der JRE weiterhin ausreicht - da ich den Java-Parser-für-mein-eval als Teil meiner Anwendung mit ausliefere.
                  Das war doch Dein ursprüngliches pragmatisches Gegenargument, oder (ich gehe davon aus, dass Du ein Java-eval aus prinzipiellen Gründen sowieso nicht gut heißt..)?

                  Viele Grüße,
                  Martin Jung

                  1. Hi,

                    Unter eval() verstehe ich, daß dort Code derselben Sprache ausgewertet wird, in der das eigentliche Script/Programm geschrieben ist.
                    Im Falle von Java ist also der (bzw. ein) Java-Parser erforderlich.
                    Yep, ich legte die Betonung auf _einen_ Parser. Was in der Praxis bedeutet, dass auf den Zielrechnern die Installation der JRE weiterhin ausreicht - da ich den Java-Parser-für-mein-eval als Teil meiner Anwendung mit ausliefere.
                    Das war doch Dein ursprüngliches pragmatisches Gegenargument,

                    Zitat aus meinem ersten Posting in diesem Thread:

                    denn dann müßte der komplette Parser auch zur Laufzeit zur Verfügung gestellt werden.

                    oder (ich gehe davon aus, dass Du ein Java-eval aus prinzipiellen Gründen sowieso nicht gut heißt..)?

                    Ein Java-eval() hab ich bisher genauso oft vermißt wie ein C++ oder C eval(): nie.
                    Aber auch in Sprachen, in denen eval() vorhanden ist, hab ich das noch nicht wirklich gebraucht, es gab andere (bessere) Lösungen.

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                    1. Hi Andreas,

                      Ein Java-eval() hab ich bisher genauso oft vermißt wie ein C++ oder C eval(): nie.
                      Aber auch in Sprachen, in denen eval() vorhanden ist, hab ich das noch nicht wirklich gebraucht, es gab andere (bessere) Lösungen.

                      100%ige Zustimmung.

                      Viele Grüße,
                      Martin