หากพัฒนาโปรแกรมด้วยภาษา Java เมื่อ Build เสร็จแล้วจะได้ไฟล์นามสกุล .jar ซึ่งผู้ใช้งานต้องติดตั้ง Java Runtime Environment (JRE) ก่อนจึงจะสามารถเปิดโปรแกรมได้
แต่หากต้องการให้โปรแกรมดูเหมือนโปรแกรม Windows ทั่วไป สามารถสร้างไฟล์ .exe ได้ด้วย Launch4j ซึ่งเป็นโปรแกรมฟรีและได้รับความนิยมมากที่สุดสำหรับแปลงไฟล์ .jar เป็น .exe
ข้อควรรู้
Launch4j ไม่ได้แปลง Java เป็นภาษาเครื่อง (Native Code) แต่เป็นการสร้างตัว Launcher (.exe) ที่ใช้เรียกโปรแกรม Java (.jar) อีกที
Launch4j คืออะไร
Launch4j เป็นโปรแกรม Open Source สำหรับสร้างไฟล์ .exe จากโปรแกรม Java
คุณสมบัติเด่น
- แปลงไฟล์
.jarเป็น.exe - รองรับการกำหนดไอคอนโปรแกรม (.ico)
- ซ่อนหน้าต่าง Console
- ตรวจสอบเวอร์ชัน Java ก่อนเปิดโปรแกรม
- สามารถกำหนดให้ใช้ JRE ที่แถมมากับโปรแกรม (Bundled JRE)
- รองรับทั้ง Windows 32-bit และ 64-bit
เหมาะสำหรับ
- โปรแกรม Swing
- โปรแกรม JavaFX
- โปรแกรม AWT
- โปรแกรม Desktop ทั่วไป
ข้อดีของ Launch4j
- ฟรี 100%
- ใช้งานง่าย
- ไฟล์มีขนาดเล็ก
- รองรับ Icon
- ไม่ต้องเขียนโค้ดเพิ่ม
- รองรับการสร้างผ่าน GUI และ XML
- ใช้ร่วมกับ JRE ที่ Bundle มาได้
ดาวน์โหลด Launch4j
สามารถดาวน์โหลดได้จากเว็บไซต์ทางการ
https://launch4j.sourceforge.net
เมื่อดาวน์โหลดแล้วแตกไฟล์ เช่น
Launch4j\
launch4j.exe
launch4jc.exe
demo\
lib\
ไม่ต้องติดตั้ง สามารถใช้งานได้ทันที
เตรียมไฟล์ก่อนแปลง
สมมติว่าโปรเจกต์ของเรามีไฟล์ดังนี้
Project
├── TimeComputer.java
├── TimeComputer.class
├── time-computer.jar
├── icon.ico
├── launch4j.xml
└── jre\
สร้างไฟล์ JAR
Compile
javac TimeComputer.java
สร้าง JAR
jar cfe time-computer.jar TimeComputer *.class
เมื่อเสร็จจะได้
time-computer.jar
เปิด Launch4j
เปิด
launch4j.exe
จะพบหน้าต่างตั้งค่าหลัก
ตั้งค่า Basic
Output file
กำหนดชื่อไฟล์ EXE
TimeComputer.exe
Jar
เลือกไฟล์
time-computer.jar
Icon
เลือก
icon.ico
รองรับเฉพาะ
.ico
ไม่รองรับ
.png
.jpg
Header Type
เลือก
GUI
เพื่อไม่ให้เปิดหน้าต่าง Console
ตั้งค่า JRE
เปิดแท็บ
JRE
กำหนด
Minimum JRE Version
1.8.0
หาก Bundle JRE ไว้ด้วย
jre
หมายถึง
TimeComputer.exe
jre\
อยู่โฟลเดอร์เดียวกัน
กำหนด Main Class
หากไม่ได้ใช้ Executable JAR
ให้ระบุ
TimeComputer
ซึ่งเป็นชื่อคลาสที่มี
public static void main()
Build
กดปุ่ม
Build Wrapper
หรือ
Gear Icon
เมื่อสำเร็จจะได้
TimeComputer.exe
ใช้ไฟล์ XML แทน GUI
Launch4j รองรับการตั้งค่าผ่าน XML
ตัวอย่าง
<launch4jConfig>
<outfile>TimeComputer.exe</outfile>
<jar>time-computer.jar</jar>
<icon>icon.ico</icon>
<headerType>gui</headerType>
<chdir>.</chdir>
<classPath>
<mainClass>TimeComputer</mainClass>
</classPath>
<jre>
<path>jre</path>
<minVersion>1.8.0</minVersion>
<bundledJre64Bit>false</bundledJre64Bit>
</jre>
</launch4jConfig>
จากนั้นเลือก
Open Config
แล้วกด
Build Wrapper
Bundle JRE ไปพร้อมโปรแกรม
หากไม่ต้องการให้ผู้ใช้ติดตั้ง Java
ให้คัดลอก
jre
มาไว้ข้าง ๆ โปรแกรม
ตัวอย่าง
TimeComputer.exe
time-computer.jar
jre\
Launch4j จะใช้ Java ในโฟลเดอร์นี้ก่อน
เหมาะสำหรับ
- Windows XP
- Windows 7
- เครื่องที่ไม่มี Java
การแจกโปรแกรม
ห้ามแจกเฉพาะ
TimeComputer.exe
เพราะตัว EXE เป็นเพียง Launcher
ต้องแจกอย่างน้อย
TimeComputer.exe
time-computer.jar
jre\
หรือบีบอัดเป็น ZIP
TimeComputer.zip
ให้ผู้ใช้แตกไฟล์ก่อนใช้งาน
ปัญหาที่พบบ่อย
This application requires Java Runtime Environment
สาเหตุ
- ไม่มี Java
- หา JRE ไม่เจอ
- เวอร์ชัน Java ต่ำเกินไป
วิธีแก้
- ติดตั้ง JRE
- หรือ Bundle โฟลเดอร์
jre - ตรวจสอบ
<path>jre</path>ในไฟล์ XML
Icon ไม่ขึ้น
ตรวจสอบว่า
- เป็นไฟล์
.ico - มีขนาด 16×16, 32×32, 48×48 และ 256×256 ภายในไฟล์เดียว
- เลือกไฟล์ Icon ใน Launch4j ถูกต้อง
- ลบไฟล์
.exeเดิมก่อน Build ใหม่ - หาก Windows ยังแสดงไอคอนเดิม ให้รีเฟรชหรือรีสตาร์ต Explorer เพราะ Windows มีการแคชไอคอน
Build ไม่ผ่าน
ตรวจสอบ
- ไฟล์
.jarมีอยู่จริง - Main Class ถูกต้อง
- XML ไม่มี Syntax Error
- ชื่อไฟล์สะกดถูกต้อง
ข้อดีและข้อเสีย
ข้อดี
- ฟรี
- ใช้งานง่าย
- รองรับ Icon
- รองรับ JRE แบบ Bundle
- เหมาะกับโปรแกรม Java Desktop
- มีทั้ง GUI และ XML
ข้อเสีย
- ไม่ได้แปลง Java เป็น Native Code
- ยังต้องใช้ไฟล์
.jar - หาก Bundle JRE จะทำให้ขนาดโปรแกรมใหญ่ขึ้น (ประมาณ 40–100 MB ตาม JRE ที่ใช้)
สรุป
Launch4j เป็นเครื่องมือที่ช่วยสร้างไฟล์ .exe สำหรับโปรแกรม Java ได้อย่างสะดวก โดยไม่ต้องแก้ไขโค้ดของโปรแกรม รองรับการกำหนดไอคอน การตรวจสอบเวอร์ชัน Java และการ Bundle JRE ไปพร้อมกับโปรแกรม ทำให้ผู้ใช้งานปลายทางสามารถเปิดโปรแกรมได้ง่ายเหมือนโปรแกรม Windows ทั่วไป และหากต้องการรองรับเครื่องที่ไม่มี Java หรือเครื่องรุ่นเก่า เช่น Windows XP ก็สามารถใช้ JRE 8 แบบ 32 บิตร่วมกับ Launch4j ได้อย่างมีประสิทธิภาพ
