Apakah Anda mulai memigrasi proyek Swing Anda ke JavaFX [ditutup]

13

Saya punya proyek 4 tahun yang ditulis dalam Swing + SwingX. Saat ini, masih hidup dan masih menendang.

Namun, karena semakin banyak permintaan fitur terkait GUI yang masuk (Misalnya, tabel pohon yang dapat diurutkan), saya mulai merasakan kesulitan dalam memenuhi permintaan. Ini benar terutama karena tidak ada pengembangan aktif di sekitar proyek SwingX.

Juga, saya hampir tidak dapat menemukan kerangka Java GUI yang baik, namun dipelihara / dikembangkan / dikembangkan secara aktif.

Saya bertanya-tanya, apakah ada pengembang Swing yang merasakan hal yang sama? Sudahkah Anda mulai memigrasi proyek Swing Anda ke kerangka kerja GUI yang dikembangkan lebih aktif, seperti JavaFX?

Cheok Yan Cheng
sumber
Apakah Anda sudah melihat SWT? stackoverflow.com/questions/2306190/…
FrustratedWithFormsDesigner
7
Itu tidak berarti apa-apa jika Anda tidak mendapatkan Swing itu.
Robert Harvey
swing adalah lintas-platform ... javaFX2 tidak .. ditutup.
@blanc tersedia di Windows, Linux dan OSX. YanChenhCHEOK, TreeTable direncanakan untuk JavaFX 8 (dirilis dengan Java 8 akhir tahun ini, mungkin September).
assylias

Jawaban:

9

Saya pribadi pindah ke JavaFX (2.1+, bukan versi 1.x tua yang aneh dengan bahasa skrip yang tidak menyenangkan). JavaFX baru tidak 100% sempurna, tapi sudah menjadi pemandangan yang lebih menyenangkan untuk digunakan daripada Swing, saya melihat masa depan yang masuk akal untuk itu (terutama mengingat mesin Webkit tertanam).

Martijn Verburg
sumber
9

Saya sering bertanya pada diri sendiri hal yang sama, tetapi saya tidak berpikir saya akan memigrasikan proyek yang ada ke JavaFX. Setidaknya tidak untuk saat ini, dan bukan untuk proyek-proyek berukuran sedang hingga besar. Namun, saya akan mempertimbangkan JavaFX untuk proyek-proyek baru, dan mempertimbangkan migrasi lagi di masa depan dan mengevaluasi kembali pertanyaan berdasarkan kemajuan JavaFX.

Saat ini, kekhawatiran saya adalah:

  • Ketidakdewasaan

    Ya, kita akan segera ke 3.0, tetapi belum ada selama ini, dan masih mengalami perubahan besar. Jadi untuk perangkat lunak perusahaan yang besar dan menghindari risiko, ini adalah tempat yang relatif sakit.

  • Performa

    Saya belum melihat cukup banyak data tentang perbedaan kinerja.

  • Widget dan Komponen

    Saya belum melihat cukup banyak komponen baru. Ini bisa berhubungan dengan ketidakdewasaan, saya kira. Saya juga belum tahu seberapa baik mereka dapat diperluas dan dikomposisikan, berbeda dengan Swing.

Secara keseluruhan, saya kira hard-data tentang keuntungan adalah apa yang saya lewatkan untuk sepenuhnya diyakinkan oleh JavaFX.

Di sisi lain, Swing terbukti dan teruji. Ya, API itu kikuk dan meminta penyelesaian otomatis pada IDE Anda pada objek Swing seperti JTextPane akan membuatnya menangis dan menangis untuk ibunya, tetapi, jika Anda cukup berpengetahuan, Anda dapat membangun UI yang mengagumkan dengan Swing, yang berkinerja baik (saya tidak pernah membeli Swing-has-bad-performance fallacy, lihat posting blog Romain Guy sebelumnya di blog Sun) dan memungkinkan Anda untuk melakukan hal-hal yang cukup rapi.

Jadi, sebelum beralih apa pun, saya sarankan Anda mencoba prototipe kecil terlebih dahulu, dan mungkin mencoba port beberapa dialog aplikasi Anda dan lihat bagaimana hasilnya.

haylem
sumber
5

Saya telah melakukan banyak JavaFX sekarang dan saya lebih suka daripada Swing. Struktur Grafik Pemandangan berbeda dengan yang biasa Anda gunakan dengan Swing, tetapi ia memberikan banyak peningkatan. API ini menyenangkan untuk dikerjakan, rasanya menyegarkan.

