คุณเริ่มโยกย้ายโครงการ Swing ของคุณไปที่ JavaFX [ปิด]


13

ฉันมีโครงการอายุ 4 ปีซึ่งเขียนใน Swing + SwingX ปัจจุบันมันยังมีชีวิตอยู่และยังคงเตะ

อย่างไรก็ตามเนื่องจากมีฟีเจอร์ที่เกี่ยวข้องกับการร้องขอ GUI มากขึ้น (ตัวอย่างเช่นตารางต้นไม้แบบเรียงลำดับได้) ฉันเริ่มรู้สึกว่ายากที่จะทำตามคำขอ สิ่งนี้เป็นจริงโดยเฉพาะอย่างยิ่งเนื่องจากไม่มีการพัฒนาใด ๆ ที่เกี่ยวข้องกับโครงการ SwingX

นอกจากนี้ฉันแทบจะไม่สามารถหาสิ่งที่ดี แต่ยังคงแข็งขันพัฒนา / พัฒนา / พัฒนากรอบ Java GUI

ฉันสงสัยว่านักพัฒนา Swing จะรู้สึกเหมือนกันหรือไม่? คุณเริ่มโยกย้ายโครงการ Swing ของคุณไปยังกรอบงาน GUI ที่พัฒนาแล้วมากกว่าอย่างเช่น JavaFX หรือไม่?


คุณดู SWT หรือไม่? stackoverflow.com/questions/2306190/…
FrustratedWithFormsDesigner

7
มันไม่ได้แปลว่าอะไรถ้าคุณไม่มีสวิงนั้น
Robert Harvey

การแกว่งข้ามแพลตฟอร์ม ... javaFX2 ไม่ใช่ .. กรณีปิด

@blanc มีให้ใน Windows, Linux และ OSX YanChenhCHEOK, TreeTable มีการวางแผนสำหรับ JavaFX 8 (วางจำหน่ายกับ Java 8 ในปลายปีนี้อาจจะเป็นเดือนกันยายน)
assylias

คำตอบ:


9

ฉันย้ายไปที่ JavaFX เป็นการส่วนตัว (2.1+ ไม่ใช่เวอร์ชั่นเก่าที่แปลกกับภาษาสคริปต์ที่น่ารังเกียจ) JavaFX ใหม่นั้นไม่ได้สมบูรณ์แบบ 100% แต่ก็เป็นที่น่าพึงพอใจที่จะใช้มากกว่าสวิงฉันเห็นอนาคตที่สมเหตุสมผลสำหรับมัน (โดยเฉพาะอย่างยิ่งเมื่อใช้เครื่องมือ Webkit ในตัว)


9

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

ในขณะนี้ความกังวลของฉันคือ:

  • วัยเด็ก

    ใช่เรากำลังจะ 3.0 เร็ว ๆ นี้ แต่มันไม่ได้มีมานานแล้วและยังคงผ่านการเปลี่ยนแปลงครั้งใหญ่ ดังนั้นสำหรับซอฟต์แวร์องค์กรที่มีขนาดใหญ่และเสี่ยงต่อความเสี่ยงนี่เป็นจุดที่ค่อนข้างเจ็บ

  • ประสิทธิภาพ

    ฉันไม่เห็นข้อมูลที่เพียงพอเกี่ยวกับความแตกต่างด้านประสิทธิภาพ

  • วิดเจ็ตและส่วนประกอบ

    ฉันไม่ได้เห็นส่วนประกอบที่เพิ่มขึ้นมามากพอ ฉันคิดว่านี่อาจเกี่ยวข้องกับการยังไม่บรรลุนิติภาวะ ฉันยังไม่รู้ด้วยซ้ำว่ามันสามารถขยายและแต่งเพลงได้ดีแค่ไหนเมื่อเทียบกับ Swing

โดยรวมแล้วฉันเดาว่าข้อมูลที่ยากเกี่ยวกับข้อดีคือสิ่งที่ฉันขาดความมั่นใจในการใช้ JavaFX

ในทางกลับกัน Swing ได้รับการพิสูจน์และทดสอบแล้ว ใช่ API นั้นเป็น clunky และเรียกใช้การทำให้สมบูรณ์อัตโนมัติใน IDE ของคุณบนวัตถุ Swing อย่าง JTextPane จะทำให้ร้องไห้และร้องไห้สำหรับแม่ของมัน แต่ถ้าคุณมีความรู้เพียงพอคุณสามารถสร้าง UIs ที่น่าทึ่งด้วย Swing ได้ ทำงานได้ดี (ฉันไม่เคยซื้อความผิดพลาดในการสวิงที่มีประสิทธิภาพแย่ดูที่โพสต์บล็อกเก่า ๆ ของ Romain Guy ในบล็อกของ Sun) และช่วยให้คุณทำสิ่งที่เรียบร้อย

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


