Xoay so với JavaFx cho các ứng dụng máy tính để bàn [đã đóng]


195

Tôi có một chương trình rất lớn hiện đang sử dụng SWT. Chương trình có thể chạy trên cả Windows, Mac và Linux và đây là một ứng dụng máy tính để bàn lớn với nhiều yếu tố. Bây giờ SWT đã hơi cũ, tôi muốn chuyển sang Swing hoặc JavaFX. Và tôi muốn nghe suy nghĩ của bạn về ba điều.

Mối quan tâm chính của tôi là những gì sẽ tốt hơn cho một ứng dụng GUI trên máy tính để bàn? (Tôi đã xem trực tuyến và nhiều người cho rằng JavaFX cũng tốt như Swing, nhưng tôi không thấy nhiều đối số hợp lệ ngoại trừ các cuộc chiến nảy lửa ý kiến ​​đơn giản). Nó phải hoạt động trên cả Windows, Mac và một số bản phân phối Linux phổ biến.

  • Điều gì sẽ sạch hơn và dễ dàng hơn để duy trì?

  • và cái gì sẽ nhanh hơn để xây dựng từ đầu?

Tôi đang sử dụng MVC methology trong ứng dụng của mình, nếu điều đó có ích gì.


23
JavaFX tốt là bạn đang bắt đầu từ đầu. Cũng bởi vì JavaFX chính thức thay thế Swing làm thư viện UI của Oracle cho Java. Điều đó không có nghĩa là Swing được thực hiện với. Nó chỉ có nghĩa là JavaFX sẽ được chú ý nhiều hơn trong mỗi bản phát hành. Như đã nói, đã có một triệu rưỡi câu hỏi về chủ đề này trên SO và các nơi khác trên Google.
nico_c

3
stackoverflow.com/questions/10587713/ đá Tôi cũng đã đề cập đến Google. Có rất nhiều ngoài kia.
nico_c

Ok vậy đề nghị thực sự có vẻ là fx sau đó, tôi sẽ giữ điều này mở, nhưng sẽ chấp nhận một câu trả lời tôi đoán. Cảm ơn các liên kết.
Quillion

1
Dưới đây là một bản tóm tắt nhanh về JavaFX mặc dù bất kỳ SWT, Swing hoặc JavaFX nào cũng sẽ hoạt động để tạo ra một ứng dụng máy tính để bàn.
jewnes

Không ai đã đề cập đến nó, nhưng JavaFX không biên dịch hoặc chạy trên các kiến ​​trúc nhất định được coi là "máy chủ" của Oracle (ví dụ Solaris), vì thiếu hỗ trợ "jfxrt.jar".
Malcolm Boekhoff

Câu trả lời:


154

Điều gì sẽ sạch hơn và dễ dàng hơn để duy trì?

Tất cả mọi thứ đều bình đẳng, có lẽ là JavaFX - API phù hợp hơn nhiều giữa các thành phần. Tuy nhiên, điều này phụ thuộc nhiều vào cách viết mã hơn là thư viện nào được sử dụng để viết nó .

Và những gì sẽ nhanh hơn để xây dựng từ đầu?

Phụ thuộc nhiều vào những gì bạn đang xây dựng. Swing có nhiều thành phần hơn cho nó (bên thứ 3 cũng như được tích hợp sẵn) và không phải tất cả trong số họ đã tìm đường đến nền tảng JavaFX mới hơn, do đó, có thể có một số lượng nhất định phát minh lại bánh xe nếu bạn cần một cái gì đó bit tùy chỉnh. Mặt khác, nếu bạn muốn thực hiện các hiệu ứng chuyển tiếp / hoạt hình / video thì đây là thứ tự có độ lớn dễ dàng hơn trong FX.

Một điều khác cần ghi nhớ là (có lẽ) nhìn và cảm nhận. Nếu bạn hoàn toàn phải có giao diện hệ thống mặc định, thì JavaFX (hiện tại) không thể cung cấp điều này. Không phải là một vấn đề lớn đối với tôi (dù sao tôi cũng thích giao diện FX mặc định) nhưng tôi biết một số chính sách bắt buộc phải hạn chế kiểu hệ thống.

Cá nhân, tôi thấy JavaFX là thư viện UI "sắp ra mắt" chưa hoàn toàn ở đó (nhưng có thể sử dụng được nhiều hơn) và Swing là thư viện UI kế thừa có đầy đủ tính năng và được hỗ trợ tại thời điểm này, nhưng có lẽ sẽ không rất nhiều trong những năm tới (và do đó rất có thể FX sẽ vượt qua nó vào một lúc nào đó.)


1
Tôi tin rằng tất cả các điểm này đều áp dụng cho thế giới .NET cũng như trong thế giới GUI trên máy tính để bàn, trong đó Windows Presentation Foundation là cách tiếp cận hiện đại nhằm thay thế Windows Forms cũ, vì vậy về mặt lý thuyết, nó tốt hơn về mọi mặt trừ khi nó chưa (chưa? nhưng đã được nhiều năm) hỗ trợ các điều khiển / shell shell chung mà bạn mong đợi, chẳng hạn như hộp thoại / thư mục trình duyệt / điều khiển xem cây đơn giản.
bitoolean

