Google Web Toolkit. Elek Márton. Drótposta kft.



Hasonló dokumentumok
Web-fejlesztés NGM_IN002_1

RIA Rich Internet Application

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Flex: csak rugalmasan!

Bevezetés Működési elv AJAX keretrendszerek AJAX

Java I. A Java programozási nyelv

MVC. Model View Controller

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

JAVA webes alkalmazások

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

RIA Rich Internet Application. Komplex felhasználói felülettel rendelkező web-alkalmazások

RIA Rich Internet Application

Ajax és Echo 2. Bokor Attila

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Webes alkalmazások fejlesztése

Webszolgáltatások (WS)

12.óra jquery Framework #1. Gyimesi Ákos

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Tartalom. Alapelemek. Célok. Eszközök. Szerkezet. Alapelvek. Prezentáció. Folyamat

Sakk-játék. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Összesítés. Látogatások száma Oldalak Találatok Adatmennyiség (11.08 Oldalak/Látogatás)

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

AJAX AJAX. AJAX: Asynchronous JavaScript and XML. az alábbi technológiákon alapul: AJAX-ot támogató keretrendszerek

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Java I. A Java programozási nyelv

Stateless Session Bean

Produktív környezetben használt, nyílt forráskódú komplex térinformatikai megoldások dr. Siki Zoltán

Mobil Informatikai Rendszerek

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

A Java EE 5 plattform

Mobil Informatikai Rendszerek

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

A szerzõrõl... vii Köszönetnyilvánítás... ix Bevezetés... xi A könyv példakódjai... xiii Áttekintés... xv Tartalomjegyzék... xvii

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

iphone és Android két jó barát...

Sakk játék. Feladat: JavaScript segítségével olyan programot kell írni, ami egy sakktáblát szimulál. Kiválasztásra változtatják a helyüket.

AJAX-ot támogató keretrendszerek

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő

Web programoz as

Földmérési és Távérzékelési Intézet

Az image objektum. Az image eseménykezel i. Képek el zetes betöltése. Feladat. Váltóképek készítése

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

Jquery. Konstantinusz Kft.

JavaScript Web AppBuilder használata

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

5-ös lottó játék. Felhasználói dokumentáció

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Fejlesztői szemmel at K

BEVEZETÉS A WEBLAPFEJLESZTÉSBE. Kvaszingerné Prantner Csilla, EKF

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Közösség, projektek, IDE

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

ANDROID ALKALMAZÁSFEJLESZTÉS

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

Oracle Forms - Oracle Application Express alkalmazások migrációja a jövőbe

Böngésző kompatibilitás


Viczián István IP Systems JUM XIX szeptember 18.

C#, OOP. Osztályok tervezése C#-ban

Web programozás. 3. előadás

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Eclipse Rich AJAX Platform alapú webalkalmazások teljesítmény analízise. BSc szakdolgozat. Áshin László. Ráth István PhD hallgató

Objektumorientált programozás

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Internet programozása. 1. előadás

Java és web programozás

Csoport neve: Kisiskolások Feladat sorszáma: 2. Feladat címe: Oktatási intézmény honlapja, oktatási naplóval. E-Project.

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

FELHASZNÁLÓI KÉZIKÖNYV 1.sz. melléklet

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Enterprise extended Output Management. exom - Greendoc Systems Kft. 1

Internetes böngésző fejlesztése a mobil OO világban

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Tartalom. A JavaScript haladó lehet ségei. Megjelenés. Viselkedés. Progresszív fejlesztés. A progresszív fejlesztés alapelvei

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

Java és web programozás

