Você pode encontrar documentação no wiki.
JTransc (Java Trans Compiler) é um AOT (compilador antecipado) que compila arquivos .class e .jar em uma linguagem de programação/executável de destino, agrupando todas as dependências necessárias em um único arquivo ou pasta, sem exigir jitter ou tempo de execução externo .
Existem muitas tecnologias para converter idiomas em outros. Por exemplo, convertendo Java em JavaScript. Ou back-end KotlinJS Kotlin que já tem como alvo JavaScript. Então, por que usar JTransc?
Um dos motivos é que o JTransc permite projetos mistos. Você pode usar bibliotecas Java com código Kotlin, por exemplo.
Em vez de usar diversas tecnologias, o JTransc permite direcionar para diversas linguagens e plataformas.
Usar apenas uma tecnologia garante consistência entre os alvos. Por exemplo, Kotlin JS não oferece suporte à reflexão Java completa.
Em vez de gerar C++ e depois usar emscripten ou outras tecnologias, o JTransc permite gerar código nativo da sua plataforma. Por exemplo: ao direcionar JS, você usará o melhor GC JS nativo da classe em vez de um GC emulado em C++ e emscripten. E não há necessidade de saber antecipadamente o tamanho de heap adequado para JS.
Algumas classes como String, StringBuilder ou ArrayList são implementadas de forma a usar recursos nativos de JavaScript/AS3/Dart.... Como JavaScript String, Array e assim por diante.
Em vez de gerar projetos enormes incluindo tudo, ou ter arquivos de configuração complexos do programa. JTransc inclui treeshaking de forma simples. Você pode usar anotações para manter métodos, classes e campos ou outras anotações. Funciona para todos os alvos e está totalmente integrado no fluxo de trabalho.
JTransc suporta aplicativos Java simples usando Threads e sincronização de E/S em JS, convertendo isso em uma versão assíncrona em JS usando await/async, detectando ramificações que não usam Threads/sync I/O para desempenho mais rápido.
Junto com o JTransc, estou escrevendo um conjunto de bibliotecas para poder usar o JTransc.
https://github.com/soywiz/korlibs
Kotlin Game Engine que usa JTransc para multiplataforma: https://github.com/soywiz/korge
Também há um backend GDX usando JTransc+Haxe: https://github.com/jtransc/gdx-backend-jtransc
JTransc
JTransc (Java Trans Compiler) é um AOT (compilador antecipado) que compila arquivos .class e .jar em uma linguagem de programação/executável de destino, agrupando todas as dependências necessárias em um único arquivo ou pasta, sem exigir jitter ou tempo de execução externo .
No início gerava as3 e javascript, mas atualmente existem vários alvos: Javascript, Haxe, C++ e D. O próprio Haxe permite atingir diversas outras linguagens: JS, AS3, C++, C#, Java, PHP e Python. Isso, por sua vez, permite executar o programa em diferentes plataformas, como desktop, navegadores e dispositivos móveis.
O objetivo deste projeto é trazer a alta produtividade do Kotlin (e de outras linguagens JVM) para a plataforma Haxe altamente portátil. Ele já suporta a maioria das principais APIs Java e API de reflexão Java simples prontas para uso.
O foco inicial está em JVM6, Kotlin e Games, mas ficará melhor no futuro com suporte a versões mais recentes de JVM e outros casos de uso, como aplicativos de front-end e back-end.
No momento, JTransc suporta lambdas Java8 e métodos padrão.
Existe um módulo chamado jtransc-rt-core que pode ser incluído em qualquer projeto (seja usando JTransc ou não). Ele fornece o pacote com.jtransc
, anotações específicas, acesso rápido à memória e APIs assíncronas, que utilizarão recursos do JTransc na compilação usando JTransc.
Estes também são alguns projetos para aplicativos multimídia usando jtransc:
Você pode encontrar exemplos aqui 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
Esta é a forma preferida de usar JTransc. Você pode incluí-lo no maven central ou diretamente no repositório de plug-ins do Gradle:
plugins {
id "com.jtransc" version "0.6.8"
}
Isso adicionará diversas tarefas para construir seu aplicativo. Existe um bloco gradle chamado jtransc, que permite especificar itens para a construção.
Por exemplo, gradle runJs
geraria um arquivo JS em build/jtransc-js/program.js
e o executaria usando node.js.
Você pode ver como usá-lo na documentação.
Você também pode usar o Maven, embora devido à natureza do JTransc, o gradle se ajuste melhor. Você pode ver como usá-lo na documentação.
Há um plugin em desenvolvimento que permitirá executar e depurar dentro do intelliJ. Embora ainda não esteja pronto. Você pode encontrá-lo na pasta jtransc-intellij-plugin.
Eventualmente, esse AST intermediário poderá ser gerado ou consumido. Assim, outros poderiam gerar isso sem JVM e outros poderiam gerar outros alvos diretamente desse AST, sem todas as complexidades dos IRs baseados em pilha.
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
Se tentar instalar você ficar sem memória, escolha o modo manual. 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
WINDOWS
PATH
fortemente na primeira linhaSolução alternativa para grandes projetos: o haxe 3.4.2 pode falhar por falta de memória. Você pode tentar substituir os arquivos haxe do desenvolvimento, mas desta forma perigosa, e ficar apenas estável, veja o histórico no github. Minha escolha atual: 23/03/2017 05:39:01 >> 4876859 >> haxe_2017-03-23_development_ada466c.tar.gz
JANELAS 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
se usar o MSVC 2013 com o padrão c99 não totalmente suportado, substitua em libopenal tudo embutido por __inline e snprintf por _snprintf
lime rebuild windows -64
MAC
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root