Java und Python

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Flotrix
User
Beiträge: 7
Registriert: Montag 11. August 2014, 13:45

Hey ho,

hab da mal ne Frage welche Möglichkeiten hab ich neben Jython?
Ich habe eine Python Programm und darauf soll eine GUI aufgebaut werden. Wie gehe ich da am besten vor?

Mit freundlichen Grüßen
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Flotrix hat geschrieben: Ich habe eine Python Programm und darauf soll eine GUI aufgebaut werden. Wie gehe ich da am besten vor?
Du schnappst Dir ein Framework / Toolkit, das GUIs beinhaltet, wie etwa Qt (PyQt oder PySide) oder Gtk und legst los :twisted:

Sorry, aber ich kapiere nicht, wo hier Java reinspielt! Da musst Du ein wenig ausführlicher werden...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Flotrix
User
Beiträge: 7
Registriert: Montag 11. August 2014, 13:45

Ja das wäre natürlich auch eine Option ;) aber möchte mir doch auch noch die Option offen halten eine GUI auf Java-Basis zu bauen.

Prinziell soll ich erstmal vergleichen die Vor und Nachteile zwischen einer Java Oberfläche und einer Pyhton Oberfläche auf einer Python-Basis.
Flotrix
User
Beiträge: 7
Registriert: Montag 11. August 2014, 13:45

Die aktuelle grafische Oberfläche wurde mit Hilfe von GTK erstelllt und ist nicht sonderlich schön da kenne ich aus der Java-Welt doch ein paar mehr Möglichkeiten und die dann auch ansprechender aussehen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Naja, Schönheit wird bei GUI-Toolkits idR. über Style-Dateien gelöst. Ich habe früher zwar nur mit Qt gearbeitet, aber da sahen die Programme unter meiner KDE-Oberfläche hübsch aus :-)

Speziell Java hat in Sachen Desktop-GUI keinen so dollen Ruf; ich denke erst mit JavaFX 8 wird sich das evtl. ändern.

Was spricht denn gegen Jython? Damit kannst Du die Funktionalität *direkt* aus Deinem Java-Programm aufrufen. Ansonsten musst Du "künstlich" irgend eine Art von Interprozess-Kommunikation einbauen. Imho keine dolle Idee, wenn es sich a priori *nicht* um eine verteilte Anwendung handelt!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Flotrix: Kannst Du da konkreter werden was Du von Java kennst und was es für Gtk nicht gibt? Es gibt echt einen Haufen Software und den GNOME-Desktop die auf Gtk als Toolkit aufbauen und ich hatte bis jetzt nicht den Eindruck als wenn denen was fehlt was es in Java-Programmen gibt. Vielleicht heisst das bei Gtk nur einfach anders oder wird konzeptionell anders gelöst, und man muss nur herausfinden wie.
Flotrix
User
Beiträge: 7
Registriert: Montag 11. August 2014, 13:45

Das reicht mir im Prinzip schon als Antwort. Wie gesagt wollte erstmal ne Machbarkeitsstudie machen. Und dann lautet da halt die Antwort Pyhton komplett, Jython und andere Kombination schwer zu realisieren.
Spoeziell auf die einzelnen Komponenten wollte ich erstmal gar nicht eingehen.
Aber vielen Dank euch beiden :)
BlackJack

@Flotrix: Ob das jetzt wirklich schwer zu realisieren ist hängt nicht unwesentlich von dem Programm ab, welches Du in Python geschrieben hast. Wenn das unter Jython problemlos läuft, dann kannst Du damit eine GUI schreiben. Wenn es nicht wirklich interaktiv ist, sondern zum Beispiel eine Kommendozeilen-API hat, kann man auch in Java eine GUI schreiben wo man die Argumente eingeben kann und das dann das Python-Programm auruft. Schwieriger wird es eigentlich nur wenn Java und Python miteinander Kommunizieren müssen. Aber auch das ist nicht unlösbar. Da könnte man irgendeinen RPC-Mechanismus (JSON-RPC) oder eine REST-API vom Python-Programm zur Verfügung stellen und die von Java aus ansprechen. Oder auch von anderen Programmiersprachen.
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Dazu kommt noch dass Jython ein Python interpreter geschrieben in Java ist, also von Grund aus arg langsam.
Die Entwicklung ist dem modernen Python immer recht lang hinterher.
Atomkraftwerkaktienbesitzer
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ene Uran hat geschrieben:Dazu kommt noch dass Jython ein Python interpreter geschrieben in Java ist, also von Grund aus arg langsam.
Das "also" kann ich so nicht nachvollziehen!
Ene Uran hat geschrieben: Die Entwicklung ist dem modernen Python immer recht lang hinterher.
Das stimmt natürlich zum Teil.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

Das ”also” sehe ich auch nicht als zwingend gegeben an. Es gibt Java-Implementierungen mit brauchbaren JIT-Compilern, die dann durchaus an C Code heran kommen, aufgrund zusätzlicher Laufzeitinformation vor dem Kompilieren stellenweise sogar besseren Code erzeugen können als ein Compiler der nur den Quelltext kennt. Das erkauft man sich natürlich durch die Kompilierung zur Laufzeit, aber von Grund auf arg langsam ist Java eigentlich nur wenn man einen reinen Bytecode-Interpreter verwendet. Oder zu wenig Arbeitsspeicher hat. :-)
Flotrix
User
Beiträge: 7
Registriert: Montag 11. August 2014, 13:45

Hab nochmal ne Frage.

Wie schaut es eigentlich am Ende, wenn ich daraus eine ausführende Datei erstellen will. Bei Java bekomme ich eine Jar-Datei und unter Python kann ich mit py2exe mit halt die entsprechende Exe-Datei erstellen lassen.

Wie schaut es jetzt bei Jython aus?
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ene Uran hat geschrieben:Dazu kommt noch dass Jython ein Python interpreter geschrieben in Java ist, also von Grund aus arg langsam.
Jython kann aber auch Java-Klassen importieren. Und die laufen dann mit der Ausführungsgeschwindigkeit eines Java-Programms.

Umgekehrt würde ich aber davon abraten, nur wegen der GUI den Overhead einer Java-Umgebung als Abhängigkeit zu fordern. Schließlich gibt es in dem Bereich diverse gängige Lösungen für Python, die ohne Java auskommen.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Also ich finde als GUI würde ich doch weder Java noch GTK verwenden. Java ist unter Linux scheiße, GTK ist unter Windows absolut unbrauchbar (das unbrauchbar kann man im Grunde nicht mal in Worte fassen, so unterirdisch schlecht ist GTK unter Windows).

Im Grunde bleibt da doch echt nur PyQt übrig. Das sieht überall halbwegs brauchbar aus. Man hat zumindest keine Totalausfälle.

Oder eventuell noch WxWidgets.
BlackJack

@Hellstorm: Warum ist Gtk unter Windows unbrauchbar? Und Java unter Linux schlecht?
Antworten