เกม Java บนเดสก์ท็อปสามารถกระจายโดยไม่ต้องพึ่งพา Java runtime อย่างไร


9

เป็นไปได้หรือไม่ที่จะเปลี่ยนแอปพลิเคชัน Java ให้กลายเป็นแพคเกจแบบสแตนด์อโลนที่เรียกว่า "ออกนอกกรอบ"? ผู้ใช้ไม่ควรต้องติดตั้ง Java JRE ใด ๆ และไม่ควรติดตั้ง JRE และติดตั้งให้กับผู้ใช้

การแจกจ่ายขั้นสุดท้ายควรมีการปฏิบัติการแบบเนทีฟ (หวังว่าจะเป็นหนึ่งเดียวสำหรับ Windows, Mac และ Linux) พร้อมกับไฟล์ข้อมูลปกติและ JAR พิเศษอื่น ๆ หากจำเป็น ฉันไม่ได้มองหาวิธีแก้ปัญหา "ไฟล์เดียว" โดยเฉพาะ - ฉันต้องการให้ไฟล์ข้อมูลไม่ได้ถูกทำให้ยุ่งเหยิง

สิ่งนี้สามารถทำได้?

คำตอบ:


8

จุดหลักคือผู้ใช้ไม่ควรทำการติดตั้ง Java JRE ใด ๆ และไม่ควรติดตั้ง JRE และติดตั้งให้กับผู้ใช้

คุณสามารถใช้ซอร์สโค้ด / bytecode ของ Java ในการคอมไพล์โค้ดเครื่อง มีExcelsior JETสำหรับ Windows และ Linux (ต้องมีลิขสิทธิ์) และGNU Compiler สำหรับ Javaที่เก่า

หากคุณมีจาวาในเกมของคุณโดยไม่ต้องทำการติดตั้งคุณสามารถแพ็คเกจ Java Runtime กับเกมของคุณและใช้สคริปต์เริ่มต้นเพื่อตั้งค่าJAVA_HOMEเป็นตำแหน่ง JRT ของคุณก่อนที่จะเปิดเกม

แก้ไข: (ตอบสนองความคิดเห็น) การใช้ตัวเลือกที่สองคุณจะยังคงต้องสร้างที่แตกต่างกันสำหรับแพลตฟอร์มที่แตกต่างกันโดยใช้ Java runtime ที่เหมาะสมสำหรับแพลตฟอร์มนั้น

EDIT2: Aslo เห็นความคิดเห็นล่าสุดของ Dmitry


3
หากเกมของคุณไม่ใช่แบบเชิงพาณิชย์คุณจะได้รับใบอนุญาต Excelsior JETฟรี
Dmitry Leskov

ตัวเลือกที่สองฟังดูดี แต่ถ้าฉันติดตั้ง Windows JRE ของฉันมันเป็นแพลตฟอร์มข้ามแพลตฟอร์มหรือไม่? ในทำนองเดียวกันกับ Excelsior ฉันจำเป็นต้องเรียกใช้คอมไพเลอร์ดังกล่าวในสามระบบปฏิบัติการที่แตกต่างกันหรือไม่
leokhorn

1
คุณจะต้องรวมแพลตฟอร์ม JRE กับแต่ละรีลีส แต่โดยหลักแล้วจะยังคงข้ามแพลตฟอร์ม
Derek

1
@leokhorn ในบางจุดจะต้องมีรหัสเนทีฟ ไม่ว่าคุณจะต้องคอมไพล์โค้ดเนทีฟหรือคุณต้องรันบนเนทีฟ VM ไม่มีแผน C.
Adrian

1
GCJ อยู่ในขณะนี้อย่างเป็นทางการที่ตายในขณะที่ Excelsior JET Standard Edition ได้กลายเป็นฟรีสำหรับใช้ในเชิงพาณิชย์เช่นกัน แต่ถ้ากังวลเดียวของคุณคือความสะดวกในการจัดจำหน่ายที่มีหลายทางเลือก
Dmitry Leskov

1

สำหรับ Mac ดูเอกสาร Oracle สำหรับบรรจุภัณฑ์เป็น app Java สำหรับ Mac พวกเขาได้ตั้งค่า Java 7 เพื่อให้คุณสามารถรวมกลุ่มรันไทม์ไว้ในกลุ่มแอปพลิเคชันที่มีไฟล์ jar ของคุณ (.app เป็นโฟลเดอร์ที่ถือว่าใช้งานได้จริง ๆ ) ซึ่งจำเป็นสำหรับการเผยแพร่ใน Mac App Store โดยพื้นฐานแล้วชุดแอป. แอปส่วนใหญ่เหมือนกับคำตอบ JAVA_HOME ของ Eren ที่แนะนำ แต่บรรจุเป็นแอป Mac ที่ "ดั้งเดิม"

สำหรับการจัดจำหน่ายที่ไม่มี Mac App Store คุณสามารถหนีไปโดยไม่ลงนามในแอพบอกผู้ใช้ Mountain Lion ว่าพวกเขาสามารถไปรอบ ๆGatekeeper ได้ด้วยการคลิกขวา (หรือ ctrl + คลิก) บนแอปของคุณแล้วคลิก "เปิด" เมื่อพวกเขา ก่อนเปิดแอพ สิ่งนี้จะยังคงเตือนพวกเขาว่าแอปไม่ได้ลงนาม แต่จะอนุญาตให้พวกเขาเปิดมันต่อไปและอนุญาตให้พวกเขาคลิกสองครั้งที่แอพเพื่อเปิดขึ้นในภายหลัง

(หมายเหตุด้านข้าง: คุณสามารถหลีกเลี่ยงการทำเครื่องหมายในรูปแบบลินุกซ์ของเชลล์สคริปต์ว่าสามารถเรียกใช้งานได้จากนั้นสร้างชุดแอปพลิเคชั่น. NetBeans ทำสิ่งนี้บน Mac และ Linux แม้ว่าจะไม่มี JRE / JDK

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.