Google Web Araç Seti'ni ne zaman kullanmamalısınız? [kapalı]


55

GWT'yi büyük bir şirket içi web uygulaması geliştirme projesinde kullanmayı düşünüyorum, yani gözlerimdeki en büyük avantaj, Javascript’e çapraz derlemektir (en azından teorik olarak), ekibimin teknoloji yığınının boyutunu azaltmasına yardımcı olacak. .

Bununla birlikte, daha önce (çoğu devs gibi) yanmış olarak, onu GWT ile ilgili herhangi bir problemde kullanan veya belirli bir problem alanında kullanımını engelleyen veya sınırlandıran programcılardan duymak isterim.

GWT kullanımına karşı argümanlar nelerdir ve neden?


11
GWT'nin öldüğünü sanıyordum.
Aaron McIver

1
@Aaron, gerçekten mi?
Jas

10
Şahsen GWT'yi önermiyorum. Zihniyet, sizi masaüstü uygulamaları için çalışmaya zorlar, ancak HTML işlevlerinde bu şekilde düşünmeye çalışırken size problemler verecektir. Kodlama paradigmasını eldeki sorunla eşleştirmenin hayranıyım ve soyutlama yoluma çıkıyor. Bu yüzden her değerlendirmeye başladığımda kullanmamaya karar verdim.
Berin Loritsch

2
@ Jas Deneyimi birkaç yıl önceydi; onun bebeklik döneminde ve o zaman çok ham hissetti. Değişti mi Belki de .... ama çerçevelerin kendilerine güvenmek yerine çerçevelerin temellerini yavaş yavaş öğrenmeye çalışıyorum. Günün sonunda, JS'yi çalkalamak için bir kıyma makinesidir; Bu kötü bir şey değil ama çaba sarfetmek istediğim bir yer değil. Bu çerçevelerin birçoğu, teknoloji X bilgisi eksikliğinden veya bunun bir şeyinden dolayı seçilmektedir ... fakat zamanla X teknolojisinde bilgili olmanız gerekebilir ... o zaman önce o rotaya gidebilirsiniz.
Aaron McIver

10
JS konusunda çok bilgiliyim, orada çok ciddi şeyler yazdım, ancak şu anda çok kritik bir proje yürütüyorum ve Java'dan JS'ye bağlam geçişinden kaynaklanan hatalar nedeniyle genç personelin zamanını boşa harcayamıyorum. Öyleyse, lütfen GWT'nin sizin için neden işe yaramadığına dair gerçek bir dünya örneğiniz varsa, lütfen açıklayın, aksi takdirde birbirlerinin zamanını varsayımsal ve son derece öznel renkli tartışmalarla harcamayın.
Jas

Yanıtlar:


84

Bu soruyu cevaplamak için hem iyiyim hem de kötüyüm - iyi, aslında daha önce kullandım ve kötüydü, çünkü GWT ile çalışmaya başlamadan önce HTML / CSS / JavaScript ile oldukça deneyimliydim. Bu beni GWT kullanarak DHTML'yi gerçekten bilmeyen diğer Java geliştiricilerinin kullanamayacağı şekilde delirtti.

GWT ne diyorsa yapar - JavaScript'i ve bir dereceye kadar HTML'yi Java'ya çeker. Birçok geliştirici için bu kulağa çok hoş geliyor. Ancak, Jeff Atwood'un söylediği gibi, tüm soyutlamalar başarısız soyutlamalardır (GWT düşünülürse okunmaya değer). GWT ile bu özellikle aşağıdaki problemleri ortaya çıkarır:

GWT'de HTML kullanmak berbat.

Dediğim gibi, bir dereceye kadar bile, HTML'den soyutlar. Bir Java geliştiricisine iyi geliyor. Ama değil. HTML, bir belge biçimlendirme formatıdır. Bir belgeyi tanımlamak için Java nesneleri oluşturmak istiyorsanız, belge işaretleme öğelerini kullanmazsınız. Çıldırtıcı derecede ayrıntılı. Ayrıca yeterince kontrol edilmiyor. HTML'de aslında yazmanın bir yolu var <p>Hello how are <b>you</b>?</p>. GWT’de, Bbir Pdüğüme bağlı 3 alt düğüm (metin , metin) vardır . Önce P'yi ya da önce alt düğümleri oluşturabilirsiniz. Alt düğümlerden biri, bir işlevin dönüş sonucu olabilir. Birçok geliştirici ile birkaç ay süren bir geliştirme sürecinden sonra, GWT kodunuzu izleyerek HTML belgenizin nasıl göründüğünü deşifre etmeye çalışmak başağrısı yaratan bir işlemdir.