84

Như Oracle đã nêu, JavaFX là bước tiếp theo trong chiến lược máy khách phong phú dựa trên Java của họ. Theo đó, đây là những gì tôi khuyên bạn nên cho tình huống của bạn:

Điều gì sẽ dễ dàng hơn và sạch hơn để duy trì

  • JavaFX đã giới thiệu một số cải tiến so với Swing, chẳng hạn như, khả năng đánh dấu các UI với FXML và theo chủ đề với CSS. Nó có tiềm năng lớn để viết một mã mô-đun, sạch sẽ và có thể bảo trì.

Điều gì sẽ nhanh hơn để xây dựng từ đầu

  • Điều này phụ thuộc nhiều vào kỹ năng của bạn và các công cụ bạn sử dụng.
    • Đối với swing, các IDE khác nhau cung cấp các công cụ để phát triển nhanh chóng. Cá nhân tôi thấy tốt nhất là trình xây dựng GUI trong NetBeans .
    • JavaFX cũng có hỗ trợ từ nhiều IDE khác nhau, mặc dù chưa trưởng thành như hỗ trợ mà Swing hiện có. Tuy nhiên, sự hỗ trợ của nó để đánh dấu trong FXML & CSS giúp phát triển GUI trên JavaFX trực quan.

Hỗ trợ mô hình MVC

  • JavaFX rất thân thiện với mẫu MVC và bạn có thể phân tách rõ ràng công việc của mình như: thuyết trình (FXML, CSS), mô hình (Java, đối tượng miền) và logic (Java).
  • IMHO, hỗ trợ MVC trong Swing không hấp dẫn lắm. Dòng chảy bạn sẽ thấy trên các thành phần khác nhau thiếu tính nhất quán.

Để biết thêm thông tin, vui lòng xem các bài đăng Câu hỏi thường gặp này của Oracle về JavaFX tại đây.


14

Không ai đã đề cập đến nó, nhưng JavaFX không biên dịch hoặc chạy trên các kiến ​​trúc nhất định được coi là "máy chủ" của Oracle (ví dụ Solaris), vì thiếu hỗ trợ "jfxrt.jar". Gắn bó với SWT, cho đến khi có thông báo mới.


13
@Quillion đặc biệt yêu cầu một cái gì đó để xây dựng một ứng dụng máy tính để bàn "phải hoạt động trên cả windows, mac và một số hương vị linux phổ biến." . Vì vậy, tôi đoán anh ấy không quan tâm đến Solaris.
Tim Büthe

5

Tôi không nghĩ có bất kỳ câu trả lời đúng nào cho câu hỏi này, nhưng lời khuyên của tôi là hãy gắn bó với SWT trừ khi bạn gặp phải những hạn chế nghiêm trọng đòi hỏi một cuộc đại tu lớn như vậy.

Ngoài ra, SWT thực sự mới hơn và được duy trì tích cực hơn so với Swing. (Ban đầu nó được phát triển để thay thế cho Swing sử dụng các thành phần gốc).


16
SWT không bao giờ có ý định thay thế Swing. Làm sao vậy Swing đi kèm với Java từ SUN và SWT chỉ chạy trên 4 hoặc 5 nền tảng và xuất phát từ IBM và được phát triển thêm trong Quỹ Eclispe. Nếu bạn có thể nói: SWT nhằm mục đích thay thế AWT.
Thiên thần O'Sphere

0

Tôi sẽ nhìn xung quanh để tìm một số thành phần (bên thứ 3?) Làm những gì bạn muốn. Tôi đã phải tạo các thành phần Xoay tùy chỉnh cho chế độ xem chương trình nghị sự nơi bạn có thể đặt nhiều tài nguyên, cũng như lưới giống như Excel hoạt động tốt với điều hướng bàn phím, v.v. Tôi đã có một thời gian tồi tệ để khiến chúng hoạt động tốt bởi vì tôi cần phải nghiên cứu nhiều vấn đề phức tạp của Swing mỗi khi tôi gặp phải một vấn đề. Chuột và hành vi tập trung và rất nhiều thứ khác có thể rất khó để có được đúng, đặc biệt là đối với người dùng Swing thông thường. Tôi hy vọng rằng JavaFX có định hướng tương lai hơn và suôn sẻ hơn.


0

Trên các máy tính xách tay cũ có tích hợp ứng dụng Xoay video bắt đầu và hoạt động nhanh hơn nhiều so với ứng dụng JavaFX. Để phát triển, tôi khuyên bạn nên chuyển sang Scala - ứng dụng Scala Swing có thể so sánh chứa mã ít hơn 2,,3 lần so với Java. Đối với Swing vs SWT: GUI của Netbeans nhanh hơn đáng kể so với Eclipse ...


Scala Swing rất tốt để đề cập
vẽ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.