Google Web Toolkit Michał Węgorek ZPO 2009

Podobne dokumenty
Google Web Toolkit. Piotr Findeisen

OpenLaszlo. OpenLaszlo

Tworzenie i wykorzystanie usług sieciowych

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Java w Internecie - czy to ma sens? ;)

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

JAX-RS czyli REST w Javie. Adam Kędziora

Anna Wrona, Janis Paraschidis, Igor Klimer. 6 kwietnia 2009

Aplikacje RMI

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

Wywoływanie metod zdalnych

Podejście obiektowe do budowy systemów rozproszonych

Wywoływanie metod zdalnych

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Remote Method Invocation 17 listopada 2010

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Programowanie Komponentowe WebAPI

Java Podstawy. Michał Bereta

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Programowanie obiektowe zastosowanie języka Java SE

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Aplikacje RMI Lab4

Java jako język programowania

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

1 Wprowadzenie do J2EE

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Klasy abstrakcyjne i interfejsy

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Paweł Rajba,

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Wykład 7: Pakiety i Interfejsy

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Systemy Rozproszone - Ćwiczenie 6

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Ćwiczenie 1. Przygotowanie środowiska JAVA

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Wybrane działy Informatyki Stosowanej

Re_Forms 21 Często zadawane pytania (FAQ)

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Zdalny dostęp do źródeł elektronicznych BUR dla pracowników i studentów Uniwersytetu Rzeszowskiego

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Przegląd narzędzi do automatycznego testowania aplikacji internetowych. Jan Płoszczyca SKISR 2006

Programowanie komponentowe 5

Aplikacje w środowisku Java

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Programowanie obiektowe

prepared by: Programowanie WWW Servlety

Multimedia JAVA. Historia

Wybrane działy Informatyki Stosowanej

1 Atrybuty i metody klasowe

WYKORZYSTANIE I ROZWÓJ WOLNEGO OPROGRAMOWANIA W WOJEWÓDZKIM WĘŹLE INFRASTRUKTURY INFORMACJI PRZESTRZENNEJ

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Enkapsulacja, dziedziczenie, polimorfizm

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Rozdział 4 KLASY, OBIEKTY, METODY

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Języki i metody programowania Java. Wykład 2 (część 2)

WŁĄCZANIE W PRZEGLĄDARKACH INTERNETOWYCH OBSŁUGI SKRYPTÓW JAVASCRIPT

Google Web Toolkit Rozwój aplikacji

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Współbieżność w środowisku Java

Programowanie obiektowe

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

System generacji raportów

Programowanie obiektowe

Programowanie rozproszone w języku Java

Programowanie w Internecie. Java

Programowanie obiektowe

Michał Jankowski. Remoting w.net 2.0

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Aplikacje Internetowe, Servlety, JSP i JDBC

Tworzenie i wykorzystanie usług

Transkrypt:

Google Web Toolkit Michał Węgorek ZPO 2009

Plan prezentacji Czym jest GWT? Co daje GWT motywacja Po co tłumaczyć Javę do JavaScriptu? - AJAX niebezpieczeństwa - Przewaga GWT nad AJAX - RPC - Utrzymywanie historii - I18N - Integracja GWT z istniejącymi aplikacjami Omówienie prostej aplikacji GWT

Czym jest GWT? Czym jest GWT? - zestaw narzędzi do tworzenia aplikacji typu AJAX w Javie Dlaczego GWT jest warte uwagi? - pisanie, uruchamianie, testowanie i debugowanie wszystkiego w Javie, zarówno kodu po stronie klienta (UI) jak i logiki biznesowej po stronie serwera

Czym jest GWT? Gdzieś o tym słyszałem, czy to nie jest aplet? -Nie, nie trzeba JVM. GWT przerabia kod w Javie na równoważny kod w czystym JavaScript Czyli GWT to kross kompilator? Java -> JavaScript? -Między innymi, ale to tylko mała część możliwości GWT

Czemu powstało GWT i skąd pomysł na przerabianie Javy do JavaScript?-Motywacja Wyższość aplikacji webowych nad aplikacjami innego typu: - Każda aplikacja webowa to URL, nie ma instalacji, nie ma brakujących DLLi - Bezpieczeństwo: Instalowanie = może być niebezpieczne Surfowanie po sieci = zwykle bezpieczne - Prostota Strony mają prosty i przyjemny wygląd Nie dużo do nauczenia: wstecz, dalej, guziki, odsyłacze...

Czemu powstało GWT i skąd pomysł na przerabianie Javy do JavaScript? http://www.it-bildungsnetz.de/fileadmin/media/akademietag_2007/

Czemu powstało GWT i skąd pomysł na przerabianie Javy do JavaScript? Google wprowadziło GWT częściowo na swoje potrzeby, m.in.: -Gmail, Google Maps... problem ze stanem: -pojęcie stanu jest sztucznie wprowadzane, bo zapamiętywane po stronie serwera w imieniu klienta (niepotrzebne obciążenie serwera) UI nie może się zmieniać interaktywnie u klienta aplikacje po stronie klienta mogą być powolne i mogą wymagać wysokiej przepustowości

Use Case [przykład DynaTable] http://www.it-bildungsnetz.de/fileadmin/media/akademietag_2007/

