您可以在 wiki 上找到文件。
JTransc(Java Trans Compiler)是一個AOT(提前編譯器),它將.class 和.jar 檔案編譯為目標程式語言/可執行文件,將所有必需的依賴項捆綁在單個文件或資料夾中,無需抖動或外部運作時。
有很多技術可以將語言轉換為其他語言。例如,將Java轉換為JavaScript。或是已經針對 JavaScript 的 KotlinJS Kotlin 後端。那為什麼要使用 JTransc?
原因之一是 JTransc 允許混合項目。例如,您可以將 Java 程式庫與 Kotlin 程式碼結合使用。
JTransc 讓您可以針對多種語言和平台,而不是使用多種技術。
僅使用一種技術即可保證目標之間的一致性。例如,Kotlin JS 不支援完整的 Java 反射。
JTransc 允許您產生平臺本機的程式碼,而不是產生 C++,然後使用 emscripten 或其他技術。例如:當針對 JS 時,您將使用原生 JS 一流的 GC,而不是用 C++ 和 emscripten 模擬的 GC。並且無需在針對 JS 之前知道合適的堆大小。
一些類別(例如 String、StringBuilder 或 ArrayList)以使用本機 JavaScript/AS3/Dart... 設施的方式實作。例如JavaScript的String、Array等。
而不是產生包含所有內容的龐大項目,或擁有複雜的 proguard 設定檔。 JTransc 以簡單的方式包含了 treeshaking。您可以使用註解來保留方法、類別和欄位或其他註解。它適用於所有目標,並且完全整合在工作流程中。
JTransc 支援在 JS 中使用線程和同步 I/O 的普通 Java 應用程序,使用等待/非同步檢測分支將其轉換為 JS 中的非同步版本,而不是使用線程/同步 I/O 以獲得最快的效能。
除了 JTransc,我正在編寫一組庫以便能夠使用 JTransc。
https://github.com/soywiz/korlibs
使用 JTransc 實現多平台的 Kotlin 遊戲引擎:https://github.com/soywiz/korge
還有一個使用 JTransc+Haxe 的 GDX 後端:https://github.com/jtransc/gdx-backend-jtransc
交通運輸部
JTransc(Java Trans Compiler)是一個AOT(提前編譯器),它將.class 和.jar 檔案編譯為目標程式語言/可執行文件,將所有必需的依賴項捆綁在單個文件或資料夾中,無需抖動或外部運作時。
一開始它會產生 as3 和 javascript,但現在有幾個目標:Javascript、Haxe、C++ 和 D。這反過來又允許在不同的平台上運行該程序,例如桌面、瀏覽器和行動裝置。
該計畫的目標是將 Kotlin(和其他 JVM 語言)的高生產力引入高度可移植的 Haxe 平台。它已經支援大多數核心 Java API 和開箱即用的普通 Java 反射 API。
最初的重點是 JVM6、Kotlin 和遊戲,但將來它會更好地支援更新的 jvm 版本以及前端和後端應用程式等其他用例。
現在 JTransc 支援 Java8 lambda 和預設方法。
有一個名為 jtransc-rt-core 的模組,可以包含在任何專案中(無論是否使用 JTransc)。它提供了com.jtransc
套件、特定註釋、快速記憶體存取和非同步 API,在使用 JTransc 編譯時將使用 JTransc 功能。
這些也是使用 jtransc 的多媒體應用程式的幾個項目:
您可以在此處找到範例 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
這是使用 JTransc 的首選方式。您可以從 Maven Central 或直接從 gradle 插件儲存庫包含它:
plugins {
id "com.jtransc" version "0.6.8"
}
這將添加幾個用於建立應用程式的任務。有一個名為 jtransc 的 gradle 區塊,它允許您指定建置的內容。
例如gradle runJs
會在build/jtransc-js/program.js
產生一個 JS 檔案並使用 node.js 來執行它。
您可以在文件中查看如何使用它。
您也可以使用 Maven,但由於 JTransc gradle 的性質更適合。您可以在文件中查看如何使用它。
有一個插件正在開發中,可以在 intelliJ 中運行和調試。雖然還沒準備好。您可以在 jtransc-intellij-plugin 資料夾中找到它。
最終,中間 AST 將能夠產生或消耗。因此,其他人可以在沒有 JVM 的情況下產生該目標,而其他人可以直接從該 AST 產生其他目標,而不需要基於堆疊的 IR 的所有複雜性。
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
######openfl/lime#831
lime setup android
如果嘗試安裝時記憶體不足,請選擇手動模式。 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
haxelib 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
視窗
PATH
環境變量大型專案的解決方法:haxe 3.4.2 可能會因記憶體不足而失敗。您可以嘗試替換開發中的 haxe 文件,但這種方法很危險,而且只能穩定,請參閱 github 上的歷史記錄。我目前的選擇: 2017-03-23 05:39:01 >> 4876859 >> haxe_2017-03-23_development_ada466c.tar.gz
視窗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
如果使用不完全支援 c99 標準的 MSVC 2013,則將 libopenal 中的所有內聯替換為 __inline,將 snprintf 替換為 _snprintf
lime rebuild windows -64
蘋果
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root