147 Stimmen

Ruft Python in Java auf?

Ich frage mich, ob es möglich ist, Python-Funktionen von Java-Code aus mit Jython aufzurufen, oder ob es nur dafür gedacht ist, Java-Code von Python aus aufzurufen?

7voto

subes Punkte 1816

Hier ist eine Bibliothek, die es Ihnen ermöglicht, Ihre Python-Skripte einmal zu schreiben und zur Laufzeit zu entscheiden, welche Integrationsmethode (Jython, CPython/PyPy über Jep und Py4j) verwendet werden soll:

https://github.com/subes/invesdwin-context-python

Da jede Methode ihre eigenen Vor- und Nachteile hat, wie im Link erklärt.
(3 Module: jep, Py4J, jython)

6voto

Anurag Uniyal Punkte 81337

Es hängt davon ab, was du mit Python-Funktionen meinst. Wenn sie in cpython geschrieben wurden, kannst du sie nicht direkt aufrufen. Du musst JNI verwenden. Wenn sie jedoch in Jython geschrieben wurden, kannst du sie einfach von Java aus aufrufen, da Jython letztendlich Java-Bytecode generiert.

Wenn ich jetzt sage, dass sie in cpython oder jython geschrieben sind, macht das nicht viel Sinn, denn Python ist Python und der meiste Code läuft auf beiden Implementierungen, es sei denn, du verwendest spezifische Bibliotheken, die auf cpython oder Java basieren.

Sieh hier, wie du den Python-Interpreter in Java verwenden kannst.

5voto

Timo Punkte 4974

Je nach Ihren Anforderungen könnten Optionen wie XML-RPC nützlich sein, das verwendet werden kann, um Funktionen remote in praktisch jeder Sprache, die das Protokoll unterstützt, aufzurufen.

4voto

alex Punkte 1594

Jython hat einige Einschränkungen:

Es gibt eine Reihe von Unterschieden. Erstens können Jython-Programme keine in C geschriebenen CPython-Erweiterungsmodule verwenden. Diese Module haben normalerweise Dateien mit den Erweiterungen .so, .pyd oder .dll. Wenn Sie ein solches Modul verwenden möchten, sollten Sie nach einem gleichwertigen Modul in reinem Python oder Java suchen. Obwohl es technisch machbar ist, solche Erweiterungen zu unterstützen - IronPython macht dies -, gibt es keine Pläne dies in Jython zu tun.

Meine Python-Skripte als JAR-Dateien mit Jython verteilen?

Sie können ganz einfach Python-Skripte (oder bash- oder Perl-Skripte) aus Java heraus mit Runtime oder ProcessBuilder aufrufen und die Ausgabe nach Java zurückgeben:

Ausführen eines bash-Shell-Skripts in Java

Befehlszeile in Java ausführen

java runtime.getruntime() Ausgabe beim Ausführen eines Befehlszeilenprogramms erhalten

3voto

nidhin Punkte 6333

Sie können jede Sprache von Java aus mit Java Native Interface aufrufen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X