it-swarm-tr.com

Google Web Araç Seti ne zaman kullanılmaz?

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 (en azından teorik olarak) ekibimin teknoloji yığınının boyutunu birer birer azaltmasına yardımcı olacak çapraz derleme .

Ancak, daha önce yanmış (çoğu geliştirici gibi), GWT ile ilgili belirli bir sorun alanı içinde kullanımını engelleyecek veya sınırlayacak herhangi bir sorun üzerinde gerçekten kullanan programcılardan duymak isterim.

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

55
Jas

Bu soruyu cevaplamak için hem iyi hem de kötüyum - iyi, aslında daha önce kullandım ve kötü, GWT ile çalışmaya başlamadan önce HTML/CSS/JavaScript ile oldukça deneyimliydim. Bu, GWT'yi diğer Java geliştiricilerin olmayabilir) bir şekilde kullanarak beni kızdırdı.

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

GWT'de HTML kullanmak berbat.

Dediğim gibi, bir dereceye kadar HTML'yi bile soyutlar. Java geliştirici için iyi görünüyor. Ama değil. HTML bir belge işaretleme biçimidir. Java nesneleri bir belge tanımlamak için) oluşturmak istiyorsanız, çılgınca ayrıntılıdır. Yeterince kontrol edilmez. HTML'de temel olarak <p>Hello how are <b>you</b>?</p> yazmanın bir yolu vardır. GWT'de 3 alt düğümünüz vardır (metin, B, metin) bir P düğümüne eklenir. Önce P'yi yaratabilir veya önce alt düğümleri oluşturabilirsiniz. Alt düğümlerden biri bir işlevin dönüş sonucu olabilir. birçok geliştirici ile geliştirme, GWT kodunuzu izleyerek HTML belgenizin neye benzediğini çözmeye çalışmak baş ağrısı yaratan bir süreçtir.

Sonunda, ekip belki de tüm HTML için HTMLPanel kullanmanın doğru yol olduğuna karar verdi. Artık, GWT'nin öğelerin kolayca veriye bağlanması için Java koduna hazır olma) avantajlarının çoğunu kaybettiniz.

GWT'de CSS kullanmak berbat.

HTML soyutlamasına ekleyerek, CSS'yi kullanma şekliniz de farklıdır. En son GWT'yi kullandığımdan beri (yaklaşık 9 ay önce) iyileşmiş olabilir, ancak o zaman, CSS desteği bir karışıklıktı. GWT'nin HTML oluşturmanızı sağlaması nedeniyle, genellikle enjekte edildiğini bilmediğiniz düğüm düzeyleriniz vardır (herhangi bir CSS geliştiricisi bunun oluşturmayı nasıl önemli ölçüde etkileyebileceğini bilir). CSS'yi yerleştirmek veya bağlamak için çok fazla yol vardı, bu da ad alanlarının kafa karıştırıcı bir karışıklığına neden oldu. Bunun üzerine, yine kulağa hoş gelen Sprite desteğine sahiptiniz, ancak aslında CSS'nizi mutasyona uğrattı ve daha sonra açıkça üzerine yazmak zorunda kaldığımız özellikleri yazmada sorun yaşadık veya bazı durumlarda elimizle eşleşme girişimlerimizi engelledik. CSS kodladı ve sadece GWT'nin vidalamadığı şekilde yeniden tasarlamak zorunda kaldı.

Sorunların birleşmesi, faydaların kesişimi

Her dilin kendine özgü sorunları ve faydaları olacaktır. Kullanıp kullanmamanız, bunlara dayanan ağırlıklı bir formüldür. Bir soyutlamanız olduğunda, elde ettiğiniz şey tüm sorunların birliği ve faydaların kesişmesidir. JavaScript'in sorunları vardır ve sunucu tarafı mühendisler arasında yaygındır, ancak aynı zamanda hızlı web geliştirme için yararlı olan birkaç özelliğe sahiptir. Kapanışları, sözdizimini steno, geçici nesneleri, Jquery tarafından yapılan tüm şeyleri düşünün (CSS seçici tarafından DOM sorgulaması gibi). Şimdi GWT'de kullanmayı unutun!

Endişelerin ayrılması

