Gibt es ein Tool, das Python automatisch in Java konvertieren kann? Kann Jython das tun?Automatisierte Python-zu-Java-Übersetzung
Antwort
Es kann kein einfaches Problem sein. Das Bestimmen, wie in Python definierte Klassen in Java typisiert werden, ist wegen der Unterschiede in der Art der Bindungszeit eine große Herausforderung. (duck typing vs. compile time binding).
Und all diese speziellen Methodennamen. __call__ etwas sein, das wirklich sorgfältig verwaltet werden muss. –
Es gibt einen Übersetzer namens [P2J] (https://github.com/chrishumphreys/p2j), der eine Teilmenge von Python in Java konvertieren kann. Mein Projekt [universal-transpiler] (https://github.com/jarble/transpiler) wurde für den gleichen Zweck geschrieben, aber es übersetzt auch Python in C#, Java, JavaScript und mehrere andere Sprachen. –
Ihre Frage zu klären:
aus dem Quellcode Python Java-Quellcode? (Ich glaube nicht)
.. oder aus Python-Quellcode zu Java Bytecode? (Jython tut dies unter der Haube)
Ja, es konvertiert in Java-Quelle. von ihrer Seite (http://www.jython.org/archive/21/docs/jythonc.html): Das jythonc-Tool generiert tatsächlichen Java-Quellcode und ruft dann einen Java-Compiler über diesen Quellcode auf, um die .class-Dateien zu erstellen – KIC
Eigentlich ist dies kann oder auch nicht viel helfen, aber man könnte ein Skript schreiben, die eine Java-Klasse für jede Python-Klasse erstellt, einschließlich der Methoden-Stubs, die Python-Implementierung des Verfahrens in der Javadoc platzieren
In der Tat Das ist wahrscheinlich ziemlich einfach in Python zu knacken.
Ich arbeitete für ein Unternehmen, das einen Port zu Java von einem großen Smalltalk (ähnlich wie Python) -System übernahm und das ist genau das, was sie taten. Das Ausfüllen der Methoden war manuell, aber von unschätzbarem Wert, weil es dich dazu brachte, wirklich darüber nachzudenken, was vor sich ging. Ich bezweifle, dass eine Brute-Force-Methode zu einem schönen Code führen würde.
Hier ist eine weitere Möglichkeit: Können Sie Ihren Python einfacher in Jython konvertieren? Jython ist nur Python für die JVM. Es kann möglich sein, einen Java-Decompiler (z. B. JAD) zu verwenden, um dann den Bytecode wieder in Java-Code umzuwandeln (oder Sie möchten vielleicht nur auf einer JVM laufen). Ich bin mir da nicht sicher, vielleicht hätte jemand anderes eine bessere Idee.
Die JAD-Lösung klingt wie ein Gewinner. Vielleicht könnten Sie Ihre Antwort bearbeiten, um diese Lösung zu zeigen. –
Ich bin nicht klar, dass die JAD-Lösung tatsächlich praktikabel ist, da ich nicht weiß, ob Jython-Klassen in .class-Dateien konvertiert werden oder ob sie interpretiert werden, indem sie zur Laufzeit in Bytecode konvertiert werden. Es war ein Vorschlag, etwas genauer zu betrachten. –
Ja Jython tut dies, aber es kann oder auch nicht sein, was Sie
In der Tat, aber genauer gesagt, 'jython' erzeugt JVM-Bytecode aus Python-Quellcode, _nicht_ Java-Quellcode –
Victor will, ich dachte, du Python * Art und Weise geliebt * zu viel es zu Java Umwandlung zu gehen ..? ;-) – Galwegian
:) Ich liebe Python, aber ich habe irgendwie keine Wahl ... –