Swing vs JavaFx สำหรับแอพพลิเคชันเดสก์ท็อป [ปิด]


195

ฉันมีโปรแกรมใหญ่มากที่ใช้ SWT โปรแกรมสามารถทำงานได้ทั้ง Windows, Mac และ Linux และเป็นแอปพลิเคชันเดสก์ท็อปขนาดใหญ่ที่มีองค์ประกอบมากมาย ตอนนี้ SWT ค่อนข้างเก่าฉันต้องการเปลี่ยนเป็น Swing หรือ JavaFX และฉันอยากได้ยินความคิดของคุณในสามสิ่ง

ความกังวลหลักของฉันคืออะไรจะดีกว่าสำหรับแอปพลิเคชัน GUI เดสก์ท็อป (ฉันดูออนไลน์และผู้คนจำนวนมากแนะนำว่า JavaFX นั้นดีพอ ๆ กับ Swing แต่ฉันไม่เห็นข้อโต้แย้งที่ถูกต้องมากมายยกเว้นสงครามความคิดเห็นธรรมดา ๆ ) ต้องทำงานกับทั้ง Windows, Mac และ Linux ดิสทริบิวชันยอดนิยมบางตัว

  • อะไรจะสะอาดและง่ายต่อการดูแล?

  • และจะสร้างอะไรได้เร็วขึ้นตั้งแต่ต้น?

ฉันใช้ MVC methology ในแอปพลิเคชันของฉันหากนั่นเป็นความช่วยเหลือ


23
JavaFX ดีนะคุณเริ่มจากศูนย์แล้ว นอกจากนี้เนื่องจาก JavaFX แทนที่ Swing อย่างเป็นทางการเป็นไลบรารี UI ของ Oracle สำหรับ Java นั่นไม่ได้หมายความว่า Swing จะถูกกำจัดไป นั่นหมายถึง JavaFX จะได้รับความสนใจมากขึ้นในทุกรุ่น ด้วยที่กล่าวว่ามีคำถามล้านและครึ่งในหัวข้อนี้ใน SO และที่อื่น ๆ บน Google แล้ว
nico_c

3
stackoverflow.com/questions/10587713/…ฉันพูดถึง Google เช่นกัน มากมายที่นั่นแล้ว
nico_c

ตกลงดังนั้นข้อเสนอแนะจริง ๆ แล้วดูเหมือนจะ fx แล้วฉันจะให้เปิดนี้ แต่จะยอมรับคำตอบที่ฉันเดา ขอบคุณสำหรับลิงค์
พันล้าน

1
นี่คือข้อมูลสรุปอย่างย่อของ JavaFXแม้ว่า SWT, Swing หรือ JavaFX ใด ๆ จะทำงานเพื่อสร้างแอปพลิเคชันเดสก์ท็อป
jewelsea

ไม่มีใครพูดถึงมัน แต่ JavaFX ไม่คอมไพล์หรือรันบนสถาปัตยกรรมบางอย่างที่ถือว่า "เซิร์ฟเวอร์" โดย Oracle (เช่น Solaris) เนื่องจากการสนับสนุน "jfxrt.jar" หายไป
Malcolm Boekhoff

คำตอบ:


155

อะไรจะสะอาดและง่ายต่อการดูแล?

ทุกสิ่งเท่ากันอาจเป็น JavaFX - API นั้นมีความสอดคล้องกันมากขึ้นในองค์ประกอบต่างๆ แต่นี้ขึ้นอยู่มากขึ้นในวิธีการรหัสที่เขียนมากกว่าสิ่งที่ห้องสมุดจะใช้ในการเขียน

แล้วจะสร้างอะไรเร็วขึ้นกว่าเดิม?

