Google Web Toolkit Łukasz Kosson.

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Marcin Piotrowski. Najpopularniejszymi darmowymi przeglądarkami są Internet Explorer, Opera, Mozilla Firefox, Google Chrome.
Programowanie w języku C++. Jak napisać prosty program obliczeniowy lub grę komputerową? Zbigniew Nagórny Pracownia Komputerowa Wyższa Szkoła Humanistyczno-Przyrodnicza.
Generics w .NET 2.0 Łukasz Rzeszot.
Decyzje projektowe w .NET Framework
ActiveX. OLE W Windows 95 wprowadzono nową wersję techniki łączenia i osadzania OLE różnica między łączeniem a osadzaniem Office jako przykład wykorzystania.
WEB SERVICE Stefan Rutkowski.
CORBA Łukasz Wnęk.
Wydajne aplikacje na platformie .NET
ADAM Active Directory w trybie aplikacyjnym
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
ASP.NET 2.0 AJAX Extensions 1.0
Internet Communication Engine
Tworzenie ASP.NET Web Form
PHP vs. ASP PHP – lider wydajności wśród języków skryptowych.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Wzorce projektowe w J2EE
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
KURS Z INFORMATYKI prowadzący: mgr Przemysław Głowacki.
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Rozwój aplikacji przy wykorzystaniu ASP.NET
Aplikacje Internetowe
System webowy do tworzenia kolektywnych prototypów aplikacji sieciowych i mobilnych Łukasz Przywarty
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
A ctive S erver P ages Technologia dostępu do danych.
Wstęp do JavaScriptu Marek Magiera Październik 2003r.
Podstawy programowania II
Opracował : Przemysław Drzymała
Aplety w javie.
Podstawy Programowania
Dr hab. Dariusz Piwczyński Katedra Genetyki i Podstaw Hodowli Zwierząt
Tworzenie aplikacji mobilnych
Autor: Kamil Szafranek
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Systemy zarządzania treścią Wykład 5
Wstęp do ASP.NET Arkadiusz Popa Serwery Aplikacji
Programowanie sieciowe w Javie
Programowanie w języku C++
Podstawy programowania
C++.
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Kalendarz 2020.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Podstawy języka skryptów
Programowanie w językach skryptowych
Platforma .Net.
Portal edukacyjny J A V A S C R I P T JĘZYK PROGRAMOWANIA STRON HTML Opracowała: Anna Śmigielska.
Hooks w systemie Windows Autorzy: Paweł Kwiecień, Wojciech Kruczkowski Temat: Modelowanie użytkowników Zadaniem jest stworzenie (lub modyfikacja) systemu,
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Kompilator eBook w technologii Java Dyplomant: Maciej Bagrowski Promotor: dr inż. Walery Susłow Politechnika Koszalińska Wydział Elektroniki i Informatyki.
(według:
Framework css Prezentacje wykonał: szymon kupper
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Dynamiczny serwer aplikacyjny w C++ platforma LEFTHAND
Założenia projektowe Javy
JavaBeans by Paweł Wąsala
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

Google Web Toolkit Łukasz Kosson

Plan prezentacji Czym jest GWT? Omówienie systemu: RPC. Kompilator Biblioteka klas Komponenty UI RPC. Porównanie z innymi rozwiązaniami. Subiektywne wrażenia.

Czym jest GWT? Zestaw bibliotek i narzędzi do tworzenia aplikacji webowych. Kompilator Java do HTML+JavaScript. Środowisko do debugowania i testowania. Brak własnego środowiska programisycznego.

Kompilator GWTCompiler Przekształca źródło programu w Javie na JavaScript. Umożliwia pisanie lekkich aplikacji webowych w całości w Javie. Mamy statyczne typowanie  więcej błędów wykrytych w czasie kompilacji. Niezależność od docelowej „platformy” – otrzymany kod rozpoznaje przeglądarkę i korzysta charakterystycznych dla niej kruczków. Można pisać w obecnie istniejących, dobrze rozwiniętych IDE. Własna implementacja dziedziczenia i wołania metod wirtualnych.

Tryby pracy Tryb „hosted” Tryb „web” Aplikacja jest kompilowana do bajtkodu i uruchamiana na JVM wewnątrz odpowiedniej przeglądarki. Umożliwia debugowanie z poziomu istniejących środowisk IDE (np. Eclipse, NetBeans). Tryb „web” Kompilacja do HTML i JavaScript. Aplikacja gotowa do wystawienia na serwerze webowym lub do bezpośredniego uruchomienia. Strony gotowe do wyświetlenia w dowolnej przeglądarce. Praktycznie brak możliwości debugowania.

Przykład generowanego kodu – plik źródłowy

Przykład generowanego kodu – plik wynikowy (1)

Przykład generowanego kodu – plik wynikowy (2)

Przykład generowanego kodu – plik wynikowy (3)

Biblioteka klas – wybrane typy z JRE java.lang: String, Integer, Float, Math, StringBuffer i inne podstawowe typy. Throwable, Exception, Error oraz niektóre wyjątki (np. NPE, IOOBE, IAE, NFE) java.util: Kolekcje – m.in. ArrayList, HashTable, Stack, Array, Vector, Set Date Wyjątki java.io: PrintStream, OutputStream

Biblioteka klas Ograniczenia i różnice: Za mało czy w sam raz? Brak refleksji. Brak wątków. Problemy z dokładnością FP. System.out, System.err działa tylko w trybie „hosted”. Brak śladu stosu w Throwable. Parę innych, mniej znaczących (np. parametry Vectora). Wydajność (Character.isDigit) Za mało czy w sam raz?

Komponenty UI Rodzaje komponentów: Przykład użycia. Panele Kontrolki HTML Złożone i specjalizowane komponenty Przykład użycia. Tworzenie własnych komponentów.

Komponenty: panele Rodzaje: FlowPanel VerticalPanel, HorizontalPanel DockPanel PopupPanel Umożliwiają rozmieszczenie kontrolek na stronie. Podobieństwa i różnice w porównaniu do AWT/Swing: Nazewnictwo i zachowanie. Sposób obsługi. Brak LayoutManagerów.

Komponenty – panele

Komponenty HTML Przyciski Pola tekstowe Pola wyboru Listy

Komponenty specjalizowane Tree MenuBar TabPanel PopupPanel Google Maps API Google Search API SVG

Komponenty UI – sposób użycia

Własne kontrolki Dziedziczymy z Composite. W konstruktorze tworzymy naszą kontrolkę z innych klocków i/lub HTMLa. Implementujemy wybrane metody: OnClick,OnMouseEnter, OnMouseLeave, OnMouseDown, ... OnKeyPressed, OnKeyTyped, ... OnFocus, OnFocusLost OnLoad, OnError I już można korzystać w nowej kontrolki.

Obsługa zdarzeń Brak znanych ze Swinga modeli. Ale są za to listenery: ClickListener ChangeListener TreeListener HistoryListener Obsługa zdarzeń odbywa się po stronie klienckiej. Ale oczywiście można wywoływać zdalne metody (o RPC będzie później)

JSNI – JavaScript Native Interface Co z wydajnością? Integracja z istniejącymi rozwiązaniami. Zgodność z obecną składnią. Nie tracimy dostępu do obiektów Java. Nadal można sensownie debugować (póki co tylko pod Windows). Brak utraty kontroli typów.

JSNI – przykład

RPC – wstęp Sposoby komunikacji z serwerem: Tworzenie serwera: Własny mechanizm XMLHttpRequest JavaScript Object Notation (JSON) Tworzenie serwera: Zaprojektowanie interfejsu w wersji synchronicznej i asynchronicznej. Implementacja interfejsu synchronicznego w klasie dziedziczącej z RemoteServiceServlet. Modyfikacja konfiguracji na potrzeby debugowania.

RPC – przykład, interfejsy

RPC – przykład, serwer

RPC – przykład, klient

RPC – Serializacja Parametry i wyniki wszystkich metod muszą być serializowalnego typu. Typy domyślnie serializowalne: Typy podstawowe: char, byte, int itd. Opakowania na typy podstawowe: Character, Byte, String, Integer itd. Tablice typu serializowalnego.

RPC – własna serializacja Klasa jest serializowalna gdy: Bezpośrednio lub pośrednio implementuje ten interfejs. Wszystkie* jej pola są serializowalne. * - prawie wszystkie – pola final i transient nie muszą.

Porównanie z innymi rozwiązaniami. ASP.NET Ajax Web Extensions for ASP.NET (ATLAS) PHP i podobne Swing (!)

Porównanie: ASP.NET Wygląd ekranu konstruowany w IDE, jako strona HTML/ASP.NET. Bardzo podobny mechanizm obsługi zdarzeń. Wszelkie operacje są wykonywane po stronie serwera. Każde zdarzenie to ponowne odesłanie formularza. ASP.NET oferuje większą liczbę gotowych komponentów.

Porównanie: Atlas Właściwie to samo co w ASP.NET, ale: Zdarzenia są obsługiwane asynchronicznie. Więcej przetwarzania dzieje się po stronie klienta. Dodatkową funkcjonalność musimy sami oprogramować w JavaScript. Obsługa zdarzeń i generowanie HTML nadal odbywa się po stronie serwera. Wszystkie komponenty z ASP.NET działają asynchronicznie. Atlas: Dużo bogatsza kolekcja komponentów client-side. GWT: Znacznie trudniejsze tworzenie własnych kontrolek. W Atlasie AJAX jest podstawowym mechanizmem; w GWT – dodatkiem.

Porównanie: PHP i spółka Zupełnie inna filozofia – GWT jest nastawiony na tworzenie aplikacji a nie stron. Musimy oprogramować wiele rzeczy, które w GWT byśmy mieli za darmo (m.in. zdarzenia) Można napisać całkiem złożoną aplikację w GWT ani razu nie dotykając się do HTMLa.

Porównanie: AWT/Swing/SWT Dwa bardzo zbliżone rozwiązania, mimo że służą do zupełnie innych celów. GWT wymusza bardziej wyraźny podział aplikacji na warstwy.

Inne podobne kompilatory GWTCompiler nie jest nowym pomysłem. Istnieją podobne kompilatory dla innych języków: C# (Script#, jsc), Lisp (ParenScript), Smalltalk (ST2JS), Python (pyjamas). GWT jako jeden z nielicznych jest rozwijany (i to przez więcej niż jedną osobę).

Materiały Agile Ajax http://blogs.pathf.com/agileajax/ GWT Developer Guide http://code.google.com/webtoolkit/documentation/ GWT Basics www.javapassion.com/ajax/GWT_speakernoted.pdf GWT In Action http://www.manning.com/hanson/