您可以在 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。Haxe 本身允许针对其他几种语言:JS、AS3、C++、C#、Java、PHP 和 Python。这反过来又允许在不同的平台上运行该程序,例如桌面、浏览器和移动设备。
该项目的目标是将 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