Sonunda, ekip belki tüm HTML için HTMLPanel kullanmanın doğru yol olduğuna karar verdi. Artık, GWT'nin, verileri kolayca bağlamak için Java kodunda hazır öğelere sahip olmasının avantajlarını kaybettiniz.

GWT'de CSS kullanmak berbat.

HTML soyutlamasına ek olarak, bu, CSS kullanma şeklinizin de farklı olduğu anlamına gelir. En son GWT'yi kullandığımdan bu yana iyileşmiş olabilir (yaklaşık 9 ay önce), ancak o zaman, CSS desteği bir karışıklıktı. GWT'nin size HTML oluşturma şeklinden dolayı, genellikle enjekte edildiğini bilmediğiniz düğüm düzeyleriniz vardır (herhangi bir CSS dev bunun görüntü oluşturmayı nasıl önemli ölçüde etkileyebileceğini bilir). CSS'yi gömmek veya bağlamak için çok fazla yol vardı, bu da kafa karıştırıcı bir isim alanı karmaşasına neden oldu. Bunun üzerine yine kulağa hoş gelen sprite desteğine sahiptiniz, ancak aslında CSS'nizi mutasyona uğrattınız ve daha sonra açıkça üzerine yazmak zorunda kaldığımız ya da bazı durumlarda elimizle eşleştirme girişimlerimizi engelleyen özellikleri yazma problemlerimiz vardı. CSS'yi kodladı ve GWT'nin batırmadığı şekilde yeniden tasarlamak zorunda kaldı.

Sorunların birliği, faydaların kesişimi

Herhangi bir dilde kendine özgü sorunları ve yararları olacak. Kullanıp kullanmadığınız, bunlara dayanan ağırlıklı bir formüldür. Bir soyutlamaya sahip olduğunuzda, elde ettiğiniz şey tüm sorunların birliği ve faydaların kesişimidir. JavaScript'in sorunları var ve sunucu tarafında çalışan mühendisler arasında genel olarak türetilmiş, ancak aynı zamanda hızlı web geliştirme için yararlı olan birkaç özelliği var. Kapanışları, sözdizimi stenoyu, geçici nesneleri, Jquery tarafından yapılan tüm işleri düşünün (DOM gibi CSS seçicisinin sorgulaması gibi). Şimdi GWT'de kullanmayı unutmayın!

Endişelerin ayrılması

Hepimiz bir projenin büyüklüğü arttıkça endişelerin iyi bir şekilde ayrılmasının kritik olduğunu biliyoruz. En önemlilerinden biri gösterimle işleme arasındaki ayrılıktır. GWT bunu gerçekten zorlaştırdı. Muhtemelen imkansız değil, ama üzerinde bulunduğum ekip asla iyi bir çözüm bulmadı, ve düşündüğümüz zaman bile, her zaman biri diğerine sızdı.

Masaüstü! = Web

@Berin Loritsch, yorumlarda yayınlandığı gibi, model veya zihniyet GWT, bir programın bir işleme motoruyla sıkıca birleştirilmiş bir oturma ekranı olduğu yaşam uygulamaları içindir. Bu kulağa hoş geliyor, çünkü çoğu kişi web'in eksik olduğunu düşünüyor. Ancak iki sorun var: A) Web HTTP üzerine kuruludur ve bu doğal olarak farklıdır. Yukarıda bahsettiğim gibi, HTTP üzerine inşa edilmiş teknolojiler - HTML, CSS, hatta kaynak yükleme ve önbellekleme (görüntüler, vb.) Bu platform için geliştirildi. B) Web üzerinde çalışan Java geliştiricileri bu masaüstü uygulaması zihniyetine kolayca geçiş yapmazlar. Bu dünyadaki mimari tamamen farklı bir disiplindir. Flex geliştiricileri muhtemelen GWT'ye Java web geliştiricilerinden daha uygun olacaktır.

Sonuç olarak...

GWT, yalnızca Java kullanarak oldukça kolay ve kirli AJAX uygulamaları üretme yeteneğine sahiptir. Hızlı ve kirli istediğiniz gibi görünmüyorsa, kullanmayın. Çalıştığım şirket, son ürüne çok değer veren bir şirketti ve kullanıcıya hem görsel hem de etkileşimli cila hissi verdi. Ön uç geliştiriciler için bu, HTML, CSS ve JavaScript'i GWT'yi kullanarak piyanoyu boks eldivenleriyle çalmaya çalışmak gibi yapılan şekilde kontrol etmemiz gerektiği anlamına geliyordu.


2
GWT yerine Wicket'i seçmemizin bazı nedenlerini tanıdım, sunuma çekti.
biziclop

