Вы можете найти документацию на вики.
JTransc (Java Trans Compiler) — это AOT (предварительный компилятор), который компилирует файлы .class и .jar в целевой язык программирования/исполняемый файл, объединяя все необходимые зависимости в один файл или папку, не требуя дрожания или внешней среды выполнения. .
Существует множество технологий для преобразования языков в другие. Например, конвертация Java в JavaScript. Или KotlinJS Серверная часть Kotlin, которая уже ориентирована на JavaScript. Так зачем использовать JTransc?
Одна из причин заключается в том, что JTransc допускает смешанные проекты. Например, вы можете использовать библиотеки Java с кодом Kotlin.
Вместо использования нескольких технологий JTransc позволяет ориентироваться на несколько языков и платформ.
Использование только одной технологии гарантирует согласованность между целями. Например, Kotlin JS не поддерживает полное отражение Java.
Вместо генерации C++ и последующего использования emscripten или других технологий JTransc позволяет генерировать код, собственный для вашей платформы. Например: при настройке JS вы будете использовать лучший в своем классе собственный сборщик мусора JS вместо сборщика мусора, эмулированного в C++ и emscripten. И нет необходимости заранее знать правильный размер кучи для JS.
Некоторые классы, такие как String, StringBuilder или ArrayList, реализованы таким образом, что используют собственные возможности JavaScript/AS3/Dart.... Например, JavaScript String, Array и т. д.
Вместо создания огромных проектов, включающих все, или создания сложных файлов конфигурации proguard. JTransc включает в себя встряхивание деревьев простым способом. Вы можете использовать аннотации для хранения методов, классов и полей или других аннотаций. Он работает для всех целей и полностью интегрирован в рабочий процесс.
JTransc поддерживает простые приложения Java, использующие потоки и синхронизирующий ввод-вывод в JS, преобразуя их в асинхронную версию в JS с использованием ветвей обнаружения ожидания/асинхронизации, не использующих потоки/синхронный ввод-вывод, для обеспечения максимальной производительности.
Наряду с JTransc я пишу набор библиотек для использования JTransc.
https://github.com/soywiz/korlibs
Игровой движок Kotlin, использующий JTransc для мультиплатформенности: https://github.com/soywiz/korge
Также существует бэкэнд GDX, использующий JTransc+Haxe: https://github.com/jtransc/gdx-backend-jtransc.
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. Он уже поддерживает большинство основных API-интерфейсов Java и простой API-интерфейс отражения Java «из коробки».
Первоначально основное внимание уделяется JVM6, Kotlin и играм, но в будущем ситуация станет лучше, поддерживая новые версии jVM и другие варианты использования, такие как интерфейсные и серверные приложения.
Прямо сейчас JTransc поддерживает лямбда-выражения Java8 и методы по умолчанию.
Существует модуль 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 или непосредственно из репозитория плагинов gradle:
plugins {
id "com.jtransc" version "0.6.8"
}
Это добавит несколько задач для создания вашего приложения. Существует блок градиента под названием jtransc, который позволяет вам указывать материал для сборки.
Например, gradle runJs
сгенерирует файл JS по адресу build/jtransc-js/program.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
если вы используете MSVC 2013 с не полностью поддерживаемым стандартом c99, замените в libopenal все встроенные на __inline и snprintf на _snprintf
lime rebuild windows -64
MAC
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root