ขึ้นอยู่กับสิ่งที่คุณกำลังสร้าง Swing มีส่วนประกอบมากขึ้นสำหรับมัน (บุคคลที่สามรวมถึงในตัว) และไม่ใช่ทั้งหมดที่ทำไปสู่แพลตฟอร์ม JavaFX ที่ใหม่กว่าดังนั้นจึงอาจมีจำนวนครั้งในการประดิษฐ์ล้อใหม่หากคุณต้องการบางสิ่งบางอย่าง กำหนดเองบิต ในทางกลับกันหากคุณต้องการเปลี่ยนภาพเคลื่อนไหว / ภาพเคลื่อนไหว / วิดีโอสิ่งนี้เป็นคำสั่งขนาดที่ง่ายกว่าใน FX

อีกสิ่งหนึ่งที่ควรคำนึงถึงคือรูปลักษณ์และความรู้สึก หากคุณต้องมีรูปลักษณ์และระบบเริ่มต้นอย่างแน่นอน JavaFX (ปัจจุบัน) ไม่สามารถให้สิ่งนี้ได้ ไม่ใช่เรื่องใหญ่สำหรับฉัน (ฉันชอบรูปลักษณ์ FX ที่เป็นค่าเริ่มต้นอยู่แล้ว) แต่ฉันรู้ว่านโยบายบางข้อได้ จำกัด การใช้สไตล์ของระบบ

โดยส่วนตัวแล้วฉันเห็นว่า JavaFX เป็นห้องสมุด UI "ที่กำลังจะมาถึง" ที่ยังไม่ค่อยมี (แต่มากกว่าที่ใช้งานได้) และแกว่งเป็นห้องสมุด UI ของเขตแดน - มรดกที่โดดเด่นและสนับสนุนในขณะนี้ แต่อาจจะไม่ ในอีกไม่กี่ปีข้างหน้า (และโอกาสที่ FX จะแซงได้ในบางจุด)


1
ฉันเชื่อว่าประเด็นเหล่านี้ทั้งหมดนำไปใช้กับโลก NET ได้เช่นกันในโลกเดสก์ท็อป GUI ที่ Windows Presentation Foundation เป็นวิธีการที่ทันสมัยซึ่งมีวัตถุประสงค์เพื่อแทนที่ฟอร์ม Windows เก่าดังนั้นจึงดีกว่าในทุกด้านยกเว้นในทางทฤษฎี แต่เป็นเวลาหลายปีแล้ว) ที่จะสนับสนุนการควบคุมทั่วไป / รูปลักษณ์เปลือกที่คุณคาดหวังเช่นการโต้ตอบไฟล์ / เบราว์เซอร์ไดเรกทอรี / การควบคุมมุมมองแบบต้นไม้
bitoolean

84

ตามที่ระบุไว้โดย Oracle, JavaFX เป็นขั้นตอนต่อไปในกลยุทธ์ลูกค้าริชชวาของพวกเขา ดังนั้นนี่คือสิ่งที่ฉันแนะนำสำหรับสถานการณ์ของคุณ:

อะไรจะง่ายและสะอาดกว่าในการรักษา

  • JavaFX ได้แนะนำการปรับปรุงหลายอย่างเกี่ยวกับ Swing เช่นความเป็นไปได้ในการทำเครื่องหมาย UIs ด้วย FXML และการทำ CSS ด้วย มันมีศักยภาพที่ดีในการเขียนโค้ดแบบแยกส่วนที่สะอาดและบำรุงรักษาได้

สิ่งที่จะสร้างได้เร็วกว่าเดิมตั้งแต่เริ่มต้น

  • สิ่งนี้ขึ้นอยู่กับทักษะและเครื่องมือที่คุณใช้
    • สำหรับการสวิง IDEs หลายตัวเสนอเครื่องมือสำหรับการพัฒนาอย่างรวดเร็ว สิ่งที่ฉันพบได้ดีที่สุดคือตัวสร้าง GUI ในNetBeans NetBeans
    • JavaFX ได้รับการสนับสนุนจาก IDE ต่างๆเช่นกันแม้ว่าจะยังไม่โตเท่าที่ Swing สนับสนุนในขณะนี้ อย่างไรก็ตามการสนับสนุนมาร์กอัปใน FXML & CSS ทำให้การพัฒนา GUI บน JavaFX ง่ายขึ้น

