Ada cukup banyak kerangka kerja gui di luar sana untuk java, tetapi apa yang diakui sebagai kerangka pilihan saat ini?
Berikut ini adalah pemahaman saya tentang kerangka kerja yang berbeda, tolong perbaiki saya jika saya salah. Ini adalah serangkaian pertanyaan yang sangat longgar, tetapi saya masih berpikir itu berharga bagi siapa pun yang berpikir untuk membuat aplikasi gui yang kaya.
Merupakan dasar dari ayunan, ia berkinerja baik tetapi kurang komponen canggih. Jika Anda bermaksud membuat aplikasi yang kaya, AWT mungkin bukan cara yang tepat. Namun untuk aplikasi gui yang lebih kecil yang tidak memerlukan antarmuka pengguna yang kaya. Ini mungkin cocok dengan sempurna karena kerangka kerja yang telah dicoba dan terbukti.
Berdasarkan AWT seperti yang dinyatakan sebelumnya. Dalam masa pertumbuhannya dianggap lambat dan bermasalah dan menyebabkan IBM membuat SWT untuk Eclipse. Namun dengan Java 5 (atau 6?) Swing menjadi kerangka pilihan untuk membangun aplikasi baru. Ayunan memiliki banyak komponen yang kaya tetapi masih kurang di beberapa daerah. Salah satu contohnya adalah tidak ada komponen TreeTable berfitur lengkap yang dapat melakukan penyortiran dan pemfilteran / pencarian.
Diciptakan oleh IBM untuk Eclipse, mereka tampaknya berpikir bahwa Swing tidak cocok untuk Eclipse saat itu. Dengan sendirinya adalah level yang cukup rendah, dan ia menggunakan widget asli platform melalui JNI. Ini tidak terkait dengan Swing dan AWT sama sekali. Namun API mereka agak kikuk dan tidak intuitif. Mereka memiliki beberapa komponen canggih seperti TreeTable. (tapi saya tidak berpikir mereka mendukung penyortiran dan penyaringan di luar kotak). SWT menggunakan beberapa binding asli (melalui JNI?) Dan kata-kata kasar di internet adalah bahwa kerangka kerja ini tidak boleh digunakan dalam proyek saat ini. (kenapa tidak?)
Berdasarkan Swing dan misinya adalah menciptakan komponen yang kaya untuk swing. Masih dalam pengembangan. (meskipun tidak terlalu aktif.) Memiliki set komponen yang sangat bagus, seperti misalnya TreeTable. Tetapi TreeTable tidak mendukung pemfilteran dan pengurutan sejauh yang saya tahu. Namun itu mendukung pencarian dengan penyorotan.
Perhatikan bahwa SwingX adalah komponen (AFAIU) yang merupakan ekstensi atau komposisi dari komponen Swing yang ada
JGoodies
Kerangka kerja yang saya tidak tahu tentang ... Apa itu kekuatan dan kelemahan? Apa yang membedakan Jgoodies dari yang lain?
JGoodies OTOH adalah tentang PLAF dan tata letak.
Unggulan terbaru Java / Oracle. berjanji untuk menjadi standar facto dalam mengembangkan aplikasi desktop atau web yang kaya.
Ini membuat UI menggunakan Java2D, sehingga meminimalkan dampak (IMO, kembung) warisan Swing dan AWT. (@Augustus Thoo)
Fokus utamanya sepertinya ada pada RIA (aplikasi internet Rich), tetapi sepertinya itu juga bisa diterapkan pada aplikasi desktop. Dan sebagai komentar pribadi, Terlihat sangat menarik! Saya terutama suka itu proyek apache.
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
Wrapper java ke pustaka qt asli yang ditulis dalam c / c ++. Sangat kuat, banyak digunakan dan diterima. Memiliki banyak komponen GUI dan API yang mudah digunakan.
Jadi, untuk mencoba meringkas sedikit dari apa yang saya tanyakan:
Katakanlah saya ingin membuat aplikasi desktop hari ini di Jawa yang melibatkan banyak komponen canggih, apa yang harus saya pilih? Dan mengapa?
Kerangka kerja mana yang harus diakui sudah usang dan mana yang harus diakui sebagai kerangka kerja masa depan yang jauh?
Apakah kerangka kerja standar de-facto saat ini dan alat apa yang Anda gunakan untuk membuat aplikasi java gui?
Saya mungkin menyesal menanyakan hal ini, tetapi saya tidak mencobanya:
C # /. Net dikatakan memiliki seperangkat komponen yang sangat mudah digunakan yang dapat dilenturkan ke segala arah. Dan setelah menyelidiki kerangka kerja java yang berbeda sampai batas tertentu saya tidak bisa mengatakan hal yang sama tentang Java. Kenapa ini? Mengapa java (yang merupakan bahasa pemrograman yang paling banyak digunakan di dunia) memiliki komponen GUI yang sama?
Apakah hanya bahwa java telah mendasarkan komponen gui mereka pada level yang jauh lebih rendah, dan dimungkinkan untuk menulis semua komponen canggih yang saya cari, tetapi Anda harus melakukan banyak hal jika tidak semua pekerjaan sendiri?
Jawaban:
Pohon keputusan:
Kerangka kerja seperti Qt dan SWT membutuhkan DLL asli. Jadi, Anda harus bertanya pada diri sendiri: Apakah semua platform yang diperlukan didukung? Bisakah Anda mengemas DLL asli dengan aplikasi Anda?
Lihat di sini, bagaimana melakukan ini untuk SWT .
Jika Anda punya pilihan di sini, Anda harus memilih Qt daripada SWT. Qt telah dikembangkan oleh orang-orang yang memahami UI dan desktop sementara SWT telah dikembangkan karena kebutuhan untuk membuat Eclipse lebih cepat. Ini lebih merupakan kinerja patch untuk Java 1.4 daripada framework UI. Tanpa JFace, Anda kehilangan banyak komponen UI utama atau fitur yang sangat penting dari komponen UI (seperti pemfilteran pada tabel).
Jika SWT tidak memiliki fitur yang Anda butuhkan, kerangka kerja agak memusuhi untuk memperluasnya. Misalnya, Anda tidak dapat memperluas kelas apa pun di dalamnya (kelas tidak final, mereka hanya melempar pengecualian ketika paket
this.getClass()
tidakorg.eclipse.swt
dan Anda tidak dapat menambahkan kelas baru dalam paket itu karena ditandatangani).Jika Anda membutuhkan solusi Java asli dan murni, yang akan meninggalkan Anda. Mari kita mulai dengan AWT, Swing, SwingX - the Swing way.
AWT sudah usang. Swing sudah ketinggalan zaman (mungkin kurang begitu tetapi tidak banyak pekerjaan yang telah dilakukan pada Swing selama 10 tahun terakhir). Anda bisa berargumen bahwa Swing itu baik untuk memulai, tetapi kita semua tahu kode itu membusuk. Dan itu terutama berlaku untuk UI hari ini.
Itu membuat Anda dengan SwingX. Setelah periode lambat dari kemajuan yang lambat, pembangunan telah mengambil kembali . Kelemahan utama dengan Swing adalah bahwa itu bergantung pada beberapa ide lama yang sangat baik pendarahan 15 tahun yang lalu tetapi yang merasa "canggung" hari ini. Misalnya, tampilan tabel mendukung penyaringan dan penyortiran tetapi Anda masih harus mengonfigurasi ini. Anda harus menulis banyak kode pelat ketel hanya untuk mendapatkan UI yang layak yang terasa modern.
Area lemah lainnya adalah tema. Sampai hari ini, ada banyak tema di sekitar. Lihat di sini untuk 10 besar . Tetapi ada yang lambat, ada yang buggy, ada juga yang tidak lengkap. Saya benci ketika saya menulis UI dan pengguna mengeluh bahwa ada sesuatu yang tidak berfungsi untuk mereka karena mereka memilih tema yang aneh.
JGoodies adalah lapisan lain di atas Swing, seperti SwingX. Mencoba membuat Swing lebih menyenangkan untuk digunakan. Situs web tampak hebat. Mari kita simak tutorialnya ... hm ... masih mencari ... tunggu sebentar. Tampaknya tidak ada dokumentasi di situs web sama sekali. Google untuk menyelamatkan . Tidak, tidak ada tutorial yang berguna sama sekali.
Saya tidak merasa percaya diri dengan kerangka kerja UI yang berusaha keras untuk menyembunyikan dokumentasi dari penggemar baru yang potensial. Itu tidak berarti JGoodies itu buruk; Aku hanya tidak bisa menemukan sesuatu yang baik untuk dikatakan tentang itu tetapi itu terlihat bagus.
JavaFX. Hebat, bergaya. Dukungan ada di sana tetapi saya merasa itu lebih dari mainan mengkilap daripada kerangka UI yang serius. Perasaan ini berakar pada kurangnya komponen UI yang kompleks seperti tabel pohon. Ada komponen berbasis webkit untuk menampilkan HTML .
Ketika diperkenalkan, pikiran pertama saya adalah "terlambat lima tahun." Jika tujuan Anda adalah aplikasi yang bagus untuk ponsel atau situs web, bagus. Jika tujuan Anda adalah aplikasi desktop profesional, pastikan itu memberikan apa yang Anda butuhkan.
Poros. Pertama kali saya mendengarnya. Ini pada dasarnya kerangka kerja UI baru berdasarkan Java2D. Jadi saya mencobanya kemarin. Tanpa Swing, hanya sedikit AWT (
new Font(...)
).Kesan pertama saya bagus. Ada dokumentasi luas yang membantu Anda memulai. Sebagian besar contoh disertai dengan demo langsung (Catatan: Anda harus mengaktifkan Java di browser web Anda; ini merupakan risiko keamanan ) di halaman web, sehingga Anda dapat melihat kode dan aplikasi yang dihasilkan secara berdampingan.
Dalam pengalaman saya, lebih banyak upaya masuk ke dalam kode daripada ke dokumentasi. Dengan melihat dokumen Pivot, banyak upaya harus dilakukan ke dalam kode. Perhatikan bahwa saat ini ada bug yang mencegah beberapa contoh berfungsi ( PIVOT-858 ) di browser Anda.
Kesan kedua saya tentang Pivot adalah mudah digunakan. Ketika saya mengalami masalah, saya biasanya bisa menyelesaikannya dengan cepat dengan melihat contoh. Saya kehilangan referensi dari semua style yang didukung oleh masing-masing komponen.
Seperti JavaFX, itu kehilangan beberapa komponen tingkat yang lebih tinggi seperti komponen tabel pohon ( PIVOT-306 ). Saya tidak mencoba memuat malas dengan tampilan tabel. Kesan saya adalah bahwa jika model yang mendasarinya menggunakan pemuatan malas, maka itu sudah cukup.
Menjanjikan. Jika Anda bisa, cobalah.
sumber
SWT dengan sendirinya cukup rendah, dan menggunakan widget asli platform melalui JNI. Ini tidak terkait dengan Swing dan AWT sama sekali. The Eclipse IDE dan semua berbasis Eclipse Aplikasi Client Kaya, seperti klien Vuze BitTorrent , yang dibangun menggunakan SWT. Juga, jika Anda mengembangkan plugin Eclipse, Anda biasanya akan menggunakan SWT.
Saya telah mengembangkan aplikasi dan plugin berbasis Eclipse selama hampir 5 tahun sekarang, jadi saya jelas bias. Namun, saya juga memiliki pengalaman luas dalam bekerja dengan SWT dan toolkit JFace UI, yang dibangun di atasnya. Saya menemukan JFace sangat kaya dan kuat; dalam beberapa kasus bahkan mungkin menjadi alasan utama untuk memilih SWT. Ini memungkinkan Anda untuk menyiapkan UI yang berfungsi dengan cukup cepat, asalkan itu seperti IDE (dengan tabel, pohon, kontrol asli, dll). Tentu saja Anda dapat mengintegrasikan kontrol kustom Anda juga, tetapi itu membutuhkan usaha ekstra.
sumber
Saya ingin menyarankan kerangka kerja lain: Apache Pivot http://pivot.apache.org/ .
Saya mencobanya secara singkat dan terkesan dengan apa yang ditawarkan sebagai kerangka kerja RIA (Aplikasi Internet Kaya) ala Flash.
Ini membuat UI menggunakan Java2D, sehingga meminimalkan dampak (IMO, kembung) warisan Swing dan AWT.
sumber
Swing + SwingX + Miglayout adalah kombinasi pilihan saya. Miglayout jauh lebih sederhana daripada Swings yang dirasakan oleh 200 manajer tata letak yang berbeda dan jauh lebih kuat. Selain itu, ini memberi Anda kemampuan untuk "debug" tata letak Anda, yang sangat berguna saat membuat tata letak yang kompleks.
sumber
Pilihan lain adalah menggunakan Qt Jambi . Ia memiliki hampir semua kehebatan Qt (banyak komponen, dokumentasi yang baik, mudah digunakan), tanpa kerumitan C ++. Saya menggunakannya 3-4 tahun yang lalu untuk proyek kecil, bahkan saat itu sudah hampir matang.
Anda mungkin ingin melihat diskusi tentang Swing vs. Qt di sini .
sumber
Pendapat pribadi saya: Go for Swing bersama dengan platform NetBeans.
Jika Anda memerlukan komponen canggih (lebih dari yang ditawarkan NetBeans), Anda dapat dengan mudah mengintegrasikan SwingX tanpa masalah (atau JGoodies) karena platform NetBeans sepenuhnya didasarkan pada Swing.
Saya tidak akan memulai aplikasi desktop besar (atau yang akan menjadi besar) tanpa platform yang baik yang dibangun di atas kerangka UI yang mendasarinya.
Opsi lainnya adalah SWT bersama dengan Eclipse RCP, tetapi lebih sulit (meskipun bukan tidak mungkin) untuk mengintegrasikan komponen Swing "murni" ke dalam aplikasi semacam itu.
Kurva pembelajaran agak curam untuk platform NetBeans (meskipun saya rasa itu juga berlaku untuk Eclipse), tetapi ada beberapa buku bagus yang akan sangat saya rekomendasikan.
sumber
Anda lupa untuk Java Desktop Aplication berdasarkan JSR296 sebagai Swing Framework bawaan di NetBeans
tidak termasuk AWT dan JavaFX semua kerangka kerja Anda desribed didasarkan pada Swing, jika Anda akan mulai dengan Swing maka Anda akan mengerti (jelas) untuk semua ini (Kerangka Berbasis Berdasarkan)
ATW, SWT (Eclipse), Aplikasi Java Desktop (Netbeans), SwingX, JGoodies
semua kerangka kerja di sana (saya tidak tahu sesuatu tentang JGoodies) termasuk. JavaFX belum lama mengalami kemajuan, banyak Kerangka Berbasis Swing dihentikan, jika tidak maka tanpa versi terbaru
hanya pandangan saya - yang terbaik dari mereka adalah SwingX, tetapi membutuhkan pengetahuan terdalam tentang Swing,
Lihat dan Rasakan Kerangka Berbasis Swing
sumber
with same progress
di SWT, SwingX, pemilik baru, maniers baruSaya sudah cukup senang dengan Swing untuk aplikasi desktop yang pernah saya ikuti. Namun, saya membagikan pandangan Anda tentang Swing tanpa menawarkan komponen canggih. Apa yang telah saya lakukan dalam kasus ini adalah pergi untuk JIDE. Ini tidak gratis, tetapi tidak terlalu mahal dan memberi Anda lebih banyak alat di bawah ikat pinggang Anda. Secara khusus, mereka menawarkan TreeTable yang dapat disaring.
sumber
Saya akan pergi dengan Swing. Untuk tata letak saya akan menggunakan tata letak formulir JGoodies. Layak mempelajari kertas putih pada Layout Formulir di sini - http://www.jgoodies.com/freeware/forms/
Juga jika Anda akan mulai mengembangkan aplikasi desktop besar, Anda pasti akan membutuhkan kerangka kerja. Orang lain telah menunjukkan kerangka kerja netbeans. Saya tidak begitu suka jadi menulis yang baru yang sekarang kita gunakan di perusahaan saya. Saya telah meletakkannya di sourceforge, tetapi tidak menemukan waktu untuk mendokumentasikannya. Berikut tautan untuk menelusuri kode:
http://swingobj.svn.sourceforge.net/viewvc/swingobj/
Showcase seharusnya menunjukkan kepada Anda bagaimana melakukan login sederhana sebenarnya ..
Beritahu saya jika ada pertanyaan, saya bisa membantu.
sumber