Statisztikai alap tihanyipercek.hu (201

Ustream.tv Bepillantás egy közösségi élővideo site működésébe

Broadcast Service Widget

Weboldalak fejlesztése mobil eszközökre

Adatbányászat és Perszonalizáció architektúra

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Java felhasználói felület

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Grafikus felületek készítése 1.

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Átírás:

Google Web Toolkit Elek Márton Drótposta kft.

Tartalom A GWT általában Java forrás, Web mód, Hosted mód Speciális szolgáltatások History kezelés, távoli eljárás hívás, Külső függvénykönyvtárak GWT-Ext, EXT GWT, Gwittir, HTMLTemplate, GWT- Log Tapasztalatok, jövő GWT 1.5

Célok To radically improve the web experience for users by enabling developers to use existing Java tools to build no-compromise AJAX for any modern browser

GWT Java forrás Szerver oldal Szerver oldal, GWT PHP RPC GWT fordító HTML JavaScript JavaScript

Miért jó ez nekünk I. Miért Java? Meglévő jól bevált eszközeinket szeretnénk használni. Bármilyen Java IDE-t használhatunk (kódszinezés, kiegészítés, dokumentáció) Tesztelhető (egységtesztek) Debugolható! Szabványosan dokumentálható (Javadoc) Forrás analizátorok, teszt lefedettség mutatók, stb. Újrahasznosítható és terjeszthető JAR fájlokon keresztül

Miért jó ez nekünk II. Fordítás Fordítás közben optimalizáció Gyorsabban töltődik be, mint egy kézzel írt JavaScript Kisebb, kompaktabb, cachelhető kód Automatikusan támogatja a különböző böngészőket (IE, Firefox, Mozilla, Safari, és Opera) Hibák egy része fordítási időben kiderül log.debug( Nem találom a partnert + p.getid() +! );

Web mód Java forrás Szerver oldal GWT fordító HTML JavaScript JavaScript

Hosted mód Java forrás Szerver oldal, GWT Hosted mód képernyő GWT fordító HTML JavaScript

Hosted mód / web mód Hosted mód fejlesztéshez speciális Java/Mozilla alapú GUI-ban futtatja a kódot Debuggolható bármilyen Java debugger képes IDE-vel Refresh esetén újrafordít Web mód éles üzembe Bármilyen web böngészőben fut

Példa alkalmazás Java Pelda.java forrás Szerver oldal Pelda.gwt.xml GWT fordító index.html HTML JavaScript JavaScript

Egy egyszerű példa: a Java kód public class Hello implements EntryPoint { public void onmoduleload() { Button b = new Button("Click me"); RootPanel.get().add(b); } }

Egy egyszerű példa: a Java kód public class Hello implements EntryPoint { } public void onmoduleload() { Button b = new Button("Click me", new ClickListener() { public void onclick(widget sender) { Window.alert("Hello, Ajax"); } ); RootPanel.get().add(b); }

Egy egyszerű példa: a HTML <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <script type="text/javascript" language='javascript' src='hu.conf.web.pelda.nocache.js'></script> </body> </html>

Egy egyszerű példa: az xml <?xml version="1.0" encoding="utf-8"?> <module> <source path='client'/> <inherits name='com.google.gwt.user.user'/> <entry-point class='hu.conf.web.client.pelda'/> </module>

Tartalom A GWT általában Java forrás, Web mód, Hosted mód Speciális szolgáltatások History kezelés, távoli eljárás hívás, Külső függvénykönyvtárak GWT-Ext, EXT GWT, Gwittir, HTMLTemplate, GWT- Log Tapasztalatok, jövő GWT 1.5

JavaScript Native Interface A Java kódból hívhatunk tiszta JavaScriptet: public static native void alert(string msg) /*-{ $wnd.alert(msg); }-*/; Hagyományos JavaScriptből hozzáférünk a generált Javascripthez @hu.conf.web.partnerservice::getpartner(ljava/lang/strin g;)(s);

Távoli eljárás hívás Java forrás Szerver oldal GWT fordító HTML JavaScript JavaScript

Távoli eljárás hívás II. GWT RPC Interfészeken keresztül közös felület a szerver és a kliens oldalon Aszinkron modell A szerializáció nem a mi dolgunk Tömörített adatátvitel JSON Az aszinkron lekérés eredményéből JSON objektumot csinálunk Nem típusos adattárolás

Obfuszkálás és optimalizáció kissebb tömörebb gyorsabb -style OBFUSCATED -style PRETTY (emberi olvasásra) -style DETAILED (hibakeresésre, elemzésre)

Kódgenerálási stílus: DETAILED _ = hu_conf_web_client_pelda.prototype = new java_lang_object(); _.java_lang_object_typeid$ = 0; function hu_conf_web_client_pelda$1_onclick Lcom_google_gwt_user _client_ui_widget_2(sender){ com_google_gwt_user_client_window_alert Ljava_lang_Stri ng_2('hello, Ajax'); }

Javascript stílus: PRETTY _ = Pelda.prototype = new Object_0(); _.typeid$ = 0; function onclick(sender){ alert('hello, Ajax'); }

Obfuszkált stílus: OBF _=jh.prototype=new ci();_.ti=0;function mh(a){fc('hello, Ajax');}

A generált kód mérete

History kezelés Előzménysort tölthetünk fel Stringekkel view/partner/12 edit/partner/12 Ezek között navigálhatunk előre és hátra Változás után az aktuális értéket megkapja a kezelő osztály, aki betölti a String alapján az előző/következő állapotot.

Tartalom A GWT általában Java forrás, Web mód, Hosted mód Speciális szolgáltatások History kezelés, távoli eljárás hívás, Külső függvénykönyvtárak GWT-Ext, EXT GWT, Gwittir, HTMLTemplate, GWT- Log Tapasztalatok, jövő GWT 1.5

GWT-Ext vs. Ext GWT Ext GWT régebbi néven MyGWT Tisztán Java alapú widget könyvtár, az ExtJS könytárhoz hasonló widgetekkel Layout rendszer GWT-EXT Csak egy burkuló Java felület A felszín alatt az Ext JS JavaScript könyvtár kódját hívja meg Sokkal gazdagabb widget kínálat Mindkettő licensze LGPL-ről GPL-re változott.

Gwittir Álrtalános MVC keretrendszer, ami néhány egyéb szolgáltatást is nyújt Adat másolás (binding) Introspekció Animációs lehetőségek Fejlettebb billentyűzetkezelés Loggolás

Gwittir binding nev cim telefon Partner Név Cím Telefon

Gwittir introspekció Introspekció BeanDescriptor bd = Introspector.INSTANCE.getDescriptor(Partner.class); Property property = bd.getproperty("cim"); String cim = property.getaccessormethod().invoke(partner, new Object[]); Binding Binding b = new Binding( partner, "nev", form, nev ); b.bind();

HTMLTemplate Header.html <div><span>itt egy gomb<span> <input type="button" id="search /> </div> Header.java HTMLWidget widget = new HTMLWidget("Header.html"); widget.add("search",new Button("Keresés"); Külső designer is könnyen belenyúlhat a megjelenítésbe. A html sablonokat újra és újra letölti, nem cache-el.

GWT-log Loggolás Firebug konzolba Felugró HTML DIV elembe Szerver oldalra Standard output Hosted mód konzolja Szintek már vannak, de osztály szintű loggerek még nincsenek

Tartalom A GWT általában Java forrás, Web mód, Hosted mód Speciális szolgáltatások History kezelés, távoli eljárás hívás, Külső függvénykönyvtárak GWT-Ext, EXT GWT, Gwittir, HTMLTemplate, GWT- Log Tapasztalatok, jövő GWT 1.5

Hátrányok, nehézségek Java 1.5 hiánya (annotációk, generikus típusok) Viszonylag lassú fordítási idő Optimalizáció Arrays.sort A keretrendszerek még elég alap funkcionalitással bírnak nem lehet lefordított részprojektet lefordítva újrahasznosítani

A jövő Jelenlegi verzió: 1.4 Következő verzió 1.5 (Jelenleg Milestone 2) Java 1.5 hiánya -> lesz Java 1.5 Lassú fordítási idő -> Modulárisabb kód Kevésbé kiforrott keretrendszerek Optimalizáció -> Gyorsabb lesz, jobb natív interfész

Optimalizáció

Összefoglalás professzionális fejlesztő eszközök széles körben elterjedt jó platform támogatás az 1.4-es változattól kezdve (>1 év) már éles környezetben is használható az 1.5-ös további látványos fejlődést hozhat

Kérdések / elérhetőségek marton.elek@mail.drotposta.hu http://jum.hu -- Java User Group http://jhacks.anzix.net -- Java Wiki

Élő alkalmazások Google Checkout Google Base http://www.queplix.com/ http://myhippocampus.com http://www.threerings.net/whirled/ http://www.crazybob.org/twubble/

Arrays.sort I.

Arrays.sort II. arr.sort()