2010-12-01 8 views
5

¿Cuál es la mejor forma de generar Java desde Python?¿La mejor forma de generar Java con Python?

Quiero escribir un decorador que genere código java para llamar a una versión json de una función (puedo usar decoradores existentes para exportar la API json).

¿Cuál es la mejor forma de generar Java, debería considerar cosas como FSM aquí?

Idealmente, puedo escribir mi código una vez, para el servidor y generar código para interactuar con él para varios idiomas (java primero).

Editar (sacado de un comentario en una respuesta suprimido):
El código Java se ejecuta en Android, mientras que el código Python estará en un servidor Django ... Además, yo quiero ser capaz de generar de forma estática el código de Java, y tener esto como parte de una API que las personas pueden usar.

+1

La mejor manera no es generar algo tan complejo si puede evitarlo. Sin embargo, un consejo: hasta donde sé, es relativamente "simple" (a diferencia de todas las demás posibilidades) generar código correcto (no demasiado legible, pero correcto) de algo como un AST (árbol de sintaxis abstracta), al menos si usted conoce bien el formato de árbol (y lo que representa). Eso básicamente significa implementar la mitad de un compilador de Java. – delnan

+0

Entonces, ¿su servidor genera algún código Java (byte?) Que el usuario de Android ejecutará solo para obtener algunos datos JSON? –

+0

Obviamente, el bit que puede generar el código Java solo se ejecutará cuando decidamos cambiar la API, no todo el tiempo :) –

Respuesta

0

La reutilización es buena. La complejidad es un precio.

Te hará pagar dos veces o más más adelante. Mida su ROI (retorno de la inversión) antes de dar un salto.

[Editar:]

  1. usted podría utilizar Jython lo que hará más fácil escribir código de unión como llamar a las funciones de Java.
  2. jythonc transforma el código fuente de Python en código fuente Java y luego invoca un compilador Java para convertirlo en archivos .class.
  3. Como dije, podrías usar la creación de plantillas. Alguien usó cheetah para ese propósito. Aunque el enlace ya no está disponible.
+1

La programación en red puede ser una pesadilla para depurar, generar todo este pegamento ahorrará mucha molestia. –

+0

@Stuart Axon: +1 ¡Muy cierto! No discuto en absoluto. Tenemos que ser un juez de eso. Sin embargo, he visto que la gente de los costos ha pagado por tomar decisiones apresuradas, especialmente con códigos de pegamento. Realmente depende de lo que se está logrando aquí. La complejidad de las API json frente a la complejidad del código de pegamento.Tengo la corazonada de que la complejidad de las API json sería menor, ya que Python tiene excelentes herramientas en su arsenal. – pyfunc

+0

Es más generar el código para llamarlo desde java/android que estoy pensando que tanto el lado de python. Investigaré a jythonc ... por el momento estoy en una fase de investigación, si esto parece un callejón sin salida, entonces no es una gran pérdida. –

1

Siempre puede crear código java de la misma manera que webapps crea HTML: con una plantilla. A continuación, puede hacer que el código fuente de Java compilado en bytecode usando un compilador de Java regulares (ver: Package javax.tools)

No es necesariamente la mejor opción, pero definitivamente una opción (y muy sencilla por cierto)

+0

Podría hacer ... He generado código como este antes y no siempre es bonito. –

-1

Mi consejo? Haga que genere código JavaScript en lugar de código Java. Android puede ejecutar código JavaScript usando WebView.

+0

Es cierto, aunque no estoy seguro de que funcione como servicio. –

Cuestiones relacionadas