Vous pouvez trouver de la documentation sur le wiki.
JTransc (Java Trans Compiler) est un AOT (compilateur anticipé) qui compile les fichiers .class et .jar dans un langage de programmation cible/exécutable regroupant toutes les dépendances requises dans un seul fichier ou dossier, sans nécessiter de gigue ou d'exécution externe. .
Il existe de nombreuses technologies permettant de convertir des langues en d’autres. Par exemple, convertir Java en JavaScript. Ou le backend KotlinJS Kotlin qui cible déjà JavaScript. Alors pourquoi utiliser JTransc ?
L'une des raisons est que JTransc autorise les projets mixtes. Vous pouvez utiliser des bibliothèques Java avec du code Kotlin par exemple.
Au lieu d'utiliser plusieurs technologies, JTransc vous permet de cibler plusieurs langages et plateformes.
L’utilisation d’une seule technologie garantit la cohérence entre les cibles. Par exemple, Kotlin JS ne prend pas en charge la réflexion Java complète.
Au lieu de générer du C++ puis d'utiliser emscripten ou d'autres technologies, JTransc vous permet de générer du code natif de votre plateforme. Par exemple : lorsque vous ciblez JS, vous utiliserez le meilleur GC natif JS au lieu d'un GC émulé en C++ et emscripten. Et pas besoin de connaître au préalable la taille appropriée du tas pour cibler JS.
Certaines classes comme String, StringBuilder ou ArrayList sont implémentées de manière à utiliser les fonctionnalités natives JavaScript/AS3/Dart.... Comme JavaScript String, Array, etc.
Au lieu de générer d'énormes projets incluant tout, ou d'avoir des fichiers de configuration proguard complexes. JTransc inclut le TreeShaking de manière simple. Vous pouvez utiliser des annotations pour conserver des méthodes, des classes et des champs ou d'autres annotations. Il fonctionne pour toutes les cibles et est entièrement intégré au workflow.
JTransc prend en charge les applications Java simples utilisant Threads et sync I/O dans JS, les convertissant en une version asynchrone dans JS en utilisant les branches de détection wait/async n'utilisant pas Threads/sync I/O pour des performances plus rapides.
Parallèlement à JTransc, j'écris un ensemble de bibliothèques pour pouvoir utiliser JTransc.
https://github.com/soywiz/korlibs
Moteur de jeu Kotlin qui utilise JTransc pour multiplateforme : https://github.com/soywiz/korge
Il existe également un backend GDX utilisant JTransc+Haxe : https://github.com/jtransc/gdx-backend-jtransc
JTransc
JTransc (Java Trans Compiler) est un AOT (compilateur anticipé) qui compile les fichiers .class et .jar dans un langage de programmation cible/exécutable regroupant toutes les dépendances requises dans un seul fichier ou dossier, sans nécessiter de gigue ou d'exécution externe. .
Au début, il générait as3 et javascript, mais il existe actuellement plusieurs cibles : Javascript, Haxe, C++ et D. Haxe lui-même permet de cibler plusieurs autres langages : JS, AS3, C++, C#, Java, PHP et Python. Cela permet à son tour d’exécuter le programme sur différentes plates-formes telles que les ordinateurs de bureau, les navigateurs et les mobiles.
L'objectif de ce projet est d'apporter la haute productivité de Kotlin (et d'autres langages JVM) à la plateforme hautement portable Haxe. Il prend déjà en charge la plupart des API Java de base et l'API de réflexion Java simple.
L'accent initial est mis sur JVM6, Kotlin et Games, mais il s'améliorera à l'avenir en prenant en charge les nouvelles versions de JVM et d'autres cas d'utilisation tels que les applications frontend et backend.
À l'heure actuelle, JTransc prend en charge les lambdas Java8 et les méthodes par défaut.
Il existe un module appelé jtransc-rt-core qui peut être inclus dans n'importe quel projet (qu'il utilise ou non JTransc). Il fournit le package com.jtransc
, des annotations spécifiques, un accès rapide à la mémoire et des API asynchrones, qui utiliseront les fonctionnalités de JTransc lors de la compilation à l'aide de JTransc.
Voici également quelques projets d'applications multimédia utilisant jtransc :
Vous pouvez trouver des exemples ici 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
C'est la manière préférée d'utiliser JTransc. Vous pouvez l'inclure depuis Maven Central ou directement depuis le référentiel de plugins Gradle :
plugins {
id "com.jtransc" version "0.6.8"
}
Cela ajoutera plusieurs tâches pour créer votre application. Il existe un bloc Gradle appelé jtransc, qui vous permet de spécifier des éléments pour la construction.
Par exemple, gradle runJs
générerait un fichier JS dans build/jtransc-js/program.js
et l'exécuterait à l'aide de node.js.
Vous pouvez voir comment l'utiliser dans la documentation.
Vous pouvez également utiliser Maven, mais en raison de la nature de JTransc, Gradle convient mieux. Vous pouvez voir comment l'utiliser dans la documentation.
Il existe un plugin en préparation qui permettra d'exécuter et de déboguer dans IntelliJ. Même si ce n'est pas encore prêt. Vous pouvez le trouver dans le dossier jtransc-intellij-plugin.
À terme, cet AST intermédiaire pourra être généré ou consommé. Ainsi, d'autres pourraient générer cela sans JVM et d'autres pourraient générer d'autres cibles à partir de cet AST directement sans toutes les complexités des IR basés sur la pile.
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 vous essayez d'installer, vous manquez de mémoire, choisissez le mode manuel. 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
FENÊTRES
PATH
sur la première ligneSolution de contournement pour les gros projets : haxe 3.4.2 peut échouer en raison d'un manque de mémoire. Vous pouvez essayer de remplacer les fichiers haxe à partir du développement, mais de cette manière dangereuse, et obtenir uniquement une stabilité, voir l'historique sur github. Mon choix actuel : 2017-03-23 05:39:01 >> 4876859 >> haxe_2017-03-23_development_ada466c.tar.gz
FENÊTRES 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 vous utilisez MSVC 2013 avec la norme c99 qui n'est pas entièrement prise en charge, remplacez dans libopenal tout en ligne par __inline et snprintf par _snprintf
lime rebuild windows -64
MAC
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root