5

ตอนนี้ฉันได้ทำ JavaFX มากมายและฉันชอบมากกว่า Swing โครงสร้างซีนของฉากนั้นแตกต่างจากที่คุณคุ้นเคยกับ Swing แต่มันมีการปรับปรุงมากมาย API นั้นสนุกกับการทำงานมันให้ความรู้สึกสดชื่น

มีอีกมากมายที่คุณสามารถทำได้ด้วยมัลติมีเดียภาพเคลื่อนไหวการท่องเว็บ ตัวอย่างเช่นคุณสามารถสร้างแอปพลิเคชัน Google Mapsในโค้ดไม่กี่บรรทัดโดยฝัง html5 และ javascript

มันบอกว่าจะรวมอยู่ในรันไทม์ Java 8 ซึ่งจะหมายถึงการแทนที่แน่นอนของการแกว่งเป็นกรอบ UI เริ่มต้น

@Migration : คุณควรเริ่มต้นด้วยการแยกส่วนของแอปพลิเคชันของคุณที่สามารถแปลงเป็น JavaFX การทำงานร่วมกันของ Swing-JavaFX 2 เป็นเรื่องใหญ่คุณสามารถใช้ javafx.embed.swing.JFXPanel เพื่อฝังองค์ประกอบ JavaFX ของคุณ ดูแกว่ง-FX-การทำงานร่วมกัน (เพื่อความสมบูรณ์คุณยังสามารถฝังใน SWT)


อย่าลองสิ่งที่การทำงานร่วมกันของ swing-jfx มันค่อนข้างบั๊ก ฉันลองในแอปของฉันมันทำงานได้ในเน็ต แต่ถ้าฉันพยายามเรียกใช้. jar โดยตรงฉันได้รับข้อผิดพลาดเกี่ยวกับหน่วยความจำ / เธรดที่เกี่ยวข้อง เพิ่งเริ่มต้นใหม่ในความคิดของฉัน
คลิกโหวต

4

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


3

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

Swing อาจมีนิสัยแปลก ๆ และกำลังแสดงอายุ แต่ก็มีข้อดีดังนี้

  • ความสามารถข้ามแพลตฟอร์มที่แข็งแกร่งมากในปัจจุบันดีกว่า JavaFX มาก
  • มันเป็นผู้ใหญ่และได้รับการพิสูจน์แล้วมากกว่า JavaFX
  • มีชุมชนผู้ใช้ / ระบบนิเวศห้องสมุดขนาดใหญ่
  • คุณอาจมีทักษะการสวิงจำนวนมากอยู่แล้วหรือสามารถจ้างผู้คนได้อย่างง่ายดาย

ท้ายที่สุดถ้ามันไม่พังทำไมต้องแก้ไข?

แน่นอนสำหรับโครงการใหม่ฉันจะมองอย่างจริงจังที่ JavaFX, Android และ / หรือ GUI บนเว็บ (อาจมีบางอย่างเช่น Vaadin)


มีปัญหาใด ๆ เกี่ยวกับความสามารถข้ามแพลตฟอร์ม JavaFX หรือไม่?
คลิกโหวต

ครั้งล่าสุดที่ฉันตรวจสอบว่า JavaFX รองรับ Windows, Mac และ Linux หากคุณกำหนดเป้าหมายแพลตฟอร์มอื่น ๆ นอกเหนือจากนั้นควรตรวจสอบว่าสถานะคืออะไร ... สวิงยังคงเป็นเดิมพันที่ปลอดภัยกว่าหากคุณกำลังมองหาความสามารถข้ามแพลตฟอร์มในวงกว้าง
mikera

แพลตฟอร์มอื่น ๆ ที่น่าสนใจมีอยู่บ้าง
คลิกโหวต

1

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

อย่างไรก็ตามบางสิ่งไม่สามารถแก้ไขได้ด้วย Swing โดยไม่ต้องลงทุนเวลาและความพยายามมากขึ้นในสิ่งที่เป็นเทคโนโลยีดั้งเดิม ตัวอย่างเช่นนอกเหนือจากเหตุการณ์การใช้เมาส์อย่างง่ายอุปกรณ์หน้าจอสัมผัสใหม่และไม่ได้รับการสนับสนุนจาก Swing การให้ส่วนประกอบของเบราว์เซอร์แบบ Swing นั้นค่อนข้างยุ่งยากหรือมีราคาแพงและในกรณีของฉันวิธีการ javafx-in-swing ไม่ใช่ตัวเลือกเนื่องจากมันซับซ้อนการจัดการเหตุการณ์ UI ในรูปแบบที่ไม่สำคัญ

