2012-03-26 12 views
13

Ho un'app scritta in Scala e alcuni membri del mio team vogliono una versione Java di esso. Si tratta di un'applicazione dimostrativa che utilizza un'altra API scritta in Scala e che desiderano una versione Java dell'app per poter utilizzare l'API da Java. Tuttavia, l'app è piuttosto grande e non voglio rewerite manualmente in Java (e non vogliono imparare Scala). C'è uno strumento che genererà automaticamente codice Java leggibile dal codice Scala?Converti automaticamente il codice Scala in codice Java

+1

Forse i vostri collaboratori possono provare a leggere gli esempi Scala, ci sono buone possibilità che essi non devono "conoscere S cala "per avere un'idea di cosa sta facendo il codice. – gerferra

+1

Ho [scritto un proof-of-concept in Prolog] (https://gist.github.com/jarble/d4325e5a1a700129a8db20bde0b2c410) che traduce un sottoinsieme di Scala in Java. È basato sulla mia libreria [universal-transpiler] (https://github.com/jarble/universal-transpiler). –

risposta

11

vogliono una versione Java del app per essere in grado di utilizzare l'API da Java

classi Scala sono utilizzabili da Java (visto che è tutto JVM bytecode alla fine). Riuscirai a confezionare un barattolo con le tue classi perché lo usino?

+0

L'ho fatto ma vogliono un po 'più dell'API (cioè, la funzionalità, che richiede alcuni esempi complessi). – Jus12

+5

Forse potresti fornire loro l'API e alcuni esempi Java su come usarlo? – JohnnyK

+0

Credo che lo farò. L'opzione decompilatore non genera codice Java veramente utilizzabile. – Jus12

7

Non penso sia possibile convertire da scala a standard java poiché Scala esegue una manipolazione di codice byte piuttosto bassa. Sono sicuro al 90% che fanno alcune cose che non possono essere esattamente tradotte nel normale codice Java.

+1

Qualsiasi codice Scala potrebbe, in linea di principio, essere riscritto come Java (dopo tutto, sono entrambi completi di Turing); semplicemente non sarebbe bello. E qualsiasi traduzione automatica da Scala a Java probabilmente produrrebbe un codice piuttosto orribile. – dhg

+2

Ne sei sicuro?Non sono convinto che tutte le sequenze di bytecode Java valide possano essere realmente generate da qualche programma di compilazione ... –

+3

Vero, sono entrambi completi di Turing. Volevo solo dire che non penso che tu possa produrre codice Java che possa essere compilato esattamente nello stesso byte code di scala. Non è possibile effettuare una traduzione diretta. – JohnnyK

5

No, non esiste uno strumento simile.
Scala in un certo senso è un coffescript di Java. Guarda come tutte le classi funky in coffescript sono translated in javascript. Lo stesso * sarebbe con scala.
Non penso che ci siano molte caratteristiche che non possono essere tradotte in Java in alcun modo, ma la maggior parte delle funzionalità sarà tradotta in codice estremamente ingombrante, anche se l'umano lo farà.

Ma c'è lo java to scala translators.

* senza dire letteralmente sulle classi

+0

Dai un'occhiata al link java a scala. Sembra che presto i miei membri del team porranno la stessa domanda :) – Jus12

2

Non sono sicuro se questo dovrebbe funzionare, ma è possibile eseguire il file di classe attraverso un decompilatore Java.

Se funziona, il risultato è destinato ad essere brutto da morire.

2

si deve decompilare i file .class ai file sorgente Java, fate attenzione che scala produce molti più file .class

È possibile utilizzare javap da Oracle inclusi nel SDK o decompilatore Jad

per spiegazione dettagliata leggere il seguente articolo:

Link scala class to java source

Problemi correlati