Seite 1 von 1

Jython-Java-Applets

Verfasst: Dienstag 20. Januar 2009, 17:14
von abgdf
Hallo,

das sollte eigentlich eine Frage werden, aber ich hab' den Fehler schon selbst gefunden (hatte in der html-Datei (s.u.) "archives" geschrieben). Will's aber trotzdem mal posten, dann halt als Tip:

Nach dem Hinweis von numerix

http://www.python-forum.de/topic-17469.html

hab' ich mir mal Jython angesehen. Klappt auch soweit.
Also, ich habe Sun-Java JDK 1.6, Jython 2.2.1, Mozilla 1.7 mit Plugin des JDKs (läuft).
In "../jython/Demo/applet" gibt es eine Demodatei "HelloWorld.py".

Code: Alles auswählen

jython HelloWorld.py
ergibt ein kleines awt-Fenster mit
Hello from Jython 2.2.1!

Code: Alles auswählen

jythonc --core --deep --jar HelloWorld.jar HelloWorld.py
erzeugt eine Datei "HelloWorld.jar" (jythonc hatte bei mir in früheren Versionen noch Probleme, die nun behoben zu sein scheinen).
Nun schreibe ich im aktuellen Verzeichnis eine Datei "HelloWorld.html" mit dem Inhalt:

Code: Alles auswählen

<html>
<body>
<applet code="HelloWorld.class" archive="HelloWorld.jar" width = 500 height = 105>
</applet>
</body>
</html>
schalte im Browser Java an und starte mit

Code: Alles auswählen

mozilla HelloWorld.html
Ergebnis: Klappt (jetzt).

Viele Grüße

Verfasst: Dienstag 20. Januar 2009, 17:41
von sma
Wenn `--deep` macht, was ich vermute, ist das aber nicht gerade eine schlanke Lösung. Suns neue moderne Lösung für Applets wäre JavaFX.

Wenn's Python sein soll: Wäre es nicht toll, wenn es einen Python-Interpreter für Flash gäbe? Ich war mal kurz davor, sowas zu beginnen, doch leider ist das ein etwas größeres Unterfangen. Zwei Ansätze könnte man probieren: a) pyc-Dateien einlesen und mit einem eigenen Interpreter die ~100 Bytecodes auswerten. Verzichtet man auf die __*__-Methoden, ist das ein überschaubares Projekt. b) Man übersetzt Python-Quelltext in ActionScript-Code und kompiliert diesen dann ganz normal. Man könnte auch versuchen, ABC (ActionScript Bytecode) zu erzeugen, wäre aber IMHO mehr Aufwand.

In beiden Fällen müsste man sich noch überlegen, wie man mit Flash-Funktionen interagieren kann und wie man derartige Programme am besten auch ohne Flash-VM ausführen kann. Vielleicht ist flex-pypy einen Blick wehrt. Ansonsten gibt es ein Ruby-Projekt, von dem man abgucken kann.

Sorry für OT,
Stefan

Verfasst: Mittwoch 21. Januar 2009, 08:47
von mkesper
sma hat geschrieben:Wenn's Python sein soll: Wäre es nicht toll, wenn es einen Python-Interpreter für Flash gäbe?
Wäre ein Interpreter in Javascript vermutlich noch flexibler einsetzbar und dank der Beschleunigung, die in letzter Zeit erreicht wurde, vielleicht sogar sinnvoll nutzbar?

Verfasst: Mittwoch 21. Januar 2009, 09:11
von HerrHagen
Das wäre doch auch mal eine gute Aufgabe für das PyPy-Projekt.
Deren Ziel ist doch die automatische Generierung von Interpretern. Sie haben auch schon sowas gemacht: Siehe hier

Verfasst: Mittwoch 21. Januar 2009, 20:21
von HerrHagen
Mir ist grad aufgefallen, dass es doch schon mehrere Lösungen für das Problem gibt...
Wäre das nicht auch eine Lösung?

Verfasst: Sonntag 25. Januar 2009, 10:34
von sma
mkallas hat geschrieben:
sma hat geschrieben:Wenn's Python sein soll: Wäre es nicht toll, wenn es einen Python-Interpreter für Flash gäbe?
Wäre ein Interpreter in Javascript vermutlich noch flexibler einsetzbar und dank der Beschleunigung, die in letzter Zeit erreicht wurde, vielleicht sogar sinnvoll nutzbar?
Ich hatte das auf der Basis von v8 versucht und die Performance wahr sehr enttäuschend. v8 selbst ist deutlich schneller als Python, wenn man das Standardbeispiel fib() ausprobiert, doch der Aufwand, die Python-Aufrufsemantik nachzuahmen ist so groß, dass es sich leider nicht lohnt.

Entweder man verzichtet auf die __*__-Semantik und hat dann ein JavaScript mit Python-Syntax oder aber man muss die JavaScript-Engine-Implementierung anpassen und dann läuft's natürlich nicht mehr im Browser.

Stefan