Dokumentation finden Sie im Wiki.
JTransc (Java Trans Compiler) ist ein AOT (Ahead of Time Compiler), der .class- und .jar-Dateien in eine Zielprogrammiersprache/ausführbare Datei kompiliert und alle erforderlichen Abhängigkeiten in einer einzigen Datei oder einem einzigen Ordner bündelt, ohne dass ein Jitter oder eine externe Laufzeit erforderlich ist .
Es gibt viele Technologien, um Sprachen in andere umzuwandeln. Zum Beispiel die Konvertierung von Java in JavaScript. Oder KotlinJS Kotlin-Backend, das bereits auf JavaScript abzielt. Warum also JTransc verwenden?
Ein Grund dafür ist, dass JTransc gemischte Projekte zulässt. Sie können beispielsweise Java-Bibliotheken mit Kotlin-Code verwenden.
Anstatt mehrere Technologien zu verwenden, können Sie mit JTransc auf mehrere Sprachen und Plattformen abzielen.
Der Einsatz nur einer Technologie gewährleistet die Konsistenz zwischen den Zielen. Kotlin JS unterstützt beispielsweise keine vollständige Java-Reflektion.
Anstatt C++ zu generieren und dann Emscripten oder andere Technologien zu verwenden, können Sie mit JTransc Code generieren, der für Ihre Plattform nativ ist. Beispiel: Wenn Sie auf JS abzielen, verwenden Sie den nativen, erstklassigen JS-GC anstelle eines in C++ und Emscripten emulierten GC. Und es ist nicht nötig, die richtige Heap-Größe zu kennen, bevor man auf JS abzielt.
Einige Klassen wie String, StringBuilder oder ArrayList sind so implementiert, dass sie native JavaScript-/AS3-/Dart-Funktionen nutzen. Wie JavaScript-String, Array und so weiter.
Anstatt riesige Projekte mit allem zu erstellen oder komplexe Proguard-Konfigurationsdateien zu haben. JTransc beinhaltet Treeshaking auf einfache Weise. Sie können Annotationen verwenden, um Methoden, Klassen und Felder oder andere Annotationen beizubehalten. Es funktioniert für alle Ziele und ist vollständig in den Workflow integriert.
JTransc unterstützt einfache Java-Anwendungen, die Threads und Sync-E/A in JS verwenden, und konvertiert diese in eine asynchrone Version in JS, indem es Wait/Async verwendet und Zweige erkennt, die Threads/Sync-E/A nicht verwenden, um die schnellste Leistung zu erzielen.
Neben JTransc schreibe ich eine Reihe von Bibliotheken, um JTransc verwenden zu können.
https://github.com/soywiz/korlibs
Kotlin Game Engine, die JTransc für Multiplattform verwendet: https://github.com/soywiz/korge
Außerdem gibt es ein GDX-Backend mit JTransc+Haxe: https://github.com/jtransc/gdx-backend-jtransc
JTransc
JTransc (Java Trans Compiler) ist ein AOT (Ahead of Time Compiler), der .class- und .jar-Dateien in eine Zielprogrammiersprache/ausführbare Datei kompiliert und alle erforderlichen Abhängigkeiten in einer einzigen Datei oder einem einzigen Ordner bündelt, ohne dass ein Jitter oder eine externe Laufzeit erforderlich ist .
Am Anfang wurden as3 und Javascript generiert, aber derzeit gibt es mehrere Ziele: Javascript, Haxe, C++ und D. Haxe selbst ermöglicht die Ausrichtung auf mehrere andere Sprachen: JS, AS3, C++, C#, Java, PHP und Python. Dies wiederum ermöglicht die Ausführung des Programms auf verschiedenen Plattformen wie Desktop, Browsern und Mobilgeräten.
Ziel dieses Projekts ist es, die hohe Produktivität von Kotlin (und anderen JVM-Sprachen) auf die hochportable Haxe-Plattform zu übertragen. Es unterstützt bereits die meisten Kern-Java-APIs und die einfache Java-Reflection-API.
Der Schwerpunkt liegt zunächst auf JVM6, Kotlin und Spielen, aber in Zukunft wird es besser, neuere JVM-Versionen und andere Anwendungsfälle wie Frontend- und Backend-Anwendungen zu unterstützen.
Derzeit unterstützt JTransc Java8-Lambdas und Standardmethoden.
Es gibt ein Modul namens jtransc-rt-core, das in jedes Projekt eingebunden werden kann (unabhängig davon, ob JTransc verwendet wird oder nicht). Es bietet das Paket com.jtransc
, spezifische Anmerkungen, schnellen Speicherzugriff und asynchrone APIs, die beim Kompilieren mit JTransc JTransc-Funktionen nutzen.
Dies sind auch einige Projekte für Multimedia-Anwendungen mit jtransc:
Beispiele finden Sie hier jtransc/jtransc-examples.
# jtransc script can be found under the jtransc-main-run folder
javac com/test/Main.java -d target/classes
jtransc dependency.jar target/classes -main com.test.Main -out program.js
node program.js
Dies ist die bevorzugte Art der Verwendung von JTransc. Sie können es von Maven Central oder direkt aus dem Gradle-Plugin-Repository einbinden:
plugins {
id "com.jtransc" version "0.6.8"
}
Dadurch werden mehrere Aufgaben zum Erstellen Ihrer Anwendung hinzugefügt. Es gibt einen Gradle-Block namens jtransc, mit dem Sie Dinge für den Build angeben können.
gradle runJs
würde beispielsweise eine JS-Datei unter build/jtransc-js/program.js
generieren und sie mit node.js ausführen.
Wie Sie es verwenden, erfahren Sie in der Dokumentation.
Sie können auch Maven verwenden, obwohl Gradle aufgrund der Art von JTransc besser geeignet ist. Wie Sie es verwenden, erfahren Sie in der Dokumentation.
Es ist ein Plugin in Arbeit, das die Ausführung und das Debuggen in IntelliJ ermöglicht. Obwohl es noch nicht fertig ist. Sie finden es im Ordner jtransc-intellij-plugin.
Irgendwann kann dieser Zwischen-AST generiert oder verbraucht werden. Andere könnten das also ohne JVM generieren, und andere könnten andere Ziele direkt aus diesem AST generieren, ohne die Komplexität stapelbasierter IRs.
echo "export JAVA_HOME=$(/usr/libexec/java_home)" >> ~/.bash_profile
source ~/.bash_profile
haxelib install lime 5.5.0
haxelib install hxcpp 3.4.64
haxelib run lime setup
aus######openfl/lime#831
lime setup android
aus. Wenn Sie bei der Installation feststellen, dass nicht genügend Speicher vorhanden ist, wählen Sie den manuellen Modus. Download and install the Android SDK? [y/n/a] ? n
Download and install the Android NDK? [y/n/a] ? n
Download and install the Java JDK? [y/n/a] ? n
Path to Android SDK [C:toolsandroid-sdk]:
Path to Android NDK []: C:toolsandroid-ndk
Path to Java JDK [C:Program FilesJavajdk1.8.0_131]:
lime rebuild hxcpp tvos
aushaxelib remove lime
git clone --recursive https://github.com/openfl/lime
haxelib dev lime lime
haxelib install format
lime rebuild mac
lime rebuild ios
lime rebuild tvos
FENSTER
PATH
hinzuProblemumgehung für große Projekte: Haxe 3.4.2 kann aufgrund von Speichermangel fehlschlagen. Sie können versuchen, Haxe-Dateien aus der Entwicklung zu ersetzen, aber dieser gefährliche Weg ist nur stabil, siehe Verlauf auf Github. Meine aktuelle Auswahl: 23.03.2017 05:39:01 >> 4876859 >> haxe_2017-03-23_development_ada466c.tar.gz
WINDOWS 64
neko run.n Build.xml -Dwindows -DHXCPP_M64 -Dstatic_link ./project/
haxelib remove lime
git clone --recursive https://github.com/openfl/lime -b master
haxelib dev lime lime
haxelib install format
Wenn Sie MSVC 2013 mit nicht vollständig unterstütztem c99-Standard verwenden, ersetzen Sie in libopenal all inline durch __inline und snprintf durch _snprintf
lime rebuild windows -64
MAC
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root