Ich habe eine App in Scala geschrieben und einige meiner Teammitglieder wollen eine Java-Version davon. Es ist eine Demo-App, um eine andere in Scala geschriebene API zu verwenden, und sie möchten, dass eine Java-Version der App die API von Java verwenden kann. Allerdings ist die App etwas groß und ich möchte sie nicht manuell in Java wiederverwenden (und sie wollen Scala nicht lernen). Gibt es ein Tool, das automatisch (lesbaren) Java-Code aus dem Scala-Code erzeugt?Konvertieren Scala-Code automatisch in Java-Code
Antwort
sie wollen eine Java-Version der App sind die API von Java
Scala Klassen von Java nutzbar nutzen zu können (da sie alle JVM-Bytecode am Ende ist). Kannst du einfach ein Glas mit deinen Klassen verpacken?
Ich tat das, aber sie wollen ein bisschen mehr als die API (d. H. Die Funktionalität, die ein paar komplexe Beispiele erfordert). – Jus12
Vielleicht könnten Sie ihnen die API und einige Java-Beispiele für die Verwendung geben? – JohnnyK
Ich denke, ich werde das tun. Die Option "decompiler" generiert keinen wirklich verwendbaren Java-Code. – Jus12
Ich glaube nicht, dass es möglich ist, von Scala zurück zu Standard-Java zu konvertieren, da Scala eine ziemlich niedrige Byte-Code-Manipulation durchführt. Ich bin 90% sicher, dass sie einige Dinge tun, die nicht genau in normalen Java-Code übersetzt werden können.
Jeder Scala-Code könnte im Prinzip als Java neu geschrieben werden (schließlich sind beide Turing-abgeschlossen); es wäre einfach nicht so schön. Und jede automatisierte Scala-zu-Java-Übersetzung würde wahrscheinlich zu einem ziemlich scheußlichen Code führen. – dhg
Sind Sie sicher?Ich bin nicht davon überzeugt, dass alle gültigen Java-Bytecode-Sequenzen wirklich von irgendeinem kompilierenden Programm erzeugt werden können ... –
Wahr, sie sind beide Turing-vollständig. Ich meinte nur, dass ich nicht glaube, dass Sie Java-Code erzeugen können, der genau in den gleichen Byte-Code wie scala kompiliert. Du konntest keine direkte Übersetzung machen. – JohnnyK
Nein, es gibt kein solches Werkzeug.
Scala in gewissem Sinne ist ein Coffescript von Java. Schau, wie all diese funkigen Klassen in Coffescript translated zu Javascript sind. Das gleiche wäre mit Scala.
Ich glaube nicht, dass es viele Features gibt, die nicht in Java übersetzt werden können, aber die meisten Features werden in extrem unordentlichen Code übersetzt, selbst wenn der Mensch diese Arbeit machen wird.
Aber es gibt java to scala translators.
* nicht sagen, buchstäblich über Klassen
Werfen Sie einen Blick auf den Java-Scala-Link. Es scheint bald meine Teammitglieder werden die gleiche Frage stellen :) – Jus12
nicht sicher, ob das funktionieren würde, aber man kann die Klassendateien durch einen Java Decompiler laufen.
Wenn es überhaupt funktioniert, wird das Ergebnis hässlich sein.
Sie haben die Class-Dateien zu Java-Quelldateien zu dekompilieren, hüte dich, dass scala viele mehr .class- erzeugt Dateien
Sie javap von Oracle im SDK enthalten können oder jad Decompiler
für detaillierte Erklärung in der folgenden Artikel lesen:
Ihre Mitarbeiter versuchen können Vielleicht die Scala Beispiele zu lesen, gibt es eine gute Chance, dass sie zu „wissen nicht, S cala ", um eine Vorstellung davon zu bekommen, was der Code tut. – gerferra
Ich habe [eine Proof-of-Concept in Prolog geschrieben] (https://gist.github.com/jarble/d4325e5a1a700129a8db20bde0b2c410), die eine Teilmenge von Scala in Java übersetzt. Es basiert auf meiner [universal-transpiler] (https://github.com/jarble/universal-transpiler) -Bibliothek. –