Java Web Projelerinde kullanılan Google Web Toolkit hakkındaki düşünceleriniz nelerdir? Tecrübelerinizi bizim ile paylaşır mısınız? Artıları ve eksileri nelerdir? alt text

soruldu: 25 Nis '12, 05:48

mimaraslan's gravatar image

mimaraslan
2.2k6810794
cevap kabul oranı: 25%

değiştirildi: 27 Nis '12, 06:40


Gwt oldukca basarili bir projedir. Dunyadada pek cok buyuk firma ve projede kullanilmaktadir. Referans projesi Google Wave olmakla birlikte, google in bir cok projesi, seismic web uygulamasi, sap, vmware firmalarindada cesitli projelerde kullanilmaktadir.

Kisaca GWT derleyicisi yazilan Java kodunu tum tarayicilar icin uyumlu javascript e cevirir. Yazim tarzi klasik swing ve event listener lar seklinde oldugu icin ozellikle swing/awt yada benzeri bir arayuz gecmisi olan gelistiriciler cok kolaylikla gecis yapabilir. Ozellikle gelistirme sirasinda tum gelistirme ve debug islemlerini Java kodu uzerinden yaptigi icin hic bir javascript ortaminin saglayamadigi kolayligi sunar.

Her gwt uygulamasi bir entry point icerir ve bu giris noktasidir. Burada rootPanel ustune istenen komponentler ve onlara bagli eventListener lar eklenerek gelistirme yapilir. Genelde buyuyen projelerde gorsellik ve is mantigini birbirinden ayirmak icin MVC kalibina benzer MVP sablonu uygulanir.

Derleyici her tarayici icin ozel optimize edilmis ve kisaltilmis javascript uretir ki bu guvenli, uyumlu ve performanslidir. Derleyici "-pretty" secenegi ile okunabilir javascript te uretir.

//GWT kodu
public class OrnekGwt implements EntryPoint {
    /**
     * This is the entry point method.
     */
    public void onModuleLoad() {
        final Button sendButton = new Button("Send");
        final TextBox nameField = new TextBox();
        sendButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                nameField.setText("TEST!!");
            }
        });
    }
}

//Uretilen Obfuscated Js 
function Bb(b,c){var a,d,e,f,g,h;if(!c){throw new Kd('Cannot fire null event')}try{++b.b;g=Db(b,(gb(),fb));d=null;h=b.c?g.y(g.n()):g.x();while(b.c?h.b>0:h.b<h.c.n()){f=b.c?mf(h):gf(h);try{bc(bc(bc(f,4),2),22).a.c['value']='TEST!!'}catch(a){a=nc(a);if(dc(a,16)){e=a;!d&&(d=new Vf);Uf(d,e)}else throw a}}if(d){throw new Lb(d)}}finally{--b.b;b.b==0&&Fb(b)}}
permanent link

cevaplandı: 25 Nis '12, 09:51

murat's gravatar image

murat ♦
1.9k21124
cevap kabul oranı: 17%

Murat Hocam GWT'i bir öğrenci arkadaş projesinde kullanması gerekiyormuş. Bildiğim kadarıyla Eclipse entegre olarak çalışıyor. Benim şu ana kadar hiç GWT ile bir proje çalışmam olmadı. GWT için Java Web projelerini Vaaadin Framework gibi SWING - AWT kullanır gibi kodlamayı sağlıyor? Dersek yerinde olur mu?