รองรับรูปแบบ MVC

  • JavaFX เป็นมิตรกับรูปแบบ MVC และคุณสามารถแยกงานของคุณออกเป็น: การนำเสนอ (FXML, CSS), แบบจำลอง (Java, วัตถุโดเมน) และตรรกะ (Java)
  • IMHO การสนับสนุน MVC ใน Swing ไม่น่าสนใจมาก การไหลที่คุณจะเห็นในองค์ประกอบต่าง ๆ ขาดความมั่นคง

สำหรับข้อมูลเพิ่มเติมโปรดดูโพสต์คำถามที่พบบ่อยเหล่านี้โดย Oracle เกี่ยวกับ JavaFX ที่นี่


14

ไม่มีใครพูดถึงมัน แต่ JavaFX ไม่คอมไพล์หรือรันบนสถาปัตยกรรมบางอย่างที่ถือว่า "เซิร์ฟเวอร์" โดย Oracle (เช่น Solaris) เนื่องจากการสนับสนุน "jfxrt.jar" ที่ขาดหายไป ติดกับ SWT จนกว่าจะมีประกาศ


13
@Quillion ขอเป็นพิเศษเพื่อสร้างแอปพลิเคชันเดสก์ท็อปที่"ต้องทำงานกับทั้ง windows, mac และ linux ที่ได้รับความนิยม" . ดังนั้นฉันคิดว่าเขาไม่สนใจโซลาริส
ทิมBüthe

5

ฉันไม่คิดว่าจะมีคำตอบที่ถูกต้องสำหรับคำถามนี้ แต่คำแนะนำของฉันคือติดกับ SWT ถ้าคุณไม่พบข้อ จำกัด ที่รุนแรงซึ่งต้องการการยกเครื่องขนาดใหญ่เช่นนี้

นอกจากนี้ SWT ยังใหม่กว่าและได้รับการดูแลมากกว่า Swing (แต่เดิมพัฒนามาเพื่อใช้แทน Swing โดยใช้ส่วนประกอบดั้งเดิม)


16
SWT ไม่เคยตั้งใจจะเปลี่ยน Swing งั้นเหรอ Swing มาพร้อมกับ Java จาก SUN และ SWT ทำงานบนแพลตฟอร์ม 4 หรือ 5 ตัวเท่านั้นและมาจาก IBM และได้รับการพัฒนาเพิ่มเติมใน Eclispe Foundation ถ้าคุณสามารถพูดได้: SWT มีวัตถุประสงค์เพื่อแทนที่ AWT
Angel O'Sphere

0

ฉันมองไปรอบ ๆ เพื่อค้นหาส่วนประกอบ (บุคคลที่สาม) ที่ทำในสิ่งที่คุณต้องการ ฉันต้องสร้างส่วนประกอบ Swing ที่กำหนดเองสำหรับมุมมองกำหนดการที่คุณสามารถจองทรัพยากรหลายรายการได้เช่นเดียวกับตารางแบบ Excel ที่ทำงานได้ดีกับการนำทางแป้นพิมพ์และอื่น ๆ ฉันมีเวลาที่แย่มากที่จะให้พวกเขาทำงานได้ดีเพราะฉันต้องเจาะลึกความซับซ้อนหลายอย่างของ Swing ทุกครั้งที่ฉันเจอปัญหา พฤติกรรมการใช้เมาส์และโฟกัสและสิ่งอื่น ๆ มากมายอาจเป็นเรื่องยากที่จะทำถูกโดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ Swing ทั่วไป ฉันหวังว่า JavaFX จะเป็นแนวอนาคตมากขึ้นและราบรื่นออกจากกล่อง


0

สำหรับโน้ตบุ๊กรุ่นเก่าที่มีแอพ Video Swing เริ่มต้นและทำงานได้เร็วกว่าแอพ JavaFX มาก สำหรับการพัฒนาผมขอแนะนำให้เปลี่ยนไปใช้แอพ Scala - Scala Swing ที่เทียบเคียงได้มีโค้ดน้อยกว่า Java ถึง 2..3 สำหรับ Swing vs SWT: Netbeans GUI เร็วกว่า Eclipse ...


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