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
risposta
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?
L'ho fatto ma vogliono un po 'più dell'API (cioè, la funzionalità, che richiede alcuni esempi complessi). – Jus12
Forse potresti fornire loro l'API e alcuni esempi Java su come usarlo? – JohnnyK
Credo che lo farò. L'opzione decompilatore non genera codice Java veramente utilizzabile. – Jus12
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.
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
Ne sei sicuro?Non sono convinto che tutte le sequenze di bytecode Java valide possano essere realmente generate da qualche programma di compilazione ... –
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
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
Dai un'occhiata al link java a scala. Sembra che presto i miei membri del team porranno la stessa domanda :) – Jus12
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.
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:
- 1. Come posso vedere in quale codice [Java/Scala?] Il compilatore Scala riscrive il codice Scala originale
- 2. Converti automaticamente il codice tra Xamarin iOS e Xamarin Android
- 3. Converti stringa di codice in Java
- 4. Chiama il codice Scala da Java?
- 5. Codice scala infinita scala
- 6. Migrazione del codice TreeMap Java su Scala?
- 7. Scala/Java Sandbox per codice non attendibile
- 8. java può eseguire un codice scala compilato?
- 9. Genera il codice Scala da Antlr
- 10. Scala codice demystify
- 11. Eclipse non riconosce il codice Scala
- 12. Come indentare automaticamente il codice sorgente?
- 13. Comprensione codice Scala: (-_._ 2)
- 14. Ottimizzazione del codice con Scala
- 15. Compilare ed eseguire il codice Scala in fase di esecuzione
- 16. Converti codice chiave virtuale in stringa unicode
- 17. Converti codice assembly inline in C++
- 18. Converti valori RGBA in codice esadecimale colore
- 19. Converti i file .form Java GUI Builder nel codice sorgente?
- 20. Converti PNG trasparente in System.Drawing.Icon nel codice
- 21. Converti codice chiave in stringa equivalente chiave
- 22. ExcludeFromCodeCoverage Escludi codice generato automaticamente
- 23. Codice Visual Studio push automaticamente
- 24. Perché il codice Scala lancia IllegalAccessError in fase di runtime?
- 25. codice java
- 26. Formatta automaticamente il codice sorgente in Netbeans al salvataggio?
- 27. Come convertire automaticamente il codice di mantenimento manuale in ARC?
- 28. Esegui automaticamente il codice di estensione in Visual Studio all'avvio
- 29. leggere il codice XML in UTF-8 in scala
- 30. Qual è l'equivalente Java di questo codice Scala?
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
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). –