Swing vs JavaFx untuk aplikasi desktop [tertutup]

195

Saya memiliki program yang sangat besar yang saat ini menggunakan SWT. Program ini dapat dijalankan di Windows, Mac dan Linux, dan ini adalah aplikasi desktop besar dengan banyak elemen. Sekarang SWT menjadi agak lama saya ingin beralih ke Swing atau JavaFX. Dan saya ingin mendengar pendapat Anda tentang tiga hal.

Perhatian utama saya adalah apa yang akan lebih baik untuk aplikasi GUI desktop? (Saya melihat online dan banyak orang menyarankan bahwa JavaFX sama baiknya dengan Swing, tapi saya tidak melihat banyak argumen yang valid kecuali perang api pendapat yang sederhana). Itu harus bekerja pada Windows, Mac dan beberapa distribusi Linux populer.

  • Apa yang lebih bersih dan mudah dirawat?

  • dan apa yang akan lebih cepat untuk dibangun dari awal?

Saya menggunakan metodologi MVC dalam aplikasi saya, jika itu bisa membantu.

Quillion
sumber
23
JavaFX bagus, Anda mulai dari awal. Juga karena JavaFX secara resmi menggantikan Swing sebagai perpustakaan UI Oracle untuk Java. Itu tidak berarti Swing dihilangkan begitu saja. Itu hanya berarti JavaFX akan mendapatkan lebih banyak perhatian di setiap rilis. Yang mengatakan, ada sejuta setengah pertanyaan tentang topik ini pada SO dan di tempat lain di Google.
nico_c
3
stackoverflow.com/questions/10587713/... Saya juga menyebutkan Google. Sudah banyak di luar sana.
nico_c
Ok jadi saran sepertinya benar-benar fx, saya akan tetap terbuka, tetapi saya akan menerima jawaban. Terima kasih atas tautannya.
Quillion
1
Berikut ini adalah ringkasan cepat JavaFX meskipun SWT, Swing atau JavaFX mana saja akan berfungsi untuk menghasilkan aplikasi desktop.
jewelsea
Tidak ada yang menyebutkannya, tetapi JavaFX tidak mengkompilasi atau menjalankan arsitektur tertentu yang dianggap "server" oleh Oracle (misalnya Solaris), karena dukungan "jfxrt.jar" yang hilang.
Malcolm Boekhoff

Jawaban:

154

Apa yang lebih bersih dan mudah dirawat?

Semua hal dianggap sama, mungkin JavaFX - API jauh lebih konsisten di seluruh komponen. Namun, ini lebih tergantung pada bagaimana kode ditulis daripada perpustakaan apa yang digunakan untuk menulisnya .

Dan apa yang akan lebih cepat untuk dibangun dari awal?

Sangat tergantung pada apa yang Anda bangun. Swing memiliki lebih banyak komponen untuk itu (pihak ke-3 dan juga built-in) dan tidak semuanya telah berjalan ke platform JavaFX yang lebih baru, jadi mungkin ada sejumlah penemuan ulang roda jika Anda memerlukan sesuatu sedikit kustom. Di sisi lain, jika Anda ingin melakukan transisi / animasi / hal-hal video maka ini adalah urutan besarnya lebih mudah di FX.

Satu hal lain yang perlu diingat adalah (mungkin) tampilan dan rasa. Jika Anda benar-benar harus memiliki tampilan dan nuansa sistem default, maka JavaFX (saat ini) tidak dapat menyediakan ini. Bukan hal yang besar bagi saya (saya lebih suka tampilan FX default), tetapi saya sadar beberapa kebijakan mengharuskan pembatasan gaya sistem.

Secara pribadi, saya melihat JavaFX sebagai "datang ke atas dan" perpustakaan UI itu tidak cukup ada belum (tapi lebih dari yang dapat digunakan), dan Swing sebagai UI perpustakaan batas-warisan yang penuh fitur dan didukung untuk saat ini, tapi mungkin tidak akan begitu banyak di tahun-tahun mendatang (dan karena itu kemungkinan FX akan menyusulnya di beberapa titik.)

Michael Berry
sumber
1
Saya percaya semua poin ini berlaku untuk dunia. NET juga di dunia GUI desktop, di mana Windows Presentation Foundation adalah pendekatan modern yang bertujuan untuk menggantikan Formulir Windows lama, jadi secara teoritis lebih baik dalam semua aspek kecuali itu tidak akan (belum? tapi sudah bertahun-tahun) mendukung kontrol umum umum / tampilan shell yang Anda harapkan seperti dialog file sederhana / direktori browser / kontrol tampilan pohon.
bitoolean
84

