Google Web Toolkit Boris Šuška CUPtech O mne... • 2005-2009 – Unicorn a.s. – Vývoj Enterprise systémů • 2009-2011 – Vývoj systému PSDdark pod GWT • 2011 – Založení firmy CUPtech s.r.o. – Vývoj aplikací na GAE a GWT Agenda • Java EE (přehled) *15 min.+ • GWT Úvod *10 min.+ • Nástroje pro tvorbu GWT aplikací *10 min.+ • GWT komponenty [20 min.] • Vytáření GUI [10 min.] • Historie procházení *10 min.+ • Asynchronní volání *10 min.+ • Lokalizace [10 min.] • Optimalizace a nasazení *10 min.+ JAVA EE Základní přehled Platforma • Výkonné, škálovatelné, spolehlivé, více-vláknové prostředí pro běh serverových aplikací • Komponenta – část aplikace, program v Javě, splňuje „nějaké“ pravidla – tvoří strom, nemají cyklické závislosti • Kontejner – webový, EJB, (Spring), … – zabezpečuje služby komponentám • Aplikace – skládá se z komponent – komponenty „běží“ v kontejnerech Vícevrstvá architektura Java EE Server • Program v Javě • Implementuje specifikaci Java EE 6 (JSR-316) • Obsahuje/implementuje kontejnery • Známé implementace: – Oracle (Sun) Glassfish application server – Apache Tomcat, Apache Geronimo – IBM Websphere – Oracle (BEA) WebLogic, Jetty, JBoss, … Webová vrstva Zpracování HTTP požadavku 1. Přijetí HTTP požadavku serverem 2. Vytvoření HTTP* objektů 3. Vyhledání Filtrů, Servletu/JSP 1. Podle web.xml 2. Vo web archíve (*.war) 4. Spuštění Filtrů, Servletu/JSP 1. Vytvoření odpovědi 5. Vrácení odpovědi Požadavky na Webové aplikace • Uživatelská přívětivost • Bezpečnost • Výkonnost • Nezávislost na zobrazovacím zařízení • Lokalizace • Přístupnost GWT ÚVOD Co je GWT • Google Web Toolkit • RIA GUI Framework • RAD nástroj pro vývoj WEB 2.0 aplikací • Knihovna rozšířitelných komponent • Kompilátor jazyka Java do JavaScript-u Co GWT není • Zástupce jakékoli části Java EE platformy – Nenahrazuje Java EE, je jejím doplňkem. • JavaScript-ová knihovna Proč používat GWT • Pro vývoj dynamických webových stránek – Podpora ladění – Optimalizace – JUnit testování • Typově bezpečný JavaScript – Spustitelný kód • Vývoj komponentový webové vrstvy – Otestované a znovupoužitelné komponenty Jak GWT funguje Nástroje pro tvorbu GWT aplikací • GWT SDK – Java – JavaScript kompilátor – Základné komponenty • Zásuvný modul pre Eclipse IDE – Zjednodušuje vývoj • GWT Designer – WYSIWYG editor GWT aplikací • Speed tracker – Pro optimalizaci velikosti a výkonu aplikací GWT KOMPONENTY Základní komponenty frameworku GWT Rozložení obsahu - Panely • FlowPanel • VerticalPanel • HorizontalPanel Speciální panely • DockLayoutPanel • TabPanel • StackLayoutPanel Standardné komponenety • Label, HTML, Hyperlink • Tabulka • Strom Rozšířené komponenty • PopupPanel • DialogBox • Menu Formulářové komponenty • TextBox, PasswordTextBox, TextArea • CheckBox, RadioButton, Button Vytváření GUI – GWT Designer UiBinder • Od verze GWT 2.0 • Oddělení logiky od zobrazení (MVC) – Zobrazení definováno pomocí XML + CSS – Logika zůstává v Javě • Zjednodušené přidávaní handlerů UiBinder – ukázka XML UiBinder – ukázka Java HISTORIE STRÁNKY S DYNAMICKÝM OBSAHEM Jak „přežít“ backspace při stránkách s dynamickým obsahem Problém historie stránek • Platí pro stránku s dynamickým obsahem všeobecne • Nemění se URL • Znovunačtení = ztráta kontextu • Nelze poslat odkaz na dynamický obsah Řešení • History token • # + “token” dynamicky přidáván k URL – Stránka se nenačítá opakovaně • ValueChangeHangler na zachycení změny tokenu – Vyžaduje změnu controlleru aplikace – Nejdřív nastavit token, pak ve onValueChange změnit stav aplikace – Možnost parsovat vlastní token ASYNCHRONNÍ VOLÁNÍ SERVERU Jak v GWT komunikovat se serverovou částí GWT RPC GWT RPC – popis, klient • Rozhraní Služby – Dědí od RemoteService – Definuje vzdálené metody • Rozhraní Služby Async – Používá GWT klient – Návratová hodnota void – K parametrům přidáva AsyncCall, T = návratová hodnota metody v Rozhraní Služby GWT RPC – popis, server • Implementace Služby – Serverová část – Implementuje Rozhraní Služby – Servlet mapován na // GWT RPC - ukázka LOKALIZACE Lokalizační framework GWT Techniky • Statická – Konstanty a parametrizované řetězce – Používá Java property soubory • Dynamická – Překlad získává z Java-skriptových map generovaných dynamicky na servery • Plně řízená – Implementováním rozhraní com.google.gwt.i18n.client.Localizable Statická lokalizace • Constant – Java property soubory – Mapované přes rozhraní • ConstantWithLookup – Vyhledávaní konstant za běhu podle jména • Messages – Řetězce s parametry – Podpora množných čísel, skloňování, atd. NASAZENÍ Nasazení GWT aplikací • Ničím se neliší od nasazení běžné Javové webové aplikace • Před nasazením zkompilovat GWT aplikaci! • Nejsou potřeba: *.gwt.xml clinet/* shared/* SHRNUTÍ A ZÁVĚR Shrnutí • Tvorba dynamických webových aplikací pomocí GWT • Knihovna komponent • Historie dynamické stránky • Asynchronní volání • Lokalizace • Nasazení Děkuji za pozornost @cuptech_eu