Single Page 
Web Applications 
! 
with 
! 
Scala and Spray
SPA HISTORY
’95 – Applets
’96 – Flash
’96 – IFRAME 
’99 – XML HTTP AXC 
’05 – AJAX 
’05 – SPA 
’06 – GWT 
’07 – SILVERLIGHT
PROBLEMS
NAVIGATION 
#FRAGMENT ID
SEO 
• GOOGLE PROTOCOL 
( _escaped_fragment_ ) 
• USER AGENTS 
DuckDuckBot/1.1 
facebookexternalhit/1.1
ANALYTICS 
ERROR TRACKING
BENEFITS
PERFORMANCE
SEPARATION 
OF ROLES
MAIN CHANGE
Routing 
Data Binding 
Templating 
Form Handling 
IoC / DI 
Async 
Modularisation 
Offline 
Testing 
MVC / MVVM
HTML JSONHTTP 
views 
model 
controllers 
services 
services 
domain 
legacy database
A 
E 
F G H 
B 
I J 
root 
C D 
/user/A/D/H
MODULES 
• PERSISTENCE 
• CLUSTERING 
• HTTP 
• JAVA
COMPONENTS 
SPRAY-ROUTING 
high-level 
server-side 
SPRAY-CLIENT 
high-level 
client-side 
SPRAY-CAN 
low-level HTTP 
server- and client-side 
SPRAY-HTTP 
! 
data model
API LAYER 
REST 
API 
Application Logic 
! 
! 
SOAP 
action API 
B J 
reply 
action 
reply 
request 
response 
A 
E 
F 
G H 
I 
/ 
D 
C 
K 
request 
response
Typesafe Activator 
! 
http://typesafe.com/platform/getstarted
@slavaschmidt 
slava.schmidt@dancingcode.com

WebCamp: Developer Day: Single Page Web Application with Scala/Spray- Slava Schmidt