Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi Mehmet Karakoç Akdeniz Üniversitesi Bilgi İşlem Daire Başkanlığı 28.11.2014 inet-tr'14 : GWT AUFaculty Project 1 İçerik • Giriş • Mevcut Sistem • Özgür Web Teknolojisi olarak Google Web Toolkit (GWT) • Geliştirilen Sistem – Mevcut Detaylar – Kullanılan Teknolojiler – Gerçekleştirilen Modüller – Gerçekleştirilecek Modüller • Sonuç 28.11.2014 inet-tr'14 : GWT AUFaculty Project 2 Mevcut Sistem 28.11.2014 inet-tr'14 : GWT AUFaculty Project 3 Genel Olarak GWT • GWT kodunuzu optimize edilmiş JavaScript‟e (JS) derler. • Sonuç kod HTML + CSS + JS olduğundan konuşlandırma işlemi (deployment) kolaydır. (statik içerik için HTML, görsel tasarım (styling) için CSS ve dinamik içerik için JS [1]) • Grafiksel kullanıcı arayüzü bileşenleri olarak kendi Widget‟ları vardır. • Temel amaç, farklı alanlardan Java geliştiricilerini web uygulamaları geliştirme dünyasına kolayca dâhil etmek 28.11.2014 inet-tr'14 : GWT AUFaculty Project 4 Geliştirilmekte Olan Sistem (AUFaculty Projesi) • Projede, GWT Widget‟larını kullanmak yerine, Bootstrap karşılıkları ile arayüzler tasarlanmaktadır (mobil için). Bu amaçla, „LoginView‟ ve „NavbarView‟ gibi görünüm örnekleri oluşturulmuştur. • Katkı: JS bilgisi gerektirmeksizin sadece Java programlama dili ile esnek ve verimli, web tabanlı ve mobil uyumlu uygulama geliştirebilme 28.11.2014 inet-tr'14 : GWT AUFaculty Project 5 Öğretim Elemanları için Bilgi Yönetim Sistemi • Geliştirme Ortamı [Ubuntu 14.04] – JDK 1.7u55 – Eclipse 4.3.2 – Maven 3.2.1 (External) – m2e 1.4.0 – Subversive SVN 1.1.3 (SVN Kit 1.6) – Google Plugin for Eclipse 3.5.1 • Altyapı Bileşenleri – UiBinder – GWT-Bootstrap – Google Guava EventBus – MyBatis 28.11.2014 inet-tr'14 : GWT AUFaculty Project 6 Öğretim Elemanları için Bilgi Yönetim Sistemi • Proje Yaşam Döngüsü – Proje Yönetim Aracı: Trac. (Yapılan değişikliklerin detayları trac üstünden görülebilir.) – Sürekli Entegrasyon Sunucusu: Jenkins. • Proje her gece 23:00‟te derlenir. • JavaDoc oluşturulur ve yayınlanır. * • Derlemeyi kıran geliştiriciler e-posta ile uyarılır. • Düzeltildiğinde de bilgilendirilirler. • Derleme başarılı ise otomatik olarak uygulama sunucusuna konuşlandırılır. – Geliştirici referans kaynakları: JavaDoc. – Test uygulama sunucusu: Tomcat. 28.11.2014 inet-tr'14 : GWT AUFaculty Project 7 Genel Noktalar • GWT uygulaması oldukça modüler bir yapıda geliştirilmekte? – Sürdürülebilirlik sağlanmalı – Bakım işlemleri kolaylıkla yapılabilmeli – Takım büyüyebilir • Veri Tabanı (VT) Yönetim Sistemi olarak MS SQL Server (eskiden kalan / mevcut veriler [legacy data] var) kullanılmaktadır. • Mobil ve Masaüstü erişim söz konusu • Kullanıcı arayüzü tasarımı önemli • VT yapısı değişime açık 28.11.2014 inet-tr'14 : GWT AUFaculty Project 8 Teknolojiler • UiBinder: Kullanıcı Arayüzü ve İş Mantığı (Business Logic) kodlarını birbirinden ayrık tutarak modülerliği desteklemek için çözüm. [2] • GWT-Bootstrap: GWT Widget‟larının mobil platformlarda performansı kötü, Bootstrap bu alanda da facto* çözüm. GWT-Bootsrap, Twitter Bootstrap bileşenlerinin GWT Widget‟ları hâlinde marshall^ edilmiş hâli. [3] • MyBatis: VT katmanını ve yapısını uygulamanın diğer katmanlarından ayrık tutabilmek için bir çözüm. iBatis tabanlı (geliştiricileri de ortak). Diğer ORM (nesne ilişkisel haritalama) çerçevelerinden farklı olarak, Java nesneleri tablolara değil yöntemler sorgulara eşlenir. [4] 28.11.2014 inet-tr'14 : GWT AUFaculty Project 9 Detaylar • Kullanıcı (LoginView) arayüzleri tamamen istemci tarafında (Views) • Veri Tabanı (FacultyServiceProxy) işlemleri tamamen sunucu tarafında (Proxy/RPC Services, DAO, Servlets) • Paylaşılan Kısım – Ortak işlemler, yordamlar, varlık nesnelerini içeren sınıflar vs. • Tanımlanan Kontrolör: EventBus (*) kanalı kullanılarak, kullanıcı tarafı ile veri tabanı tarafı tamamen birbirinden ayrılmaktadır. [5] * (edu.akdeniz.faculty.shared.Utility.EVENT_BUS) 28.11.2014 inet-tr'14 : GWT AUFaculty Project 10 Web Sayfalarını JAVA‟da Geliştirmek • Uygulama konuşlandırma (deployment) • Hata giderme (debugging) • İyileştirme ve düzenleme • Sürdürülebilirlik ve bakım • Öğrenme süreci uzun olabilir; fakat son derece esnek, özelleştirilebilir ve özellikle büyük ölçekli uygulamalar için uygun • Sunucu tarafının Java ile kodlanmasında GWT RPC kullanımı uygun 28.11.2014 inet-tr'14 : GWT AUFaculty Project 11 Tamamlanan Modüller • Genel Tercihler – Akademik Yıl ve Dönem Seçimi – Aktif Ders-Şube Belirleme • Şube İşlemleri – Ders Programı – Şube Öğrencileri (+Yoklama Listesi) • Sınav İşlemleri – Sınav Oluşturma – Not Girişi – Excel‟den Not Yükleme 28.11.2014 inet-tr'14 : GWT AUFaculty Project 12 Geliştirilen GWT Uygulaması 28.11.2014 inet-tr'14 : GWT AUFaculty Project 13 Sonuç • Java geliştiricileri için düşük ölçüde öğrenme çabası • Geliştiriciler için farklı alanların yetenekleri • Geniş bir takımla çalışabilme imkânı • Web projelerinde nesne yönelimli programlama • Hem HTML ve CSS hem de GWT Widget‟larını kullanabilme imkânı • GWT ile Zengin Arayüz Uygulamaları Geliştirebilme • Hız ve işlevsellik • Mobil Uyumluluk (Responsive) • Sürdürülebilirlik ve yönetilebilirlik 28.11.2014 inet-tr'14 : GWT AUFaculty Project 14 Referans • “Java [1] Web Application Frameworks”, http://www.syger.it/Topics/JavaWebApplicationFrameworks.html • [2] “UIBinder”, http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html • [3] “GWT-Bootstrap”, http://gwtbootstrap.github.io/ • [4] “SQL Mapping Framework for JAVA”, https://code.google.com/p/mybatis/ • [5] “Event Bus: GWT Tutorial (Google Web Toolkit)”, http://www.youtube.com/watch?v=2939gdrNymg 28.11.2014 inet-tr'14 : GWT AUFaculty Project 15