Kapan tidak menggunakan Google Web Toolkit? [Tutup]

55

Saya sedang mempertimbangkan penggunaan GWT pada proyek pengembangan aplikasi web in-house utama, yaitu keuntungan utama di mata saya adalah kompilasi silang ke Javascript yang (setidaknya secara teoritis) akan membantu tim saya mengurangi ukuran tumpukan teknologi dengan satu .

Namun, setelah dibakar sebelumnya (seperti kebanyakan devs), saya ingin mendengar dari programmer yang benar-benar menggunakannya pada masalah dengan GWT yang akan menghambat, atau membatasi, itu digunakan dalam domain masalah tertentu.

Apa argumen yang menentang penggunaan GWT, dan mengapa?

Jas
sumber
11
Saya pikir GWT meninggal.
Aaron McIver
1
@ Harun, benarkah?
Jas
10
Saya tidak merekomendasikan GWT secara pribadi. Pola pikir itu memaksa Anda bekerja untuk aplikasi desktop, tetapi akan memberi Anda masalah untuk berpikir seperti itu dalam fungsi HTML. Saya penggemar pencocokan paradigma pengkodean dengan masalah yang ada, dan abstraksi menghalangi saya. Itulah sebabnya setiap kali saya mulai mengevaluasinya, saya memutuskan untuk tidak menggunakannya.
Berin Loritsch
2
@Jas Experience beberapa tahun yang lalu; di masa kanak-kanak dan rasanya sangat mentah saat itu. Apakah sudah berubah? Mungkin .... tapi saya perlahan mencoba mempelajari dasar-dasar kerangka kerja alih-alih mengandalkan kerangka itu sendiri. Pada akhir hari itu adalah penggiling daging untuk mengaduk JS; bukan itu adalah hal yang buruk tetapi tidak di suatu tempat saya ingin berusaha. Banyak dari kerangka kerja ini dipilih karena kurangnya pengetahuan teknologi X atau sesuatu darinya ... tetapi Anda akhirnya harus menjadi berpengetahuan luas dalam teknologi X di beberapa titik waktu .... mungkin juga pergi rute itu terlebih dahulu.
Aaron McIver
10
Saya sangat berpengetahuan di JS, menulis beberapa hal yang cukup serius di sana, namun saya sekarang menjalankan proyek yang sangat kritis waktu dan saya tidak mampu membuat staf junior membuang-buang waktu karena kesalahan yang disebabkan oleh pengalihan konteks dari Jawa ke JS. Jadi tolong, jika Anda memiliki beberapa contoh dunia nyata mengapa GWT tidak bekerja untuk Anda, maka tolong jelaskan, jika tidak mari kita tidak membuang waktu satu sama lain dengan diskusi hipotetis dan sangat subjektif.
Jas

Jawaban:

84

Saya baik dan buruk untuk menjawab pertanyaan ini - baik, karena saya sebenarnya pernah menggunakannya sebelumnya, dan buruk, karena saya cukup berpengalaman dengan HTML / CSS / JavaScript sebelum bekerja dengan GWT. Ini membuat saya marah dengan menggunakan GWT sedemikian rupa sehingga pengembang Java lain yang tidak benar-benar tahu DHTML mungkin belum.

GWT melakukan apa yang dikatakannya - itu abstrak JavaScript dan sedikit banyak HTML ke Jawa. Bagi banyak pengembang, ini terdengar brilian. Namun, kita tahu, seperti yang dikatakan Jeff Atwood, semua abstraksi adalah abstraksi yang gagal (layak dibaca jika mempertimbangkan GWT). Dengan GWT, ini secara khusus memperkenalkan masalah-masalah berikut:

Menggunakan HTML di GWT menyebalkan.

Seperti yang saya katakan, sedikit banyak, bahkan abstrak HTML. Kedengarannya bagus untuk pengembang Java. Tapi ternyata tidak. HTML adalah format markup dokumen. Jika Anda ingin membuat objek Java untuk mendefinisikan dokumen, Anda tidak akan menggunakan elemen markup dokumen. Ini sangat verbose. Itu juga tidak cukup terkendali. Dalam HTML pada dasarnya ada satu cara untuk menulis <p>Hello how are <b>you</b>?</p>. Di GWT, Anda memiliki 3 simpul anak (teks B,, teks) yang dilampirkan ke sebuah Psimpul. Anda dapat membuat P terlebih dahulu, atau membuat simpul anak terlebih dahulu. Salah satu simpul anak mungkin merupakan hasil kembalinya suatu fungsi. Setelah beberapa bulan pengembangan dengan banyak pengembang, mencoba menguraikan seperti apa dokumen HTML Anda dengan melacak kode GWT Anda adalah proses yang memicu sakit kepala.