Seperti yang dinyatakan oleh Oracle, JavaFX adalah langkah selanjutnya dalam strategi klien kaya berbasis Java. Karenanya, inilah yang saya rekomendasikan untuk situasi Anda:

Apa yang lebih mudah dan bersih untuk dirawat

  • JavaFX telah memperkenalkan beberapa peningkatan di atas Swing, seperti, kemungkinan untuk menandai UI dengan FXML, dan bertema dengan CSS. Ini memiliki potensi besar untuk menulis kode modular, bersih & terawat.

Apa yang akan lebih cepat dibangun dari awal

  • Ini sangat tergantung pada keterampilan Anda dan alat yang Anda gunakan.
    • Untuk ayunan, berbagai IDE menawarkan alat untuk pengembangan cepat. Yang terbaik yang saya temukan secara pribadi adalah pembangun GUI di NetBeans .
    • JavaFX juga memiliki dukungan dari berbagai IDE, meskipun tidak seatur dukungan yang dimiliki Swing saat ini. Namun, dukungannya untuk markup di FXML & CSS membuat pengembangan GUI di JavaFX menjadi intuitif.

Dukungan Pola MVC

  • JavaFX sangat bersahabat dengan pola MVC, dan Anda dapat dengan bersih memisahkan pekerjaan Anda sebagai: presentasi (FXML, CSS), model (Java, objek domain) dan logika (Jawa).
  • IMHO, dukungan MVC di Swing tidak terlalu menarik. Alur yang akan Anda lihat di berbagai komponen tidak memiliki konsistensi.

Untuk info lebih lanjut, silakan lihat posting FAQ ini oleh Oracle mengenai JavaFX di sini.

Yonathan W'Gebriel
sumber
14

Tidak ada yang menyebutkannya, tetapi JavaFX tidak mengkompilasi atau menjalankan arsitektur tertentu yang dianggap "server" oleh Oracle (misalnya Solaris), karena dukungan "jfxrt.jar" yang hilang. Tetap dengan SWT, hingga pemberitahuan lebih lanjut.

Malcolm Boekhoff
sumber
13
@Quillion secara khusus meminta sesuatu untuk membangun aplikasi desktop yang "harus bekerja pada kedua windows, mac dan beberapa rasa linux populer." . Jadi saya kira dia tidak peduli dengan Solaris.
Tim Büthe
5

Saya tidak berpikir ada satu jawaban yang benar untuk pertanyaan ini, tetapi saran saya adalah tetap dengan SWT kecuali jika Anda menghadapi keterbatasan parah yang memerlukan perbaikan besar-besaran.

Selain itu, SWT sebenarnya lebih baru dan lebih aktif dipelihara daripada Swing. ( Awalnya dikembangkan sebagai pengganti Swing menggunakan komponen asli).

Russell Zahniser
sumber
16
SWT tidak pernah dimaksudkan untuk menggantikan Swing. Bagaimana? Ayunan datang dengan Java dari SUN dan SWT hanya berjalan pada 4 atau 5 platform dan berasal dari IBM dan dikembangkan lebih lanjut di Eclispe Foundation. Jika Anda bisa mengatakan: SWT bertujuan untuk menggantikan AWT.
Angel O'Sphere
0

Saya akan mencari-cari komponen (pihak ketiga?) Yang melakukan apa yang Anda inginkan. Saya harus membuat komponen Swing khusus untuk tampilan agenda tempat Anda dapat memesan banyak sumber daya, serta kisi mirip Excel yang berfungsi baik dengan navigasi keyboard dan sebagainya. Saya memiliki waktu yang mengerikan membuat mereka bekerja dengan baik karena saya perlu mempelajari banyak seluk-beluk Swing setiap kali saya menemukan masalah. Perilaku mouse dan fokus dan banyak hal lain bisa sangat sulit untuk diperbaiki, terutama untuk pengguna Swing kasual. Saya berharap JavaFX sedikit lebih berorientasi ke masa depan dan lebih lancar.

eriksensei
sumber
0

Pada notebook lama dengan aplikasi Swing video terintegrasi dimulai dan bekerja jauh lebih cepat daripada aplikasi JavaFX. Sedangkan untuk pengembangan, saya akan merekomendasikan beralih ke Scala - aplikasi Scala Swing sebanding berisi 2,3 kali lebih sedikit kode dari Jawa. Adapun Swing vs SWT: Netbeans GUI jauh lebih cepat daripada Eclipse ...

pengguna2053898
sumber
Scala Swing baik untuk disebutkan
menggambar