위키에서 문서를 찾을 수 있습니다.
JTransc(Java Trans Compiler)는 지터나 외부 런타임 없이 .class 및 .jar 파일을 대상 프로그래밍 언어/실행 파일로 컴파일하여 단일 파일이나 폴더에 필요한 모든 종속성을 번들로 묶는 AOT(Ahead of Time 컴파일러)입니다. .
언어를 다른 언어로 변환하는 기술은 많습니다. 예를 들어 Java를 JavaScript로 변환합니다. 또는 이미 JavaScript를 대상으로 하는 KotlinJS Kotlin 백엔드입니다. 그렇다면 JTransc를 사용하는 이유는 무엇입니까?
한 가지 이유는 JTransc가 혼합 프로젝트를 허용하기 때문입니다. 예를 들어 Kotlin 코드와 함께 Java 라이브러리를 사용할 수 있습니다.
여러 기술을 사용하는 대신 JTransc를 사용하면 여러 언어와 플랫폼을 대상으로 할 수 있습니다.
하나의 기술만 사용하면 대상 간의 일관성이 보장됩니다. 예를 들어 Kotlin JS는 전체 Java 리플렉션을 지원하지 않습니다.
C++를 생성한 다음 emscripten이나 기타 기술을 사용하는 대신 JTransc를 사용하면 플랫폼에 고유한 코드를 생성할 수 있습니다. 예를 들어 JS를 대상으로 하는 경우 C++ 및 emscripten에서 에뮬레이션된 GC 대신 기본 JS 동급 최고 GC를 사용하게 됩니다. 그리고 JS를 대상으로 하기 전에 적절한 힙 크기를 알 필요가 없습니다.
String, StringBuilder 또는 ArrayList와 같은 일부 클래스는 기본 JavaScript/AS3/Dart... 기능을 사용하는 방식으로 구현됩니다. JavaScript 문자열, 배열 등과 같습니다.
모든 것을 포함하는 거대한 프로젝트를 생성하거나 복잡한 proguard 구성 파일을 갖는 대신. JTransc에는 간단한 방법으로 트리쉐이킹이 포함됩니다. 주석을 사용하여 메서드, 클래스, 필드 또는 다른 주석을 유지할 수 있습니다. 모든 대상에 대해 작동하며 워크플로에 완전히 통합됩니다.
JTransc는 가장 빠른 성능을 위해 스레드/동기화 I/O를 사용하지 않는 대기/비동기 감지 분기를 사용하여 이를 JS의 비동기 버전으로 변환하고 스레드 및 동기화 I/O를 사용하는 일반 Java 애플리케이션을 지원합니다.
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
JTransc(Java Trans Compiler)는 지터나 외부 런타임 없이 .class 및 .jar 파일을 대상 프로그래밍 언어/실행 파일로 컴파일하여 단일 파일이나 폴더에 필요한 모든 종속성을 번들로 묶는 AOT(Ahead of Time 컴파일러)입니다. .
처음에는 as3 및 javascript를 생성했지만 현재는 Javascript, Haxe, C++ 및 D와 같은 여러 대상이 있습니다. Haxe 자체에서는 JS, AS3, C++, C#, Java, PHP 및 Python과 같은 여러 다른 언어를 대상으로 할 수 있습니다. 이를 통해 데스크톱, 브라우저 및 모바일과 같은 다양한 플랫폼에서 프로그램을 실행할 수 있습니다.
이 프로젝트의 목표는 Kotlin(및 기타 JVM 언어)의 높은 생산성을 이식성이 뛰어난 Haxe 플랫폼에 적용하는 것입니다. 이미 대부분의 핵심 Java API와 일반 Java 리플렉션 API를 즉시 지원합니다.
초기 초점은 JVM6, Kotlin 및 Games에 있지만 앞으로는 최신 jvm 버전과 프런트엔드 및 백엔드 애플리케이션과 같은 기타 사용 사례를 지원하는 것이 더 좋아질 것입니다.
현재 JTransc는 Java8 람다 및 기본 메소드를 지원합니다.
JTransc 사용 여부에 관계없이 모든 프로젝트에 포함될 수 있는 jtransc-rt-core라는 모듈이 있습니다. JTransc를 사용하여 컴파일할 때 JTransc 기능을 사용하는 com.jtransc
패키지, 특정 주석, 빠른 메모리 액세스 및 비동기 API를 제공합니다.
또한 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 없이 이를 생성할 수 있고 다른 사람들은 스택 기반 IR의 모든 복잡성 없이 해당 AST에서 직접 다른 대상을 생성할 수 있습니다.
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/라임#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
환경 변수에 "path/to/mingw/bin"을 강력하게 추가하세요.대규모 프로젝트에 대한 해결 방법: 메모리 부족으로 인해 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