Pada akhirnya, tim memutuskan bahwa mungkin menggunakan HTMLPanel untuk semua HTML adalah cara yang tepat. Sekarang, Anda telah kehilangan banyak keuntungan GWT karena memiliki elemen yang tersedia untuk kode Java untuk mengikat data dengan mudah.

Menggunakan CSS di GWT menyebalkan.

Dengan melampirkan abstraksi HTML, ini berarti bahwa cara Anda menggunakan CSS juga berbeda. Mungkin sudah membaik sejak saya terakhir menggunakan GWT (sekitar 9 bulan lalu), tetapi pada saat itu, dukungan CSS berantakan. Karena cara GWT membuat Anda membuat HTML, Anda sering memiliki level node yang tidak Anda ketahui disuntikkan (setiap pengembang CSS tahu bagaimana ini secara dramatis dapat memengaruhi rendering). Ada terlalu banyak cara untuk menyematkan atau menautkan CSS, menghasilkan kekacauan ruang nama yang membingungkan. Selain itu Anda memiliki dukungan sprite, yang sekali lagi terdengar bagus, tetapi sebenarnya bermutasi CSS Anda dan kami punya masalah dengan itu menulis properti yang kemudian kami harus secara eksplisit menimpa nanti, atau dalam beberapa kasus, menggagalkan upaya kami untuk mencocokkan tangan kami. kode CSS dan harus hanya mendesain ulang dengan cara yang GWT tidak mengacaukannya.

Persatuan masalah, persimpangan manfaat

Bahasa apa pun akan memiliki masalah dan manfaatnya sendiri. Apakah Anda menggunakannya adalah rumus tertimbang berdasarkan itu. Ketika Anda memiliki abstraksi, yang Anda dapatkan adalah gabungan dari semua masalah, dan persimpangan manfaat. JavaScript memiliki masalah, dan biasanya diejek di kalangan insinyur sisi server, tetapi juga memiliki beberapa fitur yang membantu untuk pengembangan web yang cepat. Pikirkan penutupan, singkatan sintaksis, objek ad-hoc, semua hal yang dilakukan oleh Jquery (seperti permintaan DOM oleh pemilih CSS). Sekarang lupakan tentang menggunakannya di GWT!

Pemisahan masalah

Kita semua tahu bahwa seiring bertambahnya ukuran proyek, memiliki pemisahan keprihatinan yang baik adalah penting. Salah satu yang paling penting adalah pemisahan antara tampilan dan pemrosesan. GWT membuat ini sangat sulit. Mungkin bukan tidak mungkin, tetapi tim saya berada di tidak pernah datang dengan solusi yang baik, dan bahkan ketika kami pikir kami punya, kami selalu punya satu bocor ke yang lain.

Desktop! = Web

Sebagai @Berin Loritsch memposting di komentar, model atau pola pikir GWT dibangun untuk aplikasi hidup, di mana program memiliki tampilan hidup yang erat digabungkan dengan mesin pemrosesan. Ini kedengarannya bagus karena itulah yang dirasakan oleh banyak web. Tetapi ada dua masalah: A) Web dibangun dengan HTTP dan ini pada dasarnya berbeda. Seperti yang saya sebutkan di atas, teknologi yang dibangun pada HTTP - HTML, CSS, bahkan pemuatan sumber daya dan caching (gambar, dll.), Telah dibangun untuk platform itu. B) Pengembang Java yang telah bekerja di web tidak mudah beralih ke pola pikir aplikasi desktop ini. Arsitektur di dunia ini adalah disiplin yang sama sekali berbeda. Pengembang Flex mungkin lebih cocok untuk GWT daripada pengembang web Java.

Kesimpulannya...

GWT mampu menghasilkan aplikasi AJAX cepat dan kotor dengan cukup mudah menggunakan Java saja. Jika cepat dan kotor tidak terdengar seperti yang Anda inginkan, jangan gunakan itu. Perusahaan tempat saya bekerja adalah perusahaan yang sangat peduli dengan produk akhir, dan itu rasa memoles, baik visual dan interaktif, kepada pengguna. Bagi kami pengembang front-end, ini berarti bahwa kami perlu mengontrol HTML, CSS, dan JavaScript dengan cara yang dibuat menggunakan GWT seperti mencoba memainkan piano dengan memakai sarung tinju.