Ada banyak lagi yang dapat Anda lakukan dengan itu, multimedia, animasi, browsing web. Misalnya Anda dapat membangun aplikasi Google Maps dalam beberapa baris kode, menyematkan html5 dan javascript.

Dikatakan dimasukkan dalam runtime Java 8, yang akan berarti sebagai pengganti pasti Swing sebagai kerangka kerja ui default

@ Migrasi : Anda harus mulai dengan mengisolasi bagian dari aplikasi Anda yang dapat dikonversi ke JavaFX. Interoperabilitas swing-JavaFX 2 adalah hal besar, Anda dapat menggunakan javafx.embed.swing.JFXPanel untuk menyematkan elemen JavaFX Anda. Lihat swing-fx-interoperability . (Untuk kelengkapan Anda juga dapat menanamkan dalam SWT.)

Kode Gallifreyan
sumber
Jangan coba hal interoperabilitas swing-jfx, itu cukup buggy. Saya mencobanya di aplikasi saya, ini berfungsi di dalam netbeans tetapi jika saya mencoba menjalankan .jar secara langsung, saya mendapatkan memori aneh / kesalahan terkait threading. Mulailah dari awal menurut saya.
Klik Suara positif
4

Ayunan menjadi teknologi warisan, atau sudah. Namun, itu cukup bagus dalam apa yang dilakukannya dan tidak akan pergi dalam waktu dekat, jadi saya tidak melihat alasan untuk menjauh darinya, terutama jika seseorang telah berinvestasi di dalamnya. Software JIDE membuat komponen Swing (komersial) yang baik untuk menggantikan apa yang hilang dari Swing standar. Misalnya, sortable treetable ada di Grids out of the box.

Joonas Pulakka
sumber
3

Sementara versi JavaFX baru terlihat sangat mengesankan, saya ragu layak melakukan migrasi penuh kecuali jika Anda bersedia menginvestasikan banyak waktu / usaha / uang dalam perbaikan lengkap GUI.

Swing mungkin memiliki keunikannya dan menunjukkan usianya tetapi juga memiliki beberapa keuntungan:

  • Kemampuan lintas platform yang sangat kuat, saat ini jauh lebih baik daripada JavaFX
  • Ini matang dan terbukti, lebih dari JavaFX
  • Ini memiliki ekosistem komunitas / perpustakaan pengguna yang besar
  • Anda mungkin sudah memiliki banyak keterampilan Swing atau dapat mempekerjakan orang dengan mudah

Pada akhirnya, jika tidak rusak, mengapa memperbaikinya?

Tentu saja, untuk proyek baru saya akan mencari dengan sangat serius pada JavaFX, Android dan / atau GUI berbasis web (mungkin dengan sesuatu seperti Vaadin).

mikera
sumber
Apakah ada masalah dengan kemampuan lintas platform JavaFX?
Klik Suara positif
Terakhir kali saya memeriksa JavaFX didukung untuk Windows, Mac dan Linux. Jika Anda menargetkan platform lain di luar itu, ada baiknya memeriksa apa statusnya .... Ayunan masih (pada pertengahan 2012) taruhan yang lebih aman jika Anda mencari kemampuan lintas platform yang luas.
mikera
platform apa yang menarik lainnya?
Klik Suara positif
1

Saya berada di posisi yang sama dengan OP - memiliki aplikasi swing lawas tetapi perlu mengimplementasikan idiom baru dan antarmuka yang tidak didukung secara asli. Yang terbesar dari aplikasi ini telah di refactored beberapa kali karena berbagai alasan (meningkatkan modularitas, MVC yang lebih baik dan struktur pengiriman acara, dll.) Jadi saya tidak sepenuhnya menolak untuk menulis ulang kode UI. Jadi saya sudah berpikir panjang dan keras tentang masalah ini.

Namun, beberapa hal tidak dapat diselesaikan dengan Swing tanpa menginvestasikan lebih banyak waktu dan upaya pada apa yang pada dasarnya adalah teknologi warisan. Misalnya, selain acara mouse sederhana, perangkat layar sentuh baru dan tidak didukung oleh Swing sendiri. Menyediakan komponen browser berbasis Swing sama merepotkan atau mahal, dan dalam kasus saya, pendekatan javafx-in-swing bukan pilihan karena mempersulit penanganan acara UI dengan cara yang tidak sepele.

