2012-04-12 14 views
4

Bevor mich jemand niederschießt, bin ich mir der Java-zu-Binär-Compiler bewusst, und ich bin nicht hinter einer von denen her.Tool zum Konvertieren der Java-Quelle in C++ - Quelle

Ich weiß auch, dass es kein perfektes Werkzeug geben wird, das alles ohne Probleme konvertiert. Mir ist bewusst, dass fehlende Java-Bibliotheken ein großes Problem darstellen. Allerdings verwendet meine Quelle nicht viele Java-Bibliotheken außer für Dinge wie String und Prints. Ich möchte nur das Tool zum Erstellen der Klassen, die die Java-Quelle verweist. Im Falle der String-Sachen bin ich froh, die Lücken zu füllen oder zu einem späteren Zeitpunkt zu beheben. Ich möchte nur, dass das Werkzeug die langweiligen Bits bearbeitet, damit ich die Übersetzung nicht manuell machen muss.

Im Fall von erforderlichen Klassen usw., werde ich diese zu einem späteren Zeitpunkt manuell beheben, würde aber einen Zeiger auf etwas, das mindestens genug des langweiligen Zeug getan bekommt, schätzen.

Noch einmal möchte ich die Quelle übersetzt und kein Compiler, um eine Binärdatei zu erzeugen. Im Grunde möchte ich etwas Java-Zeug nehmen und es in C++ für die spätere Verwendung in anderen Projekten konvertieren.

EDIT ZUSÄTZLICHE NOTIZEN

Sorry, wenn ich nicht klar, in meinem früheren Teilen dieser Frage war. Ich weiß, dass Java sich sehr von C++ unterscheidet. Ich habe etwas Java-Code, der meistens mit der Verarbeitung von Arrays und Bits gefüllt ist und fast keine Objekterzeugung hat. In gewissem Sinne ist es sehr eigenständig und hat wenige Aufrufe an andere Klassen. Diese Klassen scheinen Hauptkandidaten für die Umwandlung zu sein; die anderen Sachen müssen umgeschrieben werden, aber zumindest werden einige Teile genutzt.

+0

Wenn Sie wirklich von C++ aus auf Ihre Java-Hilfsprogramme zugreifen möchten, können Sie JNI verwenden, anstatt sie zu portieren. –

+0

Mögliche Antwort aus dem Duplikat: http://tangiblesoftwaresolutions.com/Product_Details/Java_to_CPlusPlus_Converter_Details.html - aber Tools kommt mit vielen Vorbehalten und ist nicht kostenlos. –

+0

@jesse wenn ich nach einem Java frage -> C++ wie kann das ein Duplikat von deiner Suggestion sein, die in die andere Richtung geht? –

Antwort

11

j2c ist eins - es wird Java-Quellcode in seine grobe C++ - Äquivalent konvertieren.

Offensichtlich gibt es viele Vorbehalte, die andere erwähnt haben (Garbage Collection, Synchronisation, etc), aber es wird einen guten Startpunkt bieten (und es ist Open Source, damit Sie diesen Punkt einfach verbessern können =).

Abhängig von der Größe Ihrer Codebasis, kann es auch sinnvoll sein, Ihre eigenen zu rollen - das Schreiben ist nicht so schwer, wenn Sie einen Java AST haben, da die Java-Syntax meistens eine Teilmenge von C++ ist , und es gibt viele Bibliotheken, die Java-Code für Sie parsen (j2c verwendet zum Beispiel den, der mit Eclipse geliefert wird). Eine Konvertierung von Hand ist viel fehleranfälliger als ein Tool dafür zu schreiben.