Nicole
sumber
2
Saya mengenali beberapa alasan mengapa kami memilih Wicket daripada GWT, pergi ke presentasi.
biziclop
12
-1 untuk FUD, pengalaman saya dengan GWT yang digunakan untuk aplikasi skala kecil dan besar jauh lebih positif daripada negatif. Dan saya belum menemukan satu pun dari "masalah" ini, demikian komentar FUD. Kami berhasil menyematkan widget yang dihasilkan GWT ke halaman HTML yang sangat kompleks dengan sedikit usaha. Jika Anda tahu apa yang Anda lakukan itu luar biasa, jika Anda tidak ingin mempertimbangkan mungkin ada cara baru yang lebih baik dalam melakukan sesuatu, ikuti "jawaban" ini dan abaikan komentar ini.
9
@Jarrod Ini bukan "masalah" yang harus dihadapi, tetapi deskripsi sederhana tentang sifat GWT. Jika relevan, saya lebih lanjut menganggap mereka negatif secara khusus dalam lensa tujuan proyek kami. Jika Anda memiliki pengalaman alternatif, silakan menuliskannya. Sampai saat itu, satu-satunya informasi yang tidak terbukti adalah klaim Anda bahwa GWT "baru dan lebih baik". Omong-omong - karena saya menulis jawaban ini, perusahaan (saya tidak lagi bekerja untuk) membuang lebih dari setahun pekerjaan beberapa insinyur, dan menulis ulang proyek tanpa GWT. Dalam waktu yang lebih singkat.
Nicole
1
@JarrodRoberson Saya setuju dengan NickC, akan sangat bagus untuk membaca tulisan yang sama detail dari pengalaman Anda.
funkybro
8
@NickC "Dalam waktu yang lebih singkat" untuk menulis ulang suatu proyek tidak dianggap sebagai pukulan besar bagi GWT IMO; setiap proyek di mana Anda pada dasarnya mengulangi apa yang telah dilakukan sebelumnya bahkan dalam kerangka kerja yang berbeda atau bahasa harus mengambil "lebih sedikit waktu".
funkybro
24

Kami menggunakan GWT untuk aplikasi web eGovernment besar (SOA di backend) yang memiliki penggunaan berat. UI lama ada di DHTML tetapi kami memiliki masalah dengan kompatibilitas browser, optimalisasi kinerja dan proses pengembangan, jadi kami mencari alternatif.

Persyaratan kami adalah:

  • lapisan UI sisi klien untuk meminimalkan beban server
  • kompatibilitas browser
  • RIA berbasis web
  • Optimalisasi kinerja yang mudah
  • Tidak ada instalasi plugin klien yang diperlukan, harus bekerja dengan instalasi windows biasa

Kami memilih GWT dan saya tidak pernah menyesalinya. Tim baru tidak memiliki pengalaman DHMTL dan karenanya proses pengembangan Java GWT sangat membantu. Yang Anda dapatkan dari kotak itu adalah:

  • kompatibilitas browser
  • Proses pengembangan berbasis Java dan penggunaan kembali kode
  • meminimalkan permintaan dengan mudah (bundel gambar, ...)
  • caching agressive mudah (aplikasi baru sepenuhnya di-cache di sisi klien)
  • kompresi yang mudah dari semua sumber daya (bahkan dengan js pada IE yang bermasalah)
  • dan banyak lagi, banyak lagi di sini

Aplikasi kami hanya mengeluarkan satu permintaan ke server saat startup. Di sisi negatifnya adalah bahwa GWT (dan juga Android) memiliki desain yang buruk, tetapi jika Anda menerapkan tampilan Anda sendiri dan merasa Anda harus mengadaptasi CSS. Atau Anda dapat menggunakan berbagai pustaka komponen untuk GWT yang membuatnya mudah untuk menerapkan gaya dan tema yang tepat.

Bagi saya tidak ada poin bahwa mungkin HTML DOM tidak sebagus kerajinan tangan, ini tidak pernah menjadi masalah. Ketika saya mengembangkan di C ++, saya tidak melihat kode assembler yang dihasilkan. Ketika saya mengembangkan di GWT tidak pernah ada alasan bagi saya untuk melihat kode JS dan hanya sekali alasan untuk melihat DOM dan melakukan beberapa refactoring.

Bagi saya GWT adalah satu-satunya pilihan ketika datang ke pengembangan RIA dan saya berharap bahwa GWT memiliki masa depan yang cerah. Lihat pernyataan misi di:

[1] http://code.google.com/intl/de-DE/webtoolkit/makinggwtbetter.html#introduction

Tetapi seharusnya tidak disebutkan bahwa Google tidak menggunakan GWT pada banyak proyek internal mereka dan bahwa saat ini ada beberapa rumor tentang masa depan GWT, lihat

[2] http://googlewebtoolkit.blogspot.com/2011/11/gwt-and-dart.html
[3] https://plus.google.com/105933370793992913359/posts/bLfSagtziBC

ChrLipp
sumber