มันทำงานได้อย่างไรกับพอร์ตแอปพลิเคชัน C ++ ไปยัง Java bytecode โดยใช้ LLVM (ฉันเดา LLJVM)
สิ่งที่เป็นอยู่ในปัจจุบันคือเรามีกระบวนการเขียนใน C ++ แต่ไคลเอนต์ใหม่ได้รับคำสั่งให้สามารถรันโปรแกรมในรูปแบบที่หลากหลายโดยใช้ Java Virtual Machine ที่ไม่มีรหัสพื้นเมือง (ไม่มี JNI) แนวคิดคือสามารถนำ jar ที่สร้างขึ้นมาและคัดลอกไปยังระบบอื่น (Linux, Win, 32 bits - 64 bits) และควรใช้งานได้
มองไปรอบ ๆ ดูเหมือนว่ามันเป็นไปได้ที่จะรวบรวมรหัส C ++ กับ LLVM IR และจากนั้นรหัสไปยัง java bytecode ไม่จำเป็นต้องใช้รหัสที่สร้างขึ้นเพื่อให้สามารถอ่านได้
ฉันมีการทดสอบเล็กน้อยกับสิ่งที่คล้ายกันโดยใช้ emscripten นี้ใช้รหัส C ++ และรวบรวมไปยัง JavaScript ผลลัพธ์คือ JS ที่ถูกต้อง แต่อ่านไม่ได้ทั้งหมด (ดูเหมือนว่า assambler)
- มีใครทำพอร์ตของแอปพลิเคชันจาก C ++ ไปยัง Java bytecode โดยใช้ tecnique นี้หรือไม่?
- เราเจอปัญหาอะไรบ้าง?
- เป็นวิธีการที่ถูกต้องสำหรับรหัสการผลิตหรือไม่
เพื่อให้ชัดเจนยิ่งขึ้นหลังจากความเห็นของฉันบางทีพอร์ตอาจไม่ได้ใช้อย่างดีฉันไม่คาดหวังว่าซอร์สโค้ดที่อ่านได้จะเป็นผลลัพธ์เพียง java bytecode ดังนั้นจึงไม่ใช่ 'พอร์ต' ซึ่งจะพัฒนาขึ้นอีกต่อไปเพียงแค่ แพลตฟอร์เป้าหมายต้องเป็น java JVM ไม่ใช่ assamblear ดั้งเดิม
หมายเหตุ: ฉันทราบว่าขณะนี้เรามีไลบรารี C ++ ที่ไม่เป็นมาตรฐานและใกล้เคียงเรากำลังมองหาที่จะลบรหัสที่ไม่ได้มาตรฐานนี้และไลบรารี่แหล่งที่อยู่ใกล้ทั้งหมดและใช้ซอฟต์แวร์โอเพนซอร์สฟรี Libre ดังนั้นให้สมมติว่า รหัสทั้งหมดที่มีอยู่ในเวลารวบรวม
Note2: มันไม่ใช่ตัวเลือกในการเขียนรหัส C ++ แบบพกพาแล้วคอมไพล์ไปยังแพลตฟอร์มเป้าหมายที่ต้องการโปรแกรมที่คอมไพล์ต้องเป็นหลายแพลตฟอร์มดังนั้นการใช้ JVM
Note3: ตอนนี้เราไม่ได้มองหาวิธีการแก้ปัญหาที่คล้ายกันที่ใช้กับ Python หรือฐานภาษาอื่น ๆ แต่ฉันก็อยากจะได้ยินเช่นกัน ด้วยสิ่งนี้ฉันหมายความว่าเป้าหมายการปฏิบัติการของเราจะต้องเป็น java bytecode แต่ถ้ามีตัวเลือกในการคอมไพล์ C ++ กับรหัสที่รวบรวมไพ ธ อนที่ถูกต้องฉันก็อยากจะได้ยินเกี่ยวกับพวกเขาเช่นกัน