คุณสามารถค้นหาเอกสารได้ที่วิกิ
JTransc (Java Trans Compiler) เป็น AOT (คอมไพเลอร์ล่วงหน้า) ที่คอมไพล์ไฟล์ .class และ .jar เป็นภาษาโปรแกรมเป้าหมาย / ปฏิบัติการรวมการขึ้นต่อกันที่จำเป็นทั้งหมดในไฟล์หรือโฟลเดอร์เดียว โดยไม่ต้องมีการกระวนกระวายใจหรือรันไทม์ภายนอก .
มีเทคโนโลยีมากมายในการแปลงภาษาเป็นภาษาอื่น เช่น การแปลง Java เป็น JavaScript หรือแบ็กเอนด์ KotlinJS Kotlin ที่กำหนดเป้าหมาย JavaScript แล้ว เหตุใดจึงใช้ JTransc
เหตุผลหนึ่งก็คือ JTransc อนุญาตให้มีโปรเจ็กต์แบบผสมได้ คุณสามารถใช้ไลบรารี Java กับโค้ด Kotlin ได้ เป็นต้น
แทนที่จะใช้เทคโนโลยีหลายอย่าง JTransc ช่วยให้คุณสามารถกำหนดเป้าหมายไปยังหลายภาษาและแพลตฟอร์มได้
การใช้เพียงเทคโนโลยีเดียวรับประกันความสอดคล้องระหว่างเป้าหมาย ตัวอย่างเช่น Kotlin JS ไม่รองรับการสะท้อน Java แบบเต็ม
แทนที่จะสร้าง C++ แล้วใช้ emscripten หรือเทคโนโลยีอื่นๆ JTransc อนุญาตให้คุณสร้างโค้ดที่มาจากแพลตฟอร์มของคุณ ตัวอย่างเช่น: เมื่อกำหนดเป้าหมาย JS คุณจะใช้ GC ที่ดีที่สุดในคลาส JS ดั้งเดิม แทน GC ที่จำลองใน C++ และ emscripten และไม่จำเป็นต้องรู้ขนาดฮีปที่เหมาะสมล่วงหน้าเพื่อกำหนดเป้าหมาย JS
บางคลาส เช่น String, StringBuilder หรือ ArrayList ได้รับการปรับใช้ในลักษณะที่ใช้ JavaScript/AS3/Dart... สิ่งอำนวยความสะดวกดั้งเดิม เช่น JavaScript String, Array และอื่นๆ
แทนที่จะสร้างโปรเจ็กต์ขนาดใหญ่ที่มีทุกอย่าง หรือมีไฟล์การกำหนดค่า proguard ที่ซับซ้อน JTransc รวมการเขย่าต้นไม้ด้วยวิธีง่ายๆ คุณสามารถใช้คำอธิบายประกอบเพื่อเก็บวิธีการ คลาส และฟิลด์ หรือคำอธิบายประกอบอื่นๆ ใช้งานได้กับทุกเป้าหมายและบูรณาการเข้ากับขั้นตอนการทำงานอย่างสมบูรณ์
JTransc รองรับแอปพลิเคชัน Java ธรรมดาโดยใช้ Threads และ sync I/O ใน JS โดยแปลงให้เป็นเวอร์ชันอะซิงโครนัสใน JS โดยใช้ await/async การตรวจจับสาขาที่ไม่ได้ใช้ Threads/sync I/O เพื่อประสิทธิภาพที่เร็วที่สุด
ตาม JTransc ฉันกำลังเขียนชุดไลบรารีเพื่อให้สามารถใช้ JTransc ได้
https://github.com/soywiz/korlibs
Kotlin Game Engine ที่ใช้ JTransc สำหรับหลายแพลตฟอร์ม: https://github.com/soywiz/korge
นอกจากนี้ยังมีแบ็กเอนด์ GDX โดยใช้ JTransc+Haxe: https://github.com/jtransc/gdx-backend-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 ที่พกพาสะดวก รองรับ Java API หลักส่วนใหญ่และ API การสะท้อน Java ธรรมดาตั้งแต่แกะกล่องแล้ว
จุดเริ่มต้นมุ่งเน้นไปที่ JVM6, Kotlin และเกม แต่จะดีขึ้นในอนาคต โดยรองรับเวอร์ชัน jvm ที่ใหม่กว่า และกรณีการใช้งานอื่นๆ เช่น แอปพลิเคชันส่วนหน้าและส่วนหลัง
ขณะนี้ JTransc รองรับ Java8 lambdas และวิธีการเริ่มต้น
มีโมดูลชื่อ 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 central หรือโดยตรงจากที่เก็บปลั๊กอิน gradle:
plugins {
id "com.jtransc" version "0.6.8"
}
นี่จะเป็นการเพิ่มงานหลายอย่างสำหรับการสร้างแอปพลิเคชันของคุณ มี gradle block ที่เรียกว่า jtransc ซึ่งให้คุณระบุสิ่งต่าง ๆ สำหรับ build ได้
ตัวอย่างเช่น 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 all inline เป็น __inline และ snprintf เป็น _snprintf
lime rebuild windows -64
แม็ค
brew install automake libtool pkg-config
sudo npm install -g ios-deploy --unsafe-perm --allow-root