2008-09-30 70 views
20

¿Existe alguna herramienta que pueda convertir automáticamente Python a Java? ¿Puede Jython hacer esto?Traducción automatizada de Python a Java

+2

Victor, pensé que amabas Python * * manera demasiado para ir convirtiéndola en Java ..? ;-) – Galwegian

+1

:) Me encanta Python, pero no tengo elección allí ... –

Respuesta

5

Puede que no sea un problema fácil. La determinación de cómo mapear clases definidas en Python en tipos en Java será un gran desafío debido a las diferencias en cada tipo de tiempo de enlace. (mecanografía pato vs. enlace de tiempo de compilación).

+0

Y todos los nombres de métodos especiales. __llamado__ es algo que requerirá un cuidado real para administrar. –

+0

Hay un traductor llamado [P2J] (https://github.com/chrishumphreys/p2j) que puede convertir un subconjunto de Python en Java. Mi proyecto [universal-transpiler] (https://github.com/jarble/transpiler) fue escrito con el mismo propósito, pero también traduce Python a C#, Java, JavaScript y varios otros idiomas. –

1

para aclarar su pregunta:

De Python El código fuente a código fuente de Java? (No lo creo)

.. o desde el código fuente de Python a Java Bytecode? (Jython hace esto bajo el capó)

+4

Sí, se convierte a Java Source. desde su página (http://www.jython.org/archive/21/docs/jythonc.html): la herramienta jythonc genera código fuente real de Java y luego invoca un compilador Java sobre este código fuente para crear los archivos .class – KIC

12

En realidad, esto puede o no ser de mucha ayuda, pero se podría escribir un script que crea una clase Java para cada clase de Python, incluyendo apéndices de método, la colocación de la implementación de Python del método dentro del Javadoc

De hecho , esto es probablemente bastante fácil de golpear en Python.

Trabajé para una empresa que realizó un puerto a Java de un enorme sistema Smalltalk (similar a Python) y esto es exactamente lo que hicieron. Completar los métodos fue manual pero invaluable, porque te hizo pensar realmente en lo que estaba pasando. Dudo que un método de fuerza bruta resulte en un buen código.

Aquí hay otra posibilidad: ¿puedes convertir tu Python a Jython más fácilmente? Jython es solo Python para JVM. Es posible usar un descompilador de Java (por ejemplo, JAD) para luego convertir el bytecode de nuevo en código de Java (o puede que simplemente desee ejecutar en una JVM). Sin embargo, no estoy seguro de esto, quizás alguien más tenga una mejor idea.

+1

La solución JAD parece un ganador. Tal vez podría editar su respuesta para mostrar esta solución. –

+1

No estoy seguro de que la solución JAD sea realmente viable ya que no sé si las clases Jython se convierten en archivos .class o si se interpretan convirtiéndolos en bytecode en el tiempo de ejecución. Fue una sugerencia de algo para mirar más allá en –

3

Sí Jython hace esto, sino que puede o no ser lo que quieres

+4

De hecho, pero más precisamente, 'jython' crea JVM-bytecode del código fuente de Python, _not_ código fuente de Java –