Puede encontrar documentación en la wiki.
JTransc (Java Trans Compiler) es un AOT (compilador anticipado) que compila archivos .class y .jar en un lenguaje de programación/ejecutable de destino y agrupa todas las dependencias requeridas en un solo archivo o carpeta, sin requerir fluctuaciones ni un tiempo de ejecución externo. .
Existen muchas tecnologías para convertir idiomas a otros. Por ejemplo, convertir Java a JavaScript. O el backend KotlinJS Kotlin que ya apunta a JavaScript. Entonces, ¿por qué utilizar JTransc?
Una razón es que JTransc permite proyectos mixtos. Puede utilizar bibliotecas Java con código Kotlin, por ejemplo.
En lugar de utilizar varias tecnologías, JTransc le permite apuntar a varios idiomas y plataformas.
El uso de una sola tecnología garantiza la coherencia entre los objetivos. Por ejemplo, Kotlin JS no admite la reflexión completa de Java.
En lugar de generar C++ y luego usar emscripten u otras tecnologías, JTransc le permite generar código nativo para su plataforma. Por ejemplo: cuando apunte a JS, utilizará el mejor GC nativo de JS en su clase en lugar de un GC emulado en C++ y emscripten. Y no es necesario conocer de antemano el tamaño de montón adecuado para apuntar a JS.
Algunas clases como String, StringBuilder o ArrayList se implementan de manera que utilizan funciones nativas de JavaScript/AS3/Dart.... Como JavaScript String, Array, etc.
En lugar de generar proyectos enormes que incluyan todo, o tener archivos de configuración complejos de proguard. JTransc incluye la sacudida de árboles de forma sencilla. Puede utilizar anotaciones para mantener métodos, clases y campos u otras anotaciones. Funciona para todos los objetivos y está completamente integrado en el flujo de trabajo.
JTransc admite aplicaciones Java simples que usan subprocesos y sincronización de E/S en JS, convirtiéndolas en una versión asincrónica en JS usando espera/asíncrono detectando ramas que no usan subprocesos/sincronización de E/S para un rendimiento más rápido.
Junto con JTransc, estoy escribiendo un conjunto de bibliotecas para poder usar JTransc.
https://github.com/soywiz/korlibs
Kotlin Game Engine que utiliza JTransc para multiplataforma: https://github.com/soywiz/korge
También hay un backend GDX que usa JTransc+Haxe: https://github.com/jtransc/gdx-backend-jtransc
JTransc
JTransc (Java Trans Compiler) es un AOT (compilador anticipado) que compila archivos .class y .jar en un lenguaje de programación/ejecutable de destino y agrupa todas las dependencias requeridas en un solo archivo o carpeta, sin requerir fluctuaciones ni un tiempo de ejecución externo. .
Al principio generaba as3 y javascript, pero ahora mismo hay varios objetivos: Javascript, Haxe, C++ y D. El propio Haxe permite apuntar a varios otros lenguajes: JS, AS3, C++, C#, Java, PHP y Python. Esto a su vez permite ejecutar el programa en diferentes plataformas, como computadoras de escritorio, navegadores y dispositivos móviles.
El objetivo de este proyecto es llevar la alta productividad de Kotlin (y otros lenguajes JVM) a la plataforma Haxe altamente portátil. Ya es compatible con la mayoría de las API principales de Java y la API de reflexión de Java simple lista para usar.
El enfoque inicial está en JVM6, Kotlin y Games, pero mejorará en el futuro admitiendo versiones más nuevas de JVM y otros casos de uso como aplicaciones frontend y backend.
En este momento, JTransc admite lambdas Java8 y métodos predeterminados.
Hay un módulo llamado jtransc-rt-core que podría incluirse en cualquier proyecto (ya sea que use JTransc o no). Proporciona el paquete com.jtransc
, anotaciones específicas, acceso rápido a la memoria y API asincrónicas, que utilizarán las funciones de JTransc al compilar con JTransc.
Estos son también un par de proyectos para aplicaciones multimedia usando jtransc:
Puede encontrar ejemplos aquí 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 es la forma preferida de utilizar JTransc. Puede incluirlo desde maven central o directamente desde el repositorio de complementos de gradle:
plugins {
id "com.jtransc" version "0.6.8"
}
Esto agregará varias tareas para crear su aplicación. Hay un bloque Gradle llamado jtransc, que te permite especificar cosas para la compilación.
Por ejemplo, gradle runJs
generaría un archivo JS en build/jtransc-js/program.js
y lo ejecutaría usando node.js.
Puedes ver cómo usarlo en la documentación.
También puedes usar Maven, aunque debido a la naturaleza de JTransc gradle se adapta mejor. Puedes ver cómo usarlo en la documentación.
Hay un complemento en proceso que permitirá ejecutar y depurar dentro de intelliJ. Aunque aún no está listo. Puede encontrarlo en la carpeta jtransc-intellij-plugin.
Con el tiempo, esa AST intermedia podrá generarse o consumirse. Entonces, otros podrían generar eso sin JVM y otros podrían generar otros objetivos desde ese AST directamente sin todas las complejidades de los IR basados en pila.
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
Si intenta instalarlo, se queda sin memoria, elija el 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
VENTANAS
PATH
con fuerza en la primera líneaSolución alternativa para proyectos grandes: haxe 3.4.2 puede fallar por falta de memoria. Puede intentar reemplazar los archivos haxe desde el desarrollo, pero de esta manera peligrosa, y obtener solo estabilidad, consulte el historial en github. Mi elección actual: 2017-03-23 05:39:01 >> 4876859 >> haxe_2017-03-23_development_ada466c.tar.gz
VENTANAS 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
si usa MSVC 2013 con el estándar c99 que no es totalmente compatible, reemplace en libopenal todo en línea por __inline y snprintf por _snprintf
lime rebuild windows -64
IMPERMEABLE
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root