To guys fra spring source.
Gennemgang af HTML5 , html, css, js apis, media, 2d/3d canvas
JS APIs: Client side storage, app cache, websockets, drag-n-drop api, notifications.
Gennemgang af Spring MVC (ligner meget JAX-RS): Pojos med annotations
@Controller class MyController ... @RequestMapping("/simple") public @ResponseBody simple() ...
Mange muligheder for mappings til at styre HTTP verber, mime-typer og dynamiske dele.
(Lidt uenig i placering af mappings. At putte urlpaths ind i koden i form af annotations har både fordele og ulemper. Nogle gange bedre at have ved hånden men svært at få overblik).
‘hot-reload’ of Spring MVC kode er på vej (JRebel? Spring reloaded? talks). Lige nu skal man restart server for at den samler nye controllere osv. op.
//Mads
Eksperimentelle features (man kan hente noget kode allerede, med i næste Spring MVC 3.1).
Check http://www.html5rocks.com
Application Cache (HTML5):
<html manifest="XXX.manifest"> ... </html> xxx.manifest: CACHE MANIFEST index.html stylesheeet.css images/logo.png
Resourcer hentes KUN hvis cache manifest-filen ændres (i stedet for at spørge på hver resource).
‘Google closure templates’ javascript lib til frontend templates. ‘compiler’ templates fra java til enten serverside java jsp, og til en javascript representation (som så kan caches).
I nye js api kan man pille i url-adressen så cachede kald stadig manipulerer urlen i ajax apps.
history.pushState(data, key, url);
COOL!
back button: listen to pop state event, tag url fra window.location og render.
Js representationer kan f.eks. være en ‘edit-form’ som så tager en json model (hentet fra serveren) og kan forstå at rendere en edit skærm til at rette i modellen med. På den måde kan man nøjes med at hente modellen (i json form) til browseren. Viewet er der allerede!
Spring MVC har configuration for aplication.manifest (i XML format i stil med ant file patterns) med autogenerate (ved hver request).
(note: Jeg har lagt mærke til at google nu i nogle browsere ajax-loader dine søgninger istedet for at lave en page reload. Jeg tror de bruger browser-side tempaltes og kun returnerer json -rep af søgeresultater istedet for at returnere HTML)
Nye input-type felter: range (slider), date picker, email osv. (Opera er med, Webkit er der snart, og også FF4)
Idag bruger Spring Roo dojo til at matche validaring med javascript-side validering også.
Kører også på port 80! smart mht. firewalls. Serveren skal være med på spøgen. Vist kun jetty lige nu.
Forbindelsen bliver åben. Asynkron komminukation. Eksempel på js-kode:
var socket = new WebSocket(location); socket.onopen = function(event) { socket.postMessage(“Hello, WebSocket”); } socket.onmessage = function(event) { alert(event.data); } socket.onclose = function(event) { alert(“closed”); } var socket = new WebSocket(location);socket.onopen = function(event) { socket.postMessage(“Hello, WebSocket”);}socket.onmessage = function(event) { alert(event.data); }socket.onclose = function(event) { alert(“closed”); }
Sjovt eksempel:
Spring 3.0 SVN commit activity. Grafisk representation (flot demo) ved brug af websockets, og canvas. processing.js (visualization language fra java ported to js). bruger også web worker (sandbox thread).
The Catch:
The IE elephant. IE9 ser lovende ud, men support for ie8, ie7 skal måske vedligeholdelse osv.
BRUG: Chrome frame i IE6 osv. En metatag i din HTML vil rendere din web app i chrome indeni IE.