2012-03-26 15 views
13

Tengo una aplicación escrita en Scala y algunos de los miembros de mi equipo quieren una versión de Java de ella. Es una aplicación de demostración para usar otra API escrita en Scala, y quieren que una versión de Java de la aplicación pueda usar la API de Java. Sin embargo, la aplicación es bastante grande y no quiero volver a crear manualmente en Java (y no quieren aprender Scala). ¿Hay alguna herramienta que genere código Java (legible) automáticamente desde el código de Scala?Convertir automáticamente código de Scala a código de Java

+1

Tal vez sus compañeros de trabajo pueden tratar de leer los ejemplos Scala, hay una buena probabilidad de que no tienen que "saber S cala "para tener una idea de lo que está haciendo el código. – gerferra

+1

He [escrito una prueba de concepto en Prolog] (https://gist.github.com/jarble/d4325e5a1a700129a8db20bde0b2c410) que traduce un subconjunto de Scala en Java. Se basa en mi biblioteca [universal-transpiler] (https://github.com/jarble/universal-transpiler). –

Respuesta

11

quieren una versión Java de la aplicación para poder utilizar la API de Java

clases Scala son utilizables desde Java (ya que todo el código de bytes de JVM en el final). ¿Puedes empacar un tarro con tus clases para que lo usen?

+0

Lo hice pero quieren un poco más que la API (es decir, la funcionalidad, que requiere algunos ejemplos complejos). – Jus12

+5

¿Tal vez podría darles la API y algunos ejemplos de Java de cómo usarlo? – JohnnyK

+0

Supongo que haré eso. La opción decompilador no genera código Java realmente utilizable. – Jus12

7

No creo que sea posible convertir de scala a java estándar ya que Scala realiza una manipulación de código de byte bastante baja. Estoy 90% seguro de que hacen algunas cosas que no se pueden traducir exactamente al código Java normal.

+1

Cualquier código de Scala podría, en principio, volver a escribirse como Java (después de todo, ambos son completos); simplemente no sería tan bueno. Y cualquier traducción automática de Scala a Java probablemente resulte en algún código bastante horrible. – dhg

+2

¿Estás seguro de eso?No estoy seguro de que todas las secuencias de códigos de bytes de Java válidas puedan ser realmente generadas por algún programa de compilación ... –

+3

Cierto, ambos son completos. Solo quise decir que no creo que puedas producir código Java que compile exactamente en el mismo código de bytes que Scala. No podrías hacer una traducción directa. – JohnnyK

5

No, no hay tal herramienta.
Scala en cierto sentido es un coffescript de Java. Mira cómo todas las clases funky en coffescript son translated para javascript. Lo mismo * sería con scala.
No creo que haya muchas características que no se puedan traducir a Java de ninguna manera, pero la mayoría de las características se traducirán a código extremadamente desordenado, incluso si el humano lo hace.

Pero hay java to scala translators.

* no decir, literalmente, sobre las clases

+0

Eché un vistazo al enlace de java a scala. Parece que pronto los miembros de mi equipo harán la misma pregunta :) – Jus12

2

No estoy seguro si esto iba a funcionar, pero se puede ejecutar los archivos de clase a través de un decompilador java.

Si funciona, el resultado será feo.

2

Tienes que descompilar los archivos .class a archivos fuente de Java, ten en cuenta que Scala produce muchos más archivos .class

Puede utilizar javap de Oracle incluye en el SDK o decompilador jad

de explicación detallada leer el siguiente artículo:

Link scala class to java source

Cuestiones relacionadas