25
Webes alkalmazásfejles ztés HTML5 és GWT segítségével Nagy Péter

Webapplication development with HTML5 and GWT

Embed Size (px)

Citation preview

Page 1: Webapplication development with HTML5 and GWT

Webes alkalmazásfejlesztésHTML5 és GWT segítségével

Nagy Péter

Page 2: Webapplication development with HTML5 and GWT

Bevezetés

Hogyan készítsünk böngészőben futó alkalmazásokat?

Page 3: Webapplication development with HTML5 and GWT

A böngésző mint futtatókörnyezetWebes appfejlesztéshez eddigi lehetőségek:

●Flash●Java applet●Silverlight●etc...

Fő probléma: Platformfüggőség

Page 4: Webapplication development with HTML5 and GWT

A megoldás

Page 5: Webapplication development with HTML5 and GWT

HTML5

Fő előnyök:●Böngészőfüggetlenség●Sebesség●Nincs szükség plug-inekre

Page 6: Webapplication development with HTML5 and GWT

Komponensek

●Szemantikus tagek●Media tagek ●Kibővített form mezők (validálás, widgetek)●CSS3●Javascript API-k

Page 7: Webapplication development with HTML5 and GWT

Javascript API-k●Canvas API●Request Animation Frame●Webstorage●Web SQL●Web workers●Websocket●File API●Geolocation API●Drag 'n' Drop

Page 8: Webapplication development with HTML5 and GWT

Canvas APIA <canvas> tag-gel hozható létre

Funkciók:●Alakzatok rajzolása●Gradiensek és minták készítése●Szöveg- és képkirajzolás●Transzformációk●Pixel manipuláció

Page 9: Webapplication development with HTML5 and GWT

Canvas APIhttp://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.png

Page 10: Webapplication development with HTML5 and GWT

Request animation frameJS animációk készítéséhezEgy callback, ami mindig akkor fut, amikor a böngésző rajzol.

requestAnimationFrame(step);function step(timestamp) {

//Do some magic requestAnimationFrame(step);}

Page 11: Webapplication development with HTML5 and GWT

WebstorageMax. 5-10Mb adatCsak kliensoldali

Session storageAz adat csak addig tárolódik, amíg be nem zárjuk az adott tabot vagy ablakot.

Local storagePermanens adattárolás.

Page 12: Webapplication development with HTML5 and GWT

Webstorage

sessionStorage.setItem('key', 'value');sessionStorage.getItem('key');

Page 13: Webapplication development with HTML5 and GWT

Web SQL●Böngészőbe ágyazott SQLite●Lokálisan tárolhatunk adatot●SQL lekérdezések

var db = openDatabase('mydb', '1.0', 'my first database',2 * 1024 * 1024);db.transaction(function (tx) { tx.executeSql(

'CREATE TABLE IF NOT EXISTS foo (id unique, text)' ); tx.executeSql(

'INSERT INTO foo (id, text) VALUES (1, "bar")' );});

Page 14: Webapplication development with HTML5 and GWT

Webworkers●Nagyobb számításigényű feladatokhoz●Külön szálon fut●Nem szakítják meg a felhasználói

interakciók●Üzeneteken keresztül lehet velük

kommunikálnivar worker = new Worker("worker_script.js");worker.postMessage("Hello World!");worker.onmessage = function(event) { alert("Received message " + event.data); doSomething();}

Page 15: Webapplication development with HTML5 and GWT

WebsocketKétirányú hálózati kommunikáció

●Ideális multiplayer játékokhoz●Csevegő alkalmazásokhoz

Websocket server implementációk:●node.js●python●c++●java●stb...

Page 16: Webapplication development with HTML5 and GWT

Websocket // Let us open a web socket

var ws = new WebSocket("ws://someaddress:9998/echo"); ws.onopen = function() { // Web Socket is connected, send data using send() ws.send("Message to send"); alert("Message is sent..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("Message is received..."); }; ws.onclose = function() { // websocket is closed. alert("Connection is closed..."); };

Page 17: Webapplication development with HTML5 and GWT

Geolocation és File APIGeolocation API

●Engedély szükséges●A felhasználó pozícióját kérhetjük el

File API●Gyenge támogatottság●fájlolvasás, fájlmentés, szeletelés

Page 18: Webapplication development with HTML5 and GWT

Böngésző támogatottságFő probléma:Még nem egységesek a szabványok, többféle implementációwindow.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function( callback ){ window.setTimeout(callback, 1000 / 60); }; })();

Page 19: Webapplication development with HTML5 and GWT

Fejlesztési nehézségek●Nehéz bővíteni a támogatott platformokat●Könnyű bugot csinálni

o régebbi verzióbanomás böngészőbenoeljövendő verziókban

●Workaround-okoNyilvántartás

Melyik böngészőben? Melyik verzióban?

oKell-e még?●Tesztelési nehézségek

oAz előzőek miatt

Page 20: Webapplication development with HTML5 and GWT

TeljesítményNagyobb alkalmazásoknál elengedhetetlen a teljesítmény figyelése

Lehetnek különbségek a böngészők között:●Memóriaszivárgás●Sebességkülönbségek

Page 21: Webapplication development with HTML5 and GWT

KitekintőEgyéb platformok:

●Windows 8 fejlesztésoA HTML5 teljesértékű programozási nyelv...

... - mondott valami hasonlót az MS DE NEM! Metro stílusú appok fejlesztése Nem egyenértékű a többi natív nyelvvel WP8 valószínűleg már nem támogatja natívan

●Mobilalkalmazás-fejlesztésoWebview-koAppok böngészőn keresztül

Page 22: Webapplication development with HTML5 and GWT

GWT (Google Web Toolkit)

●Google fejleszti●Első verzió: 2006●Kliens oldali programfejlesztéshez

oWeb UIoAJAX támogatás

●Java - JavaScript fordító●Kódolás, debuggolás Java-ban

oHosted mode●Jelenleg 2.5-ös verzió

Page 23: Webapplication development with HTML5 and GWT

Miben segít?●Java nyelv

oOOP tervezés (Osztályok, interface-k, öröklődés, típusok)

oEclipse integráció Okos kódkiegészítés Verziókezelő plug-inek Gyors fejlesztés

●Modularitás●Multiplatform●Optimalizálás●Obfuszkálás

Page 24: Webapplication development with HTML5 and GWT

Miben hátráltat?

●Multiplatform nehézségekoÁltalában áthidalható származtatással

●TípusosságoA natív JS-hez képest körülményes

●Lassú fordításoModuláris fejlesztéssel gyorsíthatóoHosted mode

Page 25: Webapplication development with HTML5 and GWT

Itt a vége...

Köszönöm a figyelmet!Kérdés?