12
FUD için -1, küçük ve büyük ölçekli uygulamalar için kullanılan GWT ile olan deneyimim negatiflerden çok daha olumluydu. Ve FUD yorumunda bu "sorunlardan" tek bir tanesine rastlamadım. GWT tarafından oluşturulan widget'ları çok az çabayla çok karmaşık HTML sayfalarına başarıyla yerleştirdik. Ne yaptığınızı biliyorsanız, harikadır, bir şeyleri yapmanın daha iyi bir yolu olabileceğini düşünmek istemiyorsanız, bu "cevabı" izleyin ve bu yorumu dikkate almayın.

9
@ Jarrod Bunlar karşılaşılacak "problemler" değil, GWT'nin doğası hakkında basit açıklamalar. İlgili olduğu yerlerde, onları özellikle projemizin hedefleri doğrultusunda olumsuz olarak nitelendirdim. Alternatif bir deneyiminiz varsa, yazmaktan çekinmeyin. O zamana kadar kanıtlanmamış tek bilgi GWT'nin "yeni ve daha iyi" olduğu iddiasıdır. Bu arada - bu cevabı yazdığımdan beri, şirket (artık çalışmıyorum) bir yıldan fazla mühendisin çalışmasını attı ve projeyi GWT'siz yeniden yazdı. Daha kısa sürede
Nicole

1
@ JarrodRoberson NickC ile aynı fikirdeyim, deneyimlerinizin eşit derecede ayrıntılı bir şekilde yazılmasını okumak için harika olurdu.
funkybro

8
@NickC Bir projeyi yeniden yazmak için "daha az sürede" GWT IMO'ya büyük bir darbe sayılmaz; Daha önce yapılmış olanları, farklı bir çerçevede veya dilde bile, "daha az zaman" harcaması gereken temelde tekrarladığınız herhangi bir proje.
funkybro

24

GWT'yi yoğun bir kullanımı olan büyük bir e-Devlet web uygulaması (arka uçtaki SOA) için kullanıyoruz. Eski kullanıcı arayüzü DHTML’deydi ancak tarayıcı uyumluluğu, performans optimizasyonu ve geliştirme süreci ile ilgili sorunlarımız vardı, bu yüzden alternatifler aradık.

Gereksinimlerimiz:

  • sunucu yükünü en aza indirmek için istemci tarafı UI katmanı
  • Tarayıcı Uyumluluğu
  • web tabanlı RIA
  • Kolay performans iyileştirmeleri
  • Hiçbir istemci eklentisi kurulumuna gerek yok, düz pencere kurulumuyla çalışmalı

GWT'yi seçtik ve asla pişman değilim. Yeni ekibin DHMTL deneyimi yoktu ya da azdı ve bu nedenle GWT'nin Java dev süreci çok yardımcı oldu. Kutuda ne var:

  • Tarayıcı Uyumluluğu
  • Java tabanlı geliştirme süreci ve kod yeniden kullanımı
  • isteklerin en aza indirilmesi (görüntü paketi, ...)
  • kolay agresif önbellekleme (yeni uygulamalar tamamen istemci tarafında önbelleğe alınır)
  • tüm kaynakların kolayca sıkıştırılması (daha eski buggy IE'lerinde js ile bile)
  • ve daha fazlası, burada bahsetmek çok

Bizim uygulama başlangıçta sunucuya tek bir istek yayınlar. Olumsuz tarafı, GWT'nin (ve ayrıca Android'in) kutudan kötü bir tasarıma sahip olmasıdır, ancak yine de kendi görünümünüzü uygularsanız ve CSS'yi uyarlamanız gerekir. Alternatif olarak, GWT için uygun stilleri ve temaları uygulamayı kolaylaştıran çeşitli bileşen kütüphaneleri kullanabilirsiniz.

Benim için belki de HTML DOM'nin el yapımı kadar iyi olmadığının bir anlamı yok, bu asla bir sorun değildi. C ++ ile geliştirdiğimde, oluşturulan assembler koduna bakmıyorum. GWT'de geliştiğimde JS koduna bakmam için hiçbir zaman bir sebep olmadı ve yalnızca DOM'a bakıp bazı yeniden düzenleme yapmak için bir neden verdi.

Benim için GWT, DEA'nın gelişimi için tek seçenek ve GWT'nin parlak bir geleceği olduğunu umuyorum. Görev tanımına bakınız:

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

Ancak Google’ın GWT’yi kendi iç projelerinin çoğunda kullanmadığı ve şu anda GWT’nin geleceği hakkında bazı söylentiler olduğu söylenmemelidir.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.