(25 Nis '12, 10:10) mimaraslan mimaraslan's gravatar image
1

Vaadin zaten GWT uzerine wrapper olarak kurulmus bir yapidir. Ama kisisel tercihim vaadin yada benzer bir gwt frameworku yerine standart gwt kullanmak..

Cok basarili bir eclipse entegrasyonu var, tum proje yaratma, debug, compile islemleri eclipse uzerinden gerceklestirilebiliyor.

(25 Nis '12, 10:17) murat ♦ murat's gravatar image

Tabi ki arkasında Google gibi bir dünya devi olan bir frameworkü kullanmak oldukça mantıklı. Hocam GWT'nin öğrenilmesi JSF'ye kıyasla daha mı zor? Bu konudaki fikirlerinizi de hocam bizimle paylaşır mısınız?

(25 Nis '12, 10:21) mimaraslan mimaraslan's gravatar image
2

JSF tabii ki cok yaygin ve kabul gormus bir teknoloji, kaynagida daha fazla. Eger JSFten beklenti javascript yazmadan calisicak boyutta ise daha kolay olacaktir. JSF'teki sorun konunun jsf yazmaktan cikip javascript yazmaya kaydigi durumlarda ortaya cikiyor cunku yazilan js hem kolay debug edilemiyor hemde her browserda farkli davranis gosterebiliyor. GWT bu durumlarda tam tabiriyle parildiyor cunku sihirli bir bicimde size java yazip debug ettirirken sonucta ie6 da dahi calisan, zengin icerikli javascript uretiyor. Ozellikle desktop programciligi bilenler gwt yi cok kolay ogrenebilmekte

(25 Nis '12, 10:32) murat ♦ murat's gravatar image
1

Çok teşekkürler Murat hocam. GWT ile ilgili son olarak hocam jQuery gibi bir js kütüphanesi ile birlikte kullanımına dair de bizi bilgilendirirseniz çok memnun oluruz hocam.

(25 Nis '12, 11:20) mimaraslan mimaraslan's gravatar image
2

Gwt kendi icinde cok basarili ve performansli gwt-rpc yetenegini sunar ama sonucta uretilen kod javascript olacagi icin bildiginiz tum javascript kutuphaneleri ile sorunsuz calisir. Gwt uzerinden Javascript e ulasmak icin JSNI dene ve javadaki jni'a benzeyen javascript wrapper metodlari yazilir. Bircok js kodunu bu sekilde kullandim. Yalniz dikkat edilmesi gereken sey JSNI kullanildiginda gwt nin sundugu guvenlik ve memory kontrolunun disina ciktiginiz bu konulara artik sizin dikkat etmeniz gerekir (tipki java'da jni ile c kodu cagirmak gibi :) )

(25 Nis '12, 13:40) murat ♦ murat's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster

GWT piyasada oldukca ilgi ve ragbet gördügünü söyleyebilirim. Google su an bir cok servisinde GWT aktif olarak kullaniliyor. Sayisiz OpenSoruce veya kurumsal uygulama yapildi. devsniper.com da GWT ile yapilmis bir kac güzel proje listelenmis.

Temelde uygulama Hem server tarafinda hem de Client tarafinda Java ile gelistiriliyor. Bu bakimdan JavaDekstop dan gelen bir yazilimici icin olay cok da yabanci degil. Ayni Swing de ki gibi komponentlerle calisiyorsun. Sanki bir Dekstop uygulamasi yapar gibi. Sonra derleyici, senin java ile yazdigin client kodunu JavaScript koduna ceviriyor. Client da sadece JavaScript calistigi icin oldukca hizli oluyor ve Bir dekstop uygulamasi havasi veriyor. Yani Dekstop gibi davranan Web uygulamasi gelistiriyorsun. Bir kac artisi su sekilde siralanabilir ;

  • Aktif olarak Goole tarafindan kullaniliyor
  • JavaScript bilmene gerek yok
  • Tamamen Java ile gelistirilip test edilebiliyor
  • Server tarafida Client tarafida mükemmel bir sekilde Debug yapilabiliyor
  • Swing deki gibi komponent tabanli ve gelistirmesi hizli
  • Browser bagimsiz, her Browser da ayni sekilde calisiyor
  • OpenSoruce, Kaynak kodu elinde
  • Gin ve Guice ile, hem Client hem de Server tarafinda DI(Dependency Injection) kullanilabiliyor
  • Versiyon 2.4 den sonra Html ve CSS kullanmak ve kendi kompoentlerini olusturmak oldukca kolay
  • RequestFactory, server tarafindaki Model nesnesine ulasmayi cok kolaylastiriyor

En büyük eksi olarak; Google son zamanlarda yeni bir Update cikarmiyor ve GWT nin gelecegi tam belli degil. Cünkü Google, Java dan ayri olarak Dart diye yeni bir dil gelistrmekte olduklarini acikladi. GWT nin gelistirlmeye devam edilecegini ancak Programcilarin büyük kisminin su an bu yeni dil üzerinde calistigini duyurdu. Bu da, eger su anki versiyonda bir bug varsa, bunun nekadar hizli düzeltilecegi konusunda kafalarda soru isareti olusturuluyor. Bunun disinda ReguestFactory henüz cok yeni ve Google kullandiig ve önerdigi MVP(Model-View-Presenter) biraz karmasik.

permanent link

cevaplandı: 25 Nis '12, 10:05

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

değiştirildi: 25 Nis '12, 10:12

2

GWT ekibinden onemli kisiler baska projelere gecti ve son donemde biraz hiz kaybetti ama bu yavaslamadi platformun zaten olgunlasmis olmasida etkili. Google resmi olarak onumuzdeki gunlerde bir hareketlenme olacagini acikladi.

MVP ilk bakista karmasik gelsede eger gwt ile ciddi bir proje gelistirilecekse vazgecilmezdir. Aksi halde kisa sure icinde cok duzensiz bir yapi ortaya cikacaktir. MVP kullanimini kolaylastirmak icin maven archetype i yaratip kullanarak tekrar eden ve alt yapiyi olusturan kodlari otomatiklestirmek cozum olabiliyor.

(25 Nis '12, 10:14) murat ♦ murat's gravatar image

Spring, Hibernate diğer frameworklerle ve veritabanları entegresinde bir sorun yaşanıyor mu acaba? Araştırıp , denemek lazım.

(25 Nis '12, 10:15) mimaraslan mimaraslan's gravatar image
1

GWT tamanen browserda calisan Javascript kodunu uretir. Java tarafina ozel bir etkisi olmadigi icin mevcut kullandiginiz tum yapilar ile (ejb, spring vs dahil) sorunsuz calisir. Kendi iletisim yontemi java servletleri uzerine kurulmus gwt rpc dir.

(25 Nis '12, 10:23) murat ♦ murat's gravatar image
1

Büyük Projelerde MVP hakikaten de vazgecilmez, Google de kendisi israrla öneriyor. Su anda biz de Firma da GWT ile büyük bir Proje yapmaktayiz ve MVP kullaniyoruz.

(25 Nis '12, 10:31) mceliksoy ♦ mceliksoy's gravatar image

GWT ozellikle java ile ajax web projeleri yazacaksaniz bircok kolayliklar sunuyor. Java kodu yazarak client tarafina widget / component yazmaniz mumkun. Ayni zamanda cok iyi bir debug sistemine sahip.

GWT genelde Swing component mantigini desktop'a tasimakla / desktop mantiginda web projeleri yapmakla popülerlesti. Google aslinda GWT yi kendi icinde de aktif olarak kullaniyor. (google mail, google groups ve bircok diger servislerinde.)

GWT client tarafinda javascriptle olusturulan componentler gelistirdigi icin (java kodunu html + css + javascript koduna ceviriyor client tarafinda) cok konforlu componentler gelistirildi. Ozellikle ExtGWT(gxt) ve SmartGWT cok zengin widget / componentlere sahip. Ayrica GWT'nin kendi native widget / componentlerini CSS kullanarak cok farkli Theme'lerle kullanabiliyorsunuz. GWT son versiyonlarinda UIBinder ile (xml + html ile view tasarimi) direk html 5 elementlerini de view'lerde kullandirmaya basladi.

GWT + ExtGWT + Hibernate + Jasper Report(Listelemeler ve PDF, Excel, Open Office export islemleri icin) ile MVC(Model View Controller) catisi kullanilarak yazilmis open source Movie Club projesi'de burda mevcut. (Mustafa Dumlupinar tarafindan yazildi, dokumanlar turkce).

Daha once Java Swing ile projeler yazdiysaniz GWT siddetle tavsiye edilir :)

permanent link

cevaplandı: 25 Nis '12, 17:22

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

GWT de gelecek var gibi duruyor. Aslında çok güzel bileşenlere sahip.

permanent link

cevaplandı: 25 Nis '12, 14:38

nerminson's gravatar image

nerminson
5214915
cevap kabul oranı: 3%

-1

GWT bildigim kadariyla piyasada ilgi goremedi ve tutmadi.

permanent link

cevaplandı: 25 Nis '12, 09:13

betulcamsiler's gravatar image

betulcamsiler
160139
cevap kabul oranı: 0%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×10
×6
×1

Soruldu: 25 Nis '12, 05:48

Görüntüleme: 2,952 kez

Son güncelleme: 27 Nis '12, 06:40

powered by BitNami OSQA