Podsumowanie doświadczeń dotyczących aplikacji opartej o Google Web Toolkit uruchamianej online, offline i na platformach mobilnych. Refleksje o miejscu GWT dziś i potencjale na rozwój w najbliższym czasie (2013).
Prezentacja ze spotkania Trójmiasto Java User Group w grudniu 2013.
6. Release notes
2.6.0
RC1
3.0
11.2013
● Java 7
● Super Dev Mode
● IE6/7
I/O 2014
● Faster development
● In an open setting
● modern, and mobile, web
● fewer surprises
● More Java compatibility
● Easier Interoperability
with the Rest the World
... ...
7. GWT dziś
GWT Steering Committee przejął władzę
● od 2012
● Google, Vaadin, Sencha, RedHat,
Arcbees, Jetbrains
●
8. GWT - obietnice (1)
● cross-browser compatibility
● optymalizacja kodu JavaScript
● dojrzałe środowisko developerskie i testowe
● standardy Java w web dev
GWT/Java JavaScript
Web
Browser
10. Zastosowanie GWT
Client-server app Standalone component
MySQL
Spring
GWT
Activities and Places
Hibernate
GWT
Activities and Places
web app xxxWebView
Web Browser iOS, Android, AIR
clientserver
client
RPC
19. Google Swiffy
● eksport animacji z Adobe Flash
● obiekt JavaScript, animacja w SVG
● waga ~450kB dla 10 sek animacji
● prosta w użytkowaniu
var elem = document.getElementById('swiffycontainer');
var stage = new swiffy.Stage(elem, swiffyobject);
stage.start();
20. CreateJs
● easelJs, tweenJs, soundJs, preloadJs
● eksport z Flash z możliwością dodania kodu
JavaScript
● złożone rozwiązanie, trudniejsze w
utrzymaniu od Swiffy
21. Performance - GWT vs JavaScript
Sortowanie tablicy 10 000 intów.
t [s]
28. Komunikacja - audio, video
● ograniczona przepustowość zmian URL
○ jedna zmiana URL trwa 200-300ms
● buforowanie zdarzeń
● zapytania i odpowiedzi
29. AIR - komunikacja - rozwiązanie
HTML AIR
INIT a.mp3
PLAY a.mp3
END b.mp3
...
air://INIT(a.mp3)
http://localhost/index.html#ON_INIT(a.mp3)
INIT b.mp3
...
http://localhost/index.html#ON_END(b.mp3)
air://…..
...
34. GWT - linker
Linkery w GWT:
● IFrame - kod w *.html w iframe (default)
● SingleScript - jeden monolityczny plik z kodem
● XS - cross-site
● XSIFrame - cross-site, kod osadzany w iframe
35. GWT linker dla offline
● XSIFrameLinker + obsługa <script>
1. Klasa linkera
2. Szablon
3. Definicja w
gwt.xml
47. GWT - plusy
● Java - type safety, biblioteki, przyzwyczajenie
● JUnit
● abstrakcja od problemów na poziomie HTML
● jeden język w zastosowaniu klient-serwer
48. GWT - minusy
● far from the metal
● brak pokrycia części funkcjonalność JS
przez GWT
● niepewna przyszłość
49. JavaScript for standalone - plusy
● Create Once Run Everywhere
● single codebase:
○ web
○ desktop
○ mobile
● działa
50. JavaScript for standalone - minusy
● utrudnione znajdowanie błędów, debugging
○ AIR, mobile
● słabe wsparcie dla komponentów HTML
○ WebView, StageWebView
● dziwne błędy
● każda platforma zaskakuje w inny sposób
51. GWT dziś?
● JavaScript się ucywilizował
○ angularJs, karma, jasmine, biblioteki
● Internet Explorer się cywilizuje
● HTML5 zaczyna działać
Nie koniecznie.
52. JavaScript dziś?
● JS czy native mobile?
○ rich content, szablony, style
○ native look and feel
To zależy.