Hepimiz biliyoruz ki, bir projenin büyüklüğü büyüdükçe, endişeleri iyi bir şekilde ayırmak kritik önem taşımaktadır. En önemlilerinden biri görüntü ve işleme arasındaki ayrımdır. GWT bunu gerçekten zorlaştırdı. Muhtemelen imkansız değil, ama bulunduğum takım hiç iyi bir çözüm bulamadı ve sahip olduğumuzu düşündüğümüzde bile, her zaman diğerine sızdı.

Masaüstü! = Web

@Berin Loritsch'in yorumlarda belirttiği gibi, GWT için tasarlanan model veya zihniyet, bir programın bir işleme motoruyla sıkıca bağlı bir canlı ekrana sahip olduğu canlı uygulamalar. Bu kulağa hoş geliyor çünkü pek çok kişi web'in eksik olduğunu düşünüyor. Ancak iki sorun vardır: A) Web HTTP üzerine kurulmuştur ve bu doğal olarak farklıdır. Yukarıda bahsettiğim gibi, HTTP - HTML, CSS, hatta kaynak yükleme ve önbelleğe alma (görüntüler, vb.) Üzerine kurulu teknolojiler için bu platform üzerine inşa edilmiştir. B) Java geliştiriciler bu masaüstü uygulaması zihniyetine kolayca geçmezler. Flex geliştiricileri muhtemelen GWT için Java web geliştiricileri) 'den daha uygun olacaktır.

Sonuç olarak...

GWT, sadece Java kullanarak hızlı ve kirli AJAX uygulamaları oldukça kolay bir şekilde üretebilir. Hızlı ve kirli istediğiniz gibi görünmüyorsa, kullanmayın. Son ürün hakkında çok önemseyen bir şirketti ve hem görsel hem de etkileşimli cila hissi kullanıcı için.Ön ön geliştiriciler için bu, HTML, CSS ve Boks eldivenleri ile piyano çalmaya çalışmak gibi GWT kullanarak yapılan şekillerde JavaScript.

84
Nicole

GWT'yi yoğun kullanımı olan büyük bir e-Devlet web uygulaması (arka uçta 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ı kullanıcı arabirimi katmanı
  • tarayıcı Uyumluluğu
  • web tabanlı RIA
  • Kolay performans optimizasyonları
  • Hiçbir istemci eklentisi yüklemesi gerekmez, düz bir windows yüklemesi ile çalışmalıdır

GWT'yi seçtik ve asla pişman değilim. Yeni ekibin DHMTL deneyimi yok veya daha az oldu ve bu nedenle Java dev GWT süreci çok yardımcı oldu.

  • tarayıcı Uyumluluğu
  • Java tabanlı geliştirme süreci ve kodun yeniden kullanımı
  • isteklerin kolay minimize edilmesi (resim paketi, ...)
  • kolay agresif önbellekleme (yeni uygulamalar istemci tarafında tamamen önbelleğe alınır)
  • tüm kaynakların kolay sıkıştırılması (eski buggy IE'lerde js ile bile)
  • ve çok daha fazlası, burada bahsedilecek çok şey var

Uygulamamız başlangıçta sunucuya yalnızca bir istek gönderir. Olumsuz tarafı, GWT'nin (ve ayrıca Android'in) kutunun dışında zayıf bir tasarıma sahip olmasıdır, ancak yine de kendi görünümünüzü uygularsanız ve CSS'yi uyarlamanız gerektiğini hissedersiniz. Alternatif olarak, GWT için uygun stilleri ve temaları uygulamayı kolaylaştıran çeşitli bileşen kitaplıkları kullanabilirsiniz.

Benim için, HTML DOM'nin el işi kadar iyi olmadığının hiçbir anlamı yok, bu asla bir sorun değildi. C++ ile geliştirdiğimde, oluşturulan derleyici koduna bakmıyorum. GWT'de geliştirdiğimde JS koduna bakmamın hiçbir nedeni yoktu ve sadece bir kez DOM'a bakmak ve bazı yeniden düzenleme yapmak için bir neden yoktu.

Benim için GWT, DEA gelişimi söz konusu olduğunda tek seçenek ve umarım GWT'nin parlak bir geleceği vardır. Misyon beyanına bakınız:

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

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

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

24
ChrLipp