Saya pikir itu sudah lama dan setia pada masanya, dan jika platform Anda tidak berubah seperti basis kode Anda - tetap dengan itu, jelas. Tetapi untuk aplikasi yang bergerak maju ke kasus penggunaan baru yang lebih kontemporer, JavaFX 2+ mungkin akan menjadi cara untuk maju dalam kasus saya.

Sebagai catatan tambahan: satu kesalahan dalam Swing yang ingin saya hilangkan di jfx - tetapi tidak - adalah pendekatan satu-thread-to-rule-them-all untuk pengiriman acara UI. Setiap antarmuka pengguna non-sepele membutuhkan multi-threading untuk menjaga UI tetap segar dan responsif, dan menyerahkan sepenuhnya kepada pengembang aplikasi untuk tersandung pada perangkap yang sama sehingga dengan mudah kekurangan di IMHO API.

David Nugent
sumber
0

Saya memiliki pengalaman hebat menggunakan RCP dalam aplikasi berbasis desktop yang besar. Ini pada dasarnya dimulai sebagai abstraksi dari lapisan GUI Eclipse dan telah datang jauh sejak saat itu. Alih-alih Swing, yang didasarkan pada AWT, RCP dibangun di atas JFace, yang pada gilirannya didasarkan pada SWT. Ini memungkinkan Anda untuk mengembangkan aplikasi dan menggunakan konsep GUI yang digunakan Eclipse sendiri (tampilan, editor, perspektif, penyihir, dll.). Ini sangat scalable dan, seperti Eclipse sendiri, terus ditingkatkan.

Namun, saya tidak pernah memigrasikan proyek yang ada dari Swing ke RCP; Saya membayangkan bahwa akan butuh waktu cukup lama untuk membungkus kepala Anda di sekitar paradigma yang berbeda dan jika Anda belum memisahkan model Anda dan melihat lapisan dengan baik, Anda pasti akan mengalami kesulitan. Tetapi karena Anda bertanya tentang hal-hal seperti tabel pohon yang dapat diurutkan, RCP sangat hebat dalam hal itu.

Jika Anda ingin meneliti ulang ini lebih lanjut, Anda mungkin ingin mencoba tutorial Lars Vogel atau melihat beberapa contoh proyek open source atau proyek komersial yang menggunakan RCP.

Amos M. Carpenter
sumber
-2

(Misalnya, tabel pohon yang bisa diurutkan), saya mulai merasakan kesulitan dalam memenuhi permintaan. Ini benar terutama tidak ada pengembangan aktif di sekitar proyek SwingX.

  • tidak benar, lagi adalah proyek ini hidup,

  • blablabla suatu saat ketika SwingX kehilangan hibah oleh Sun (saat ditanyakan oleh Oracle) orang-orang dari SwingX pergi untuk membangun JavaFX

Juga, saya hampir tidak dapat menemukan yang baik, namun sedang aktif dipelihara / dikembangkan / berkembang kerangka Java GUI.

  • tidak ada Swing bukan tentang Kerangka tetapi tentang Tampilan dan Perasaan

  • Kerangka adalah untuk pengguna non-teknis (MsAccess mungkin merupakan contoh terbaik untuk Kerangka GUI)

  • tetapi jika Anda ingin membangun aplikasi nyata, Anda memiliki pengetahuan yang kuat tentang Swing dan overriden juga datang dari Framework,

  • lucu contoh Netbeans telah built_in Swing Framework berdasarkan JSR296, tetapi tidak dapat mengubah Ikon JFrames secara langsung,

Sudahkah Anda mulai memigrasi proyek Swing Anda ke kerangka kerja GUI yang dikembangkan lebih aktif seperti JavaFX?

tidak ada alasan mengapa

  • sama dengan migrasi ke Java7, mungkin kapan Java7.15 - 17 akan ada

  • Saya membandingkan JavaFx dengan Nimbus, pengembangan berakhir / menyerah di suatu tempat di babak pertama

  • maaf saya bukan pengembang, saya hanya Java & Swing Fan

mKorbel
sumber
MsAccess adalah Kerangka GUI?
Cheok Yan Cheng
huuuuh bukan ??? apa masalahnya, perbedaan platform, atau ei ??? Kerangka kerja GUI Java pertama sangat mirip
mKorbel