ฉันคิดว่ามันเก่าและซื่อตรงในเวลานั้นและหากแพลตฟอร์มของคุณไม่เปลี่ยนแปลงเท่ากับฐานรหัสของคุณ แต่สำหรับแอปพลิเคชันที่จะก้าวไปข้างหน้าสู่กรณีการใช้งานที่ทันสมัยยิ่งขึ้น JavaFX 2+ น่าจะเป็นหนทางที่จะก้าวไปข้างหน้าในกรณีของฉัน

ในฐานะที่เป็นหมายเหตุด้านข้าง: หนึ่งใน misfeature ใน Swing ฉันชอบที่จะหายไปใน jfx - แต่ไม่ได้ - เป็นวิธีการหนึ่งไปยังกฎพวกเขาทั้งหมดเพื่อ UI เหตุการณ์การจัดส่ง อินเทอร์เฟซผู้ใช้ที่ไม่สำคัญต้องใช้หลายเธรดเพื่อให้ UI มีความคมชัดและตอบสนองและปล่อยให้มันขึ้นอยู่กับผู้พัฒนาแอพพลิเคชั่นทั้งหมดเพื่อสะดุดกับข้อผิดพลาดที่เหมือนกัน


0

ฉันมีประสบการณ์ที่ยอดเยี่ยมในการใช้RCPในแอปพลิเคชันขนาดใหญ่ที่ใช้เดสก์ท็อป มันเริ่มต้นจากการเป็นนามธรรมของเลเยอร์ GUI ของ Eclipse และมาไกลตั้งแต่นั้นมา แทนที่จะเป็น Swing ซึ่งสร้างจาก AWT RCP สร้างบน JFace ซึ่งจะขึ้นอยู่กับ SWT มันช่วยให้คุณพัฒนาแอพพลิเคชั่นและใช้แนวคิด GUI ที่ Eclipse ใช้เอง (มุมมอง, บรรณาธิการ, เปอร์สเปคทีฟ, พ่อมด, ฯลฯ ) มันสามารถปรับขนาดได้มากและเช่นเดียวกับ Eclipse เองได้รับการปรับปรุงอย่างต่อเนื่อง

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

หากคุณต้องการดำเนินการต่อไปอีกคุณอาจลองใช้การสอนของ Lars Vogel หรือดูตัวอย่างโครงการโอเพ่นซอร์สหรือโครงการเชิงพาณิชย์ที่ใช้ RCP


-2

(ตัวอย่างเช่นตารางต้นไม้ที่เรียงได้) ฉันเริ่มรู้สึกถึงความยากลำบากในการเติมเต็มคำขอ สิ่งนี้เป็นจริงโดยเฉพาะอย่างยิ่งไม่มีการพัฒนาที่ดำเนินไปรอบ ๆ โครงการ SwingX

  • ไม่จริงโครงการนี้มีชีวิตอีกครั้ง

  • blablabla ครั้งหนึ่งเมื่อ SwingX สูญเสียทุนของ Sun (ระหว่างการรับโดย Oracle) ประชาชนจาก SwingX ไปสร้าง JavaFX

นอกจากนี้ฉันแทบจะไม่สามารถหาสิ่งที่ดี แต่ยังคงมีการบำรุงรักษา / พัฒนา / พัฒนากรอบ GUI GUI

  • Swing ไม่ไม่เกี่ยวกับ Framework แต่เกี่ยวกับรูปลักษณ์และความรู้สึก

  • กรอบงานมีไว้สำหรับผู้ใช้ที่ไม่ใช่เทคนิค (MsAccess อาจเป็นตัวอย่างที่ดีที่สุดสำหรับ GUI Framework)

  • แต่ถ้าคุณต้องการสร้างแอปพลิเคชั่นตัวจริงคุณจะมีความรู้อย่างมากเกี่ยวกับ Swing และ overriden ก็มาจาก Framework ด้วยเช่นกัน

  • ตัวอย่างที่ตลก Netbeans มี built_in Swing Framework ตาม JSR296 แต่ไม่สามารถเปลี่ยนไอคอน JFrames ได้โดยตรง

คุณเริ่มโยกย้ายโครงการ Swing ของคุณไปยังกรอบงาน GUI ที่พัฒนาแล้วมากกว่าเช่น JavaFX หรือไม่?

ไม่มีเหตุผลอะไร

  • เช่นเดียวกันกับการย้ายไปยัง Java7 อาจจะมีเมื่อ Java7.15 - 17

  • ฉันเปรียบเทียบ JavaFx กับ Nimbus การพัฒนาสิ้นสุดลง / ยอมแพ้ที่ไหนสักแห่งในครึ่งแรก

  • ขอโทษฉันไม่ใช่นักพัฒนาฉันเป็นแค่ Java & Swing Fan


MsAccess เป็น GUI Framework หรือไม่
Cheok Yan Cheng

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