Po co tłumaczyć Jave JavaScript? AJAX niebiezpieczeństwo: -trzeba dodać do strony interaktywny skrypt -po kilku dniach dowiadujemy się o problemach -próbujemy poprawić -różnice pomiędzy przeglądarkami zbyt duże -nasz kod idzie do kosza

Przewaga GWT nad AJAX wykorzystanie Javy, developerów Javy i technologii z nią związanych, dużo potężniejsze narzędzie od AJAX debugowanie, JUnit, profiling (dostosowanie kodu do konkretnej przeglądarki) zmniejszenie, a nawet wyeliminowanie niezgodności przeglądarek, w GWT nasz kod działa na wszystkich liczących się przeglądarkach (IE, Firefox, Mozilla, Safari, Opera, Chrome).

Przewaga GWT nad AJAX Ułatwienie budowania kodu gotowego do ponownego użycia (jar) Możliwość zdalnego wywoływania kodu (RPC), bardzo proste przy pomocy GWT Przeniesienie (częściowej) informacji o stanie do klienta - odciążenie serwera Skalowalność

http://www.it-bildungsnetz.de/fileadmin/media/akademietag_2007/

[przykład GWT mail] Use Case

RPC JSON, XML-RPC Idea: chcemy wymieniać się z serwerem obiektami GWT RPC, Use Case entry-point - punkt dostępowy - klasa realizująca interfejs EntryPoint, która docelowo stanie się stroną HTML. Jest to część kliencka GWT. Może istnieć wiele punktów dostępowych. servlet - klasa rozszerzająca klasę RemoteServiceServlet, która jest definicją servletu - części aplikacji wykonywanej po stronie serwera (w sensie GWT i Java EE) i wywoływanej przez mechanizm GWT RPC. Klasa, z której dziedziczy servlet jest jedynie klasą pochodną znanej z Java EE klasy javax.servlet.http.httpservlet i obsługuje mechanizm serializacji.

GWT RPC zdalny serwis definiujemy interfejs i implementujemy go na serwerze interface SpellService extends RemoteService { String[] suggest(string word); } Tworzymy proxy i wywołujemy zdalne metody niemalże tak, jakby było one lokalne SpellServiceAsync spell =GWT.create(SpellService.class); spell.suggest("component", new AsyncCallback() { void onsuccess(object result) {... } void onfailure(throwable e) { } };

Use Case GWT RPC - WitajŚwiecieGWT

Utrzymywanie historii Historia w AJAX Historia w GWT public class Main implements EntryPoint, HistoryListener { } public void onmoduleload() { History.addHistoryListener(this); } public void onhistorychanged(string historytoken) {...}

Historia - przykład public void ontabselected(sourcestabevents sender, int tabindex) { History.newItem(""+tabIndex); } http://examples.roughian.com/index.htm#tutorials~history_support

Historia - przykład String oldtoken = null; public void onhistorychanged(string historytoken) { // If they are the same, no need to do anything if (historytoken!= null && historytoken.equals(oldtoken)) return; // Save the token for the next time round oldtoken = historytoken; }... menu.selecttab(index);

I18N INTERNATIONALIZATION = I + 18liter + N Jak dodać internacjonalizację do aplikacji W MyModule.gwt.xml zaznaczyć, że korzystamy z I18N: <module> <inherits name="com.google.gwt.i18n.i18n"/> </module> <extend-property name="locale" values="pl,en"/>

I18N Stworzenie plików zawierających teksty stałe dla poszczególnych języków oraz plik domyślny: Domyślny - MyConstans.properties (w pakiecie com.<..>.client) helloworld = Witaj Świecie goodbyeworld = Do widzenia Świecie Polski - MyConstans_pl.properties (w pakiecie com.<..>.client) helloworld = Witaj Świecie goodbyeworld = Do widzenia Świecie Angielski MyConstans_en.properties (w pakiecie com.<..>.client) helloworld = Hello World goodbyeworld = Goodbye World

I18N stworzenie w pakiecie com.<..>.client interfejsu MyConstans, w którym nazwy metod będą odpowiadać kluczom w plikach z tekstami stałymi: public interface MyConstants extends Constants { } String helloworld(); String goodbyeworld();

I18N Aby użyc naszych tekstów, wystarczy: 1) MyConstants myconstants = (MyConstants)GWT.create(MyConstants.class); 2) Od tej pory można używac metod obiektu myconstants: Window.alert(myConstants.helloWorld()); Biblioteka I18N sama troszczy się o język. Sprawdza atrybut locale podany w URL'u. Np: http://www.mycompany.com/mymodule.html?locale=pl

Integracja modułu GWT http://www.it-bildungsnetz.de/fileadmin/media/akademietag_2007/

Integracja modułu GWT W kodzie Java, w metodzie onmoduleload() klienta: RootPanel.get("stockList").add(dowolnyWidgetGWT); W kodzie HTML: <div id="stocklist"></div>

Omówienie prostej aplikacji StockWatcher http://code.google.com/intl/pl/webtoolkit/tutorials /1.6/create.html

Bibliografia http://www.it-bildungsnetz.de/fileadmin/media/akademietag_2007/ - grafika http://www.infoq.com/ - using google web toolkit http://coderlife.blogspot.com/2008/04/gwt-co-nacja-to-inna.html - internacjonalizacja http://www.jaceklaskowski.pl/blog/2007/05/02/gwt-rpc-mechanizm-zdalnego-w http://code.google.com/intl/pl/webtoolkit/ http://examples.roughian.com/index.htm#tutorials~history_support