18 Kasım 2009 Çarşamba

GWT ye Genel Bir Bakış




GWT ??

GWT kısacası kolay bir şekilde AJAX uygulaması geliştirmeye yarayan bir araçtır. Siz web arayüzünüzü, Java nın yanında(aslında Javanın bir alt kümesi) GWT kütüphanesini de kullanarak yazıyorsunuz (sanki swing vs. ile java masaüstü uygulaması yazar gibi) ve GWT onu javascript koduna çeviriyor. Böylece javascript'in dertleri ile uğraşmıyorsunuz.


GWT nin Avantajları:



  • Tamamen Java kodu yazıyorsunuz, haliyle de kolayca debug yapabiliyorsunuz.

  • Başkalarının yazdığı kodları .jar dosyası olarak kütüphanenize ekleyip kullanabiliyorsunuz. (Mesela başkasının hazırladığı bir takvim, ya da hava durumu öğesi)

  • Oluşturduğunuz arayüz elementlerine (Button,Label vs.) style atayabiliyor ve css dosyasında görünüşlerini değiştirebiliyorsunuz.

  • JavaScript Native Interface (JSNI) sayesinde diğer javascript kütüphanelerine erişim sağlayabiliyorsunuz.

  • Web arayüzü icin saf Java çözümü. Debugging, refactoring ve unit test işlemlerini UI katmanında yapma imkanı sağlar. Server tarafında da aynı şekilde.

  • Hazır elverişli Ajax geliştirme. Yazılan Java kodu Javascripte dönüştürülür. Elle yazılmış scriptlerden daha verimli ve hızlı çalışır.

  • Kolay ve hızlı öğrenim kolaylığı. Standart Java’dan başka bir şey öğrenmeye ihtiyaç duymaz.

  • UI için component model kullanır. Bu sayede kodun yeniden kullanılabilirliği vardır. Ayrıca birçok açık kaynak GWT bileşenleri mevcuttur.

  • Kompleks java bileşenlerini kullanma imkanı sağlar.(ArrayList, HashMap, Date,Math.. )

  • Dışardan Javascript kodları eklenebilmekte(JSNI )

  • Kompleks Java bileşenlerini server’a gönderebilir ve server’dan alabilir.

  • IDE kolaylığı. Normal Java uygulaması gerçekleştiriyor gibi.

  • POJO’larla ilgilenir - no JSON/XML/DOM

  • Dokümantasyonu ve haber grubu iyi.

GWT nin eksileri:



  • Derleme işlemi standart Java derleyicisine göre daha yavaş.

  • UI katmanının tasarımını iyi yapmak gerekiyor. Kod tekrarı büyük projelerde sınıf sayısının fazlalığına yol açabiliyor. Tasarım örüntülerinden faydalanmak gerekiyor(design patterns )

  • Gelişmiş GWT widgetlerine ihtiyaç duyuluyor. Mygwt, gwt-ext, google-web-toolkit-incubator…

  • HTML’ye referans verme işlemi GWT uygulaması içinde yapılamıyor.

  • Javascript ekleme işlemi doğrudan yapılamıyor. JSNI ile yapılmakta. İlk kullanımda zorluk çekilebilir.

  • GWT’deki modül konseptine alışmak da zorluk çekilebilir.

  • Yardımcı araçları diğer belli başlı uygulama çatılarına göre daha az olabilir.

  • Server la iletisim Service ler aracılığıyla yapılıyor.Validation işlemleri için halihazırda standart kütüphanesi yok sanırım.


GWT uygulamaları 2 şekilde çalıştırılabilirler:


Sunucu modu(hosted mode): Uygulama Java Sanal Makinadaki Java byte kodları şeklinde çalışır(JVM) Bu mod geliştirilmekte olan ve debug edilen uygulamalarda kullanılır.


Web modu: Bu modda çalıştırılan programlar Java Source dan JavaScript ve HTML kodlarına dönüştürülerek çalıştırılırlar.


Çeşitli açık kaynaklı plugin ler (eklentiler) GWT geliştiricisini diğer IDE lerden dah kullanışlı hale getirmektedirler.Bunlar : Netbeans için GWT4NB,Cypal Studio fir GWT,Eclipse ve Jdeveloper gibi..



GWT Bileşenleri


Temel GWT Bileşenleri:


GWT Java-to-JavaScript Compiler


Java Programlama Dilini JavaScript diline dönüştürür.


GWT Hosted Web Browser


Geliştiricilere, GWT Uygulamalarını sunucu modda yürütmelerine (yani uygulamaları JVM da JavaScript e dönüştürülmeden çalıştırmak) ve çalıştırmalarına imkân sağlar. Genelde debugging yapılırken kullanılır.


JRE emulation library


JavaScript uygulamaları çoğunlukla Java nın standart kütüphanelerini kullanırlar.(örneğin java.lang sınıfı ve java.util sınıfı gibi)


GWT Web UI class library


Widget ler yaratabilmemiz için sınıflar ve arayüzler (interfaces) kümesi.



Özellikleri


Dinamik ve yeniden kullanılabilir UI bileşenleri: programcılar uygulamalarında tekrar-dizayn edilebilir (pre-designed) yapılar kullanırlar aksi takdirde sürükle-bırak (drag-and-drop) yapıları veya karmaşık sanal ağaç yapıları (visual tree structures) gibi dinamik davranışları kullanmak çok zaman alır.


Simple RPC mekanizmaları ((Remote Procedure Call) mimarisi)


RPC: Temel anlamda client ve server arasında yapılan işlemlerin iletişimini sağlar.


Browser kayıt yönetimi


Java debugging i tam destekleme


GWT, geliştirici için tüm tarayıcıları(browser) destekler.


JUnit entegrasyonu


Geliştiriciler JSNI yi (JavaScript Native Interface) kullanarak kendi yazdıkları JavaScript kodları ile Javakaynak kodunu birleştirebilirler.


GWT uygulamalarında Google API lerinin kullanılmalarını desteklerler. (ilk olarak, Google Gears ı destekler)


Google Gears: web tabanlı uygulamaların internet bağlantısı olmadan da çalışması için geliştirilen bir teknoloji.


Açık kaynak


Geliştiriciler uygulamalarını Java kullanmaya başladıktan sonra nesneye yönelik mantıkla dizayn etmeye ve geliştirmeye başladılar(JavaScript kullanmak yerine).Çoğunlukla dizgi yanlışı ve tür uyumsuzluğu gibi hatalar JavaScript de derlenince (compile) yakalanırlar.


Google( and third parties) tarafından yayınlanan kütüphaneler GWT için uygunlardır. Bunlar GWT nin özelliklerini genişletirler.


GWT için yararlı widget ler


Versiyon 1.4 için GWT nin sağladığı bazı widget ler:


HTML primitives (Button, Radio Button, Checkbox, TextBox, PasswordTextBox, TextArea, Hyperlink, ListBox, Table etc.)


PushButton, ToggleButton


MenuBar


Tree


TabBar


DialogBox


Paneller (PopupPanel, StackPanel, HorizontalPanel, VerticalPanel, FlowPanel, VerticalSplitPanel, HorizontalSplitPanel, DockPanel, TabPanel, DisclosurePanel)


RichTextArea


SuggestBox (auto-complete)


Google Web Toolkit Incubator da widget leri desteklemektedir. (aynı zamanda GWT nin yeni sürümlerini de destekler)


Genel olarak widget ler GWT nin Ext GWT, GWT Component Library, GWT-Ext, GWT Widget Library, GWTiger, Rocket GWT, Dojo, SmartGWT gibi 3. Parti kütüphanelerine bulunmuyorlar.


Google Web Toolkit (GWT) ile Pratik AJAX Uygulamaları Geliştirmek


Google Web Toolkit (GWT), JAVA bilginiz varsa hem görsellik bakımından çok güzel hemde zaman olarak hızlı AJAX uygulamaları geliştirebilmemize olanak sağlıyor. Yazmış olduğunuz servleti Javascript kodlarına çevirirken siz ne kodunuzun güvenliğini dert ediniyorsunuz, ne de farklı işletim sistemi / platformlarda testler uyguluyorsunuz. Sadece işinize odaklanıp kod yazıyorsunuz .


İşin en güzel tarafı, sadece JAVA bilginiz varsa bile, bu bilgi size birçok şeyde yetiyor:) GWT’e başlamak ve bir iki ufak kod ile ilk denemelerinizi yapmanızı öneririm.


Mesela normal java kodunda bir buton oluşturmak için şu kodu yazıyoruz;


Button btn = new Button(“first button”);


GWT’yi kullanıp, Eclipse (veya farklı bir IDE lere de entegre edilebilir) AJAX kodu üretmek için button oluşturacağımız zaman yazacağımız kodda aynı şekilde oluyor;


Button btn = new Button(“Normal Button”);


ve web ekranındaki çıktımız da ;


Normal Button şeklinde oluyor.


Hızlı ve web tabanlı uygulamalar geliştirmek için GWT güzel bir framework.


Framework: Microsoft .NET Framework, uygulamalarin ve web servislerinin inşa edilebildigi(build), yayiminin yapilabildigi(deploy) ve çalistirilabildigi(run) bir platformdur.


GWT’yi popüler yapan özelliklerinden bir tanesi de, Google’ın dışında farklı üreticiler tarafından library ler sağlanıyor olması. Gerçekten dikkat çekecek kadar güzel hazırlanmış bu library lerden en güzel 2 tanesi:


GWT-Ext: Görsellik olarak çok güzel ve yetenekli bir kütüphane. İçerisinde hazır olarak kullanabileceğiniz ve işinize yarayacak birçok örnek mevcut.


MyGWT: Çok kullanışlı bir kütüphane. GWT kullanıcıları arasında yapılan bir ankette, %50 ye yakın oy almış.


Bu iki external kütüphanenin dışında da (GWT-SL, Gwittir, Hibernate4gwt gibi) çeşitli library ler mevcut.


Google Web Toolkit ile yapılmış bazı siteler:


http://www.base.google.com/

http://beta.contactoffice.com/nui/virtualoffice.jsp

http://www.openkm.com/

http://dismoiou.fr/

http://www.java2s.com/Code/Java/GWT/CatalogGWT.htm

http://www.gwt-ext.com/demo/

http://code.google.com/p/gwt-ext/

http://www.erisale.com sitesi de GWT ile yapılmış örneklerdendir.


Google Web Toolkit’in kendi ana sayfası ve kendi saf örnek kodlarının da yer aldığı linkler:


GWT’nin ana sayfası:

http://code.google.com/intl/tr-TR/webtoolkit/

Örnekler:


http://gwt.google.com/samples/Showcase/Showcase.html

Eclipse ile kullanım / araçlar :


http://gwt-ext.com/wiki/index.php?title=Using_Eclipse

http://www.instantiations.com/gwtdesigner/

Hiç yorum yok:

Yorum Gönder