SlideShare a Scribd company logo
1 of 42
Download to read offline
Sofea and SOUI
Web future without web frameworks
Berlin.JAR 2008
Berlin, 13.09.2008
Stephan Schmidt André Neubauer
Team manager IT-development Senior developer
2
Stephan Schmidt
Team manager IT development
ImmobilienScout24
CTO, Head of development,
consultant, researcher, article writer
…
Developer for 25 years
http://stephan.reposita.org
3
André Neubauer
Senior Developer
ImmobilienScout24
Senior Developer, IT consultant, member of
ava User Group Berlin
Java developer since Java 1.2
4
Modern web applications
5
Motivation
Scaling (with fewer Resources)
Currently low flexibility of web applications
Seperation of business logic and presentation
Promised since more than 10 years
Software developers are often designers too
Web applications hard to test
High latency because of data aggreagtion on server
Amazon Dynamo defines SLAs for response times
6
What is Sofea / SOUI?
Web-Client frontends for SOA architectures
Sofea - Service-Oriented Front-End Architecture
„Life above the Service Tier“, Ganesh Prasad
Focuses on XML/XSD, not JSON
Similar: SOUI - Service-Oriented User Interface
„MVC is Dead“, Nolan Wright
Focuses on Messages
Direct access to services with AJAX
Browser as (MVC) controller
No HTML on server, no Web Framework, even no Application on
Server possible
7
Why Sofea / SOUI?
Web 2.0 dramatically changed the landscape for internet applications
„The Web as Plattform“
„Services, not packaged software“
„Software above the level of a single device“
Tim O‘Reilly, What is Web 2.0, 2005
8
Sofea
Web Service
R
XML
REST
JSON
Browser
REST /
WS-*
R
XML
REST
JSON
9
Web development today
Service
View (HTML,
Ressourcen,
JS)
View
Java, HTML, JS
Controller (Java,
HTML)
Modell (Java)
R
Web-
Framework
10
Would be nice:
Seperation of concerns
11
Ideas of Sofea
Presentation Tier consists of Application Download, Presentation
Flow, Data Interchange
Web 1.0 fails this
Different application downloads (e.g. Amazon S3)
Client managed Presentation Flow
Data Interchange
Not HTML => Rich data structures, data types (XML/XSD in original
SOFEA proposal, JSON possible)
MVC for Presentation Flow and Data Interchange
12
Sofea architecture
13
Benefits of Sofea
Strict seperation of presentation and business logic
Moving presentation layer to client
Performance, responsiveness
Better testability
In isolation
Currently Selenium takes a lot of time
Excellent scalability
Easy reuse, integration of servivces (orchestration)
Backend in every language possible
Java, Ruby, Python, Erlang, Scala, OCaml, …
14
Sofea in development
… three development/desginer roles
For backend
For transformation of data
For presentation
15
Sofea – testing & prototyping
Mocking of single components (ajax engine)
Designer can create website application without developers using
JS and (iterative) try and error (loop with usability experts)
Automatic click tests possible
Later: message bus, store and replay messages
Frontend tests without any backends
Development of frontend independent of backend development
JS/HTML prototype == Finished implementation
(Marty Cagan High Fidelity prototype for product managers)
16
Sofea 2.0
Client side message bus
Similar to SOUI
Decouple client GUI
components, AJAX engine
and services
Storage of offline
applications: Google Gears
17
Example application
18
More than one Ajax (service) engine
possible
19
Mocking connectors
with a message bus
Scaling with Sofea
20
21
Scaling with client cache
(+ offline application)
22
Scaling with caching proxy
(E-Tag & Modified Since)
23
Scaling with service cache
Easy to implement (Memcached, ehCache) because of pure data
(XML, Json) compared to HTML pages or fragments
24
Scaling with additional services
Every backend REST service is easily stateless
All frontends can use any backend
Session state on server only used for authentication
= cache for perfomance reasons
or use security tokens
25
Scaling with a CDN (S3)
(Application download)
All HTML pages are static pages on CDN
With publish to CDN, JSON and XML data are static too!
Frameworks for Sofea
26
27
Frameworks
Jersey for REST in Java (Server)
jQuery for AJAX (Server <-> Client)
OpenAjax Hub for client side message bus (Ajax <-> Client GUI)
PURE JS library for client side templating (Client GUI)
28
Jersey – Java REST
JAX-RS JSR 311 implementation from Sun
Open Source
Annotations for REST – PUT, POST, GET etc.
https://jersey.dev.java.net/
29
Jersey example
1 // The Java class will be hosted at the URI path "/helloworld"
2 @Path("/helloworld")
3 public class HelloWorldResource {
4
5 // The Java method will process HTTP GET requests
6 @GET
7 // The Java method will produce content identified by the MIME Media
8 // type "text/plain"
9 @Produces("text/plain")
10 public String getClichedMessage() {
11 // Return some cliched textual content
12 return "Hello World";
13 }
14 }
30
JSON with Jersey
Automatically with JAX-B, or using Builder and static methods ($)
@Inject CustomerService service;
@GET
@Path("/customer/{customerId}")
@ProduceMime({"application/json", "text/html“, “text/xml”})
public Node getList(@PathParam(“customerId")
String customerId) {
Customer customer = service.findById(customerId);
return $(
$("id", customer.getId()),
$("name", customer.getName()),
$(„adresses", new List<Adress>(customer.getAdresses()) {
protected Node item(Adress adress) {
return $(type(„adress"),
$(„street", adress.getStreet()))
}
})
);
}
31
PURE – Javascript templating
How to render a frontend application without a web framework?
Dojo, jQuery UI, extJS, …
„PURE is an Open Source JavaScript Template Engine for HTML.
Truly unobtrusive, it leaves your HTML untouched.“
Open Source, MIT Lizenz
Embedding templates in page
Seperating HTML and render directives
HTML templates without logic, simple mapping
http://beebole.com/pure/
32
PURE Beispiel
<div id=„customer">
Hello <span class="who">customer</span>
</div>
function render() {
var directive = {"span.who" : "name"};
var context = { "name": customer.name };
$('#customer').autoRender(context, directive);
}
33
jQuery
„jQuery is a fast and concise JavaScript Library that simplifies HTML
document traversing, event handling, animating, and Ajax interactions for
rapid web development. jQuery is designed to change the way that you
write JavaScript.“
- jQuery website
Open Source, MIT / GPL
John Resig is a JavaScript evangelist for the Mozilla Corporation
DOM, Effects, Utilities, Ajax, UI
$("p.neat").addClass("ohmy").show("slow");
34
AJAX with jQuery
customer_put = function(customer) {
return jQuery.ajax({
type: "PUT",
url: "/customers/",
data: customer,
success: function(customer) {
OpenAjax.hub.publish(„customer.put.ok", customer)
},
dataType: "json"
});
}
35
OpenAJAX Hub 1.0
Messaging bus for Javascript
Goal: Interoperability between JS frameworks / components
Reference implementation
Adobe, Aptana, Cisco, Curl, Dojo, Eclipse, Google, IBM, Liferay,
Mozilla, Oracle, SAP, Sun, Thinwire, Tibco, Vodafone, Zend, Zoho
(108 Mitglieder)
http://www.openajax.org
36
OpenAJAX Hub API
Messages hierarchical
com.myproject.customer.new
Wildcards
com.myproject.*.new
com.myproject.**
OpenAjax.hub.subscribe(name, callback, scope, subscriberData, filter)
OpenAjax.hub.unsubscribe(subscription)
OpenAjax.hub.publish(name, publisherData)
More aspects of Sofea development
37
38
State
… a challenge
State management by client
Simple for 1-page applications => JS variable
Two main cases
Session State
View State
Solutions
Window.name
Cookies
Google Gears …
39
AJAX is NOT asynchronous
Ajax is asynchronous compared to page loading, but synchronous for
requests
Real async only possible with back channel
Comet as protocol
40
Comet
"Comet is a neologism to describe a web application model in which a
long-held HTTP request allows a web server to push data to a browser"
- Wikipedia
Eliminates classic web model
Several solutions for polling und streaming
Limitations by network (firewalls, proxies) and protocol (HTTP)
41
Data Interchange with Ajax and Comet
Questions?
Immobilien Scout GmbH
Andreasstr. 10
10243 Berlin
Tel: 030 - 24 301 1100
Fax: 030 - 24 301 1110
info@ImmobilienScout24.de
www.immobilienscout24.de

More Related Content

What's hot

single page application
single page applicationsingle page application
single page applicationRavindra K
 
Web Application Solutions
Web Application SolutionsWeb Application Solutions
Web Application Solutionsmarvin256
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationIMC Institute
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptmartinlippert
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Beat Signer
 
03 Teknologi Web 2
03 Teknologi Web 203 Teknologi Web 2
03 Teknologi Web 2Herman Tolle
 
Modern UI Architecture_ Trends and Technologies in Web Development
Modern UI Architecture_ Trends and Technologies in Web DevelopmentModern UI Architecture_ Trends and Technologies in Web Development
Modern UI Architecture_ Trends and Technologies in Web DevelopmentSuresh Patidar
 
Java web services soap rest training from hyderabad
Java web services soap rest training from hyderabadJava web services soap rest training from hyderabad
Java web services soap rest training from hyderabadFuturePoint Technologies
 
The History and Status of Web Crypto API (2012)
The History and Status of Web Crypto API (2012)The History and Status of Web Crypto API (2012)
The History and Status of Web Crypto API (2012)Channy Yun
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularMark Leusink
 

What's hot (20)

single page application
single page applicationsingle page application
single page application
 
Web Application Solutions
Web Application SolutionsWeb Application Solutions
Web Application Solutions
 
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web Application
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
 
06 Javascript
06 Javascript06 Javascript
06 Javascript
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
 
MERN stack roadmap
MERN stack roadmapMERN stack roadmap
MERN stack roadmap
 
Krishnakumar Rajendran (1)
Krishnakumar Rajendran (1)Krishnakumar Rajendran (1)
Krishnakumar Rajendran (1)
 
Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016
 
03 Teknologi Web 2
03 Teknologi Web 203 Teknologi Web 2
03 Teknologi Web 2
 
Resthub
ResthubResthub
Resthub
 
Modern UI Architecture_ Trends and Technologies in Web Development
Modern UI Architecture_ Trends and Technologies in Web DevelopmentModern UI Architecture_ Trends and Technologies in Web Development
Modern UI Architecture_ Trends and Technologies in Web Development
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
Top 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web DevelopmentTop 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web Development
 
Jsf2 overview
Jsf2 overviewJsf2 overview
Jsf2 overview
 
Java web services soap rest training from hyderabad
Java web services soap rest training from hyderabadJava web services soap rest training from hyderabad
Java web services soap rest training from hyderabad
 
The History and Status of Web Crypto API (2012)
The History and Status of Web Crypto API (2012)The History and Status of Web Crypto API (2012)
The History and Status of Web Crypto API (2012)
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
 

Viewers also liked

Sofea in a soa ecosystem v0 4
Sofea in a soa ecosystem v0 4Sofea in a soa ecosystem v0 4
Sofea in a soa ecosystem v0 4Ganesh Prasad
 
Life above the service tier preso v1 0
Life above the service tier preso v1 0Life above the service tier preso v1 0
Life above the service tier preso v1 0Ganesh Prasad
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSLeonardo Zanivan
 
Adaptive SOA with Interactive Monitoring Techniques and HPS
Adaptive SOA with Interactive Monitoring Techniques and HPSAdaptive SOA with Interactive Monitoring Techniques and HPS
Adaptive SOA with Interactive Monitoring Techniques and HPSIOSR Journals
 
The Next Wave of Application Architecture | MuleSoft
The Next Wave of Application Architecture | MuleSoftThe Next Wave of Application Architecture | MuleSoft
The Next Wave of Application Architecture | MuleSoftMuleSoft
 
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?Leonardo Zanivan
 
Service Oriented UI Architecture in the world of web, desktop, & mobile appli...
Service Oriented UI Architecture in the world of web, desktop, & mobile appli...Service Oriented UI Architecture in the world of web, desktop, & mobile appli...
Service Oriented UI Architecture in the world of web, desktop, & mobile appli...Axway Appcelerator
 
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Burgas Conf 21.06.2014 - Single page application Angularjs and NodejsBurgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Burgas Conf 21.06.2014 - Single page application Angularjs and NodejsDimitar Danailov
 
Digital Customer Experience Strategy, DocuSign [FutureStack16]
Digital Customer Experience Strategy, DocuSign [FutureStack16]Digital Customer Experience Strategy, DocuSign [FutureStack16]
Digital Customer Experience Strategy, DocuSign [FutureStack16]New Relic
 
Node.js 101
 Node.js 101 Node.js 101
Node.js 101FITC
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented ArchitectureRobert Sim
 
Introduction to Web Architecture
Introduction to Web ArchitectureIntroduction to Web Architecture
Introduction to Web ArchitectureChamnap Chhorn
 
Architecture of a Modern Web App
Architecture of a Modern Web AppArchitecture of a Modern Web App
Architecture of a Modern Web Appscothis
 

Viewers also liked (17)

Sofea in a soa ecosystem v0 4
Sofea in a soa ecosystem v0 4Sofea in a soa ecosystem v0 4
Sofea in a soa ecosystem v0 4
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Life above the service tier preso v1 0
Life above the service tier preso v1 0Life above the service tier preso v1 0
Life above the service tier preso v1 0
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJS
 
Adaptive SOA with Interactive Monitoring Techniques and HPS
Adaptive SOA with Interactive Monitoring Techniques and HPSAdaptive SOA with Interactive Monitoring Techniques and HPS
Adaptive SOA with Interactive Monitoring Techniques and HPS
 
The Next Wave of Application Architecture | MuleSoft
The Next Wave of Application Architecture | MuleSoftThe Next Wave of Application Architecture | MuleSoft
The Next Wave of Application Architecture | MuleSoft
 
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
 
Service Oriented UI Architecture in the world of web, desktop, & mobile appli...
Service Oriented UI Architecture in the world of web, desktop, & mobile appli...Service Oriented UI Architecture in the world of web, desktop, & mobile appli...
Service Oriented UI Architecture in the world of web, desktop, & mobile appli...
 
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Burgas Conf 21.06.2014 - Single page application Angularjs and NodejsBurgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
 
Digital Customer Experience Strategy, DocuSign [FutureStack16]
Digital Customer Experience Strategy, DocuSign [FutureStack16]Digital Customer Experience Strategy, DocuSign [FutureStack16]
Digital Customer Experience Strategy, DocuSign [FutureStack16]
 
Node.js 101
 Node.js 101 Node.js 101
Node.js 101
 
From SOA to MSA
From SOA to MSAFrom SOA to MSA
From SOA to MSA
 
Web application architecture
Web application architectureWeb application architecture
Web application architecture
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
 
Introduction to Web Architecture
Introduction to Web ArchitectureIntroduction to Web Architecture
Introduction to Web Architecture
 
Atomic design
Atomic designAtomic design
Atomic design
 
Architecture of a Modern Web App
Architecture of a Modern Web AppArchitecture of a Modern Web App
Architecture of a Modern Web App
 

Similar to Sofea and SOUI - Web future without web frameworks

Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricksSimon Sturmer
 
Sid K
Sid KSid K
Sid KSid K
 
Web development concepts using microsoft technologies
Web development concepts using microsoft technologiesWeb development concepts using microsoft technologies
Web development concepts using microsoft technologiesHosam Kamel
 
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnit
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnitWriting and Testing JavaScript-heavy Web 2.0 apps with JSUnit
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnitAlex Chaffee
 
WAD - WaveMaker tutorial
WAD - WaveMaker tutorial WAD - WaveMaker tutorial
WAD - WaveMaker tutorial marina2207
 
WaveMaker tutorial with Flash
WaveMaker tutorial with FlashWaveMaker tutorial with Flash
WaveMaker tutorial with Flashmarina2207
 
PPT with Flash ry
PPT with Flash ryPPT with Flash ry
PPT with Flash rymarina2207
 
Crash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesCrash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesUdita Plaha
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat ClientPaul Klipp
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) Sascha Sambale
 
Web Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJSWeb Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJSJoão Rocha da Silva
 
Introduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointIntroduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointRene Modery
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by GoogleASG
 
Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh Dasari
 
Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3Lucas Jellema
 
Full stack Java Developer
Full stack Java DeveloperFull stack Java Developer
Full stack Java DeveloperMdHasan872214
 

Similar to Sofea and SOUI - Web future without web frameworks (20)

Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricks
 
Sid K
Sid KSid K
Sid K
 
Web development concepts using microsoft technologies
Web development concepts using microsoft technologiesWeb development concepts using microsoft technologies
Web development concepts using microsoft technologies
 
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnit
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnitWriting and Testing JavaScript-heavy Web 2.0 apps with JSUnit
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnit
 
WAD - WaveMaker tutorial
WAD - WaveMaker tutorial WAD - WaveMaker tutorial
WAD - WaveMaker tutorial
 
WaveMaker tutorial with Flash
WaveMaker tutorial with FlashWaveMaker tutorial with Flash
WaveMaker tutorial with Flash
 
WaveMaker Presentation
WaveMaker PresentationWaveMaker Presentation
WaveMaker Presentation
 
PPT with Flash ry
PPT with Flash ryPPT with Flash ry
PPT with Flash ry
 
Crash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesCrash Course HTML/Rails Slides
Crash Course HTML/Rails Slides
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Web Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJSWeb Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJS
 
Introduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointIntroduction to using jQuery with SharePoint
Introduction to using jQuery with SharePoint
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
 
Ajax Ppt 1
Ajax Ppt 1Ajax Ppt 1
Ajax Ppt 1
 
Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead
 
Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3
 
AJppt.pptx
AJppt.pptxAJppt.pptx
AJppt.pptx
 
Full stack Java Developer
Full stack Java DeveloperFull stack Java Developer
Full stack Java Developer
 

Recently uploaded

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 

Recently uploaded (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Sofea and SOUI - Web future without web frameworks

  • 1. Sofea and SOUI Web future without web frameworks Berlin.JAR 2008 Berlin, 13.09.2008 Stephan Schmidt André Neubauer Team manager IT-development Senior developer
  • 2. 2 Stephan Schmidt Team manager IT development ImmobilienScout24 CTO, Head of development, consultant, researcher, article writer … Developer for 25 years http://stephan.reposita.org
  • 3. 3 André Neubauer Senior Developer ImmobilienScout24 Senior Developer, IT consultant, member of ava User Group Berlin Java developer since Java 1.2
  • 5. 5 Motivation Scaling (with fewer Resources) Currently low flexibility of web applications Seperation of business logic and presentation Promised since more than 10 years Software developers are often designers too Web applications hard to test High latency because of data aggreagtion on server Amazon Dynamo defines SLAs for response times
  • 6. 6 What is Sofea / SOUI? Web-Client frontends for SOA architectures Sofea - Service-Oriented Front-End Architecture „Life above the Service Tier“, Ganesh Prasad Focuses on XML/XSD, not JSON Similar: SOUI - Service-Oriented User Interface „MVC is Dead“, Nolan Wright Focuses on Messages Direct access to services with AJAX Browser as (MVC) controller No HTML on server, no Web Framework, even no Application on Server possible
  • 7. 7 Why Sofea / SOUI? Web 2.0 dramatically changed the landscape for internet applications „The Web as Plattform“ „Services, not packaged software“ „Software above the level of a single device“ Tim O‘Reilly, What is Web 2.0, 2005
  • 9. 9 Web development today Service View (HTML, Ressourcen, JS) View Java, HTML, JS Controller (Java, HTML) Modell (Java) R Web- Framework
  • 11. 11 Ideas of Sofea Presentation Tier consists of Application Download, Presentation Flow, Data Interchange Web 1.0 fails this Different application downloads (e.g. Amazon S3) Client managed Presentation Flow Data Interchange Not HTML => Rich data structures, data types (XML/XSD in original SOFEA proposal, JSON possible) MVC for Presentation Flow and Data Interchange
  • 13. 13 Benefits of Sofea Strict seperation of presentation and business logic Moving presentation layer to client Performance, responsiveness Better testability In isolation Currently Selenium takes a lot of time Excellent scalability Easy reuse, integration of servivces (orchestration) Backend in every language possible Java, Ruby, Python, Erlang, Scala, OCaml, …
  • 14. 14 Sofea in development … three development/desginer roles For backend For transformation of data For presentation
  • 15. 15 Sofea – testing & prototyping Mocking of single components (ajax engine) Designer can create website application without developers using JS and (iterative) try and error (loop with usability experts) Automatic click tests possible Later: message bus, store and replay messages Frontend tests without any backends Development of frontend independent of backend development JS/HTML prototype == Finished implementation (Marty Cagan High Fidelity prototype for product managers)
  • 16. 16 Sofea 2.0 Client side message bus Similar to SOUI Decouple client GUI components, AJAX engine and services Storage of offline applications: Google Gears
  • 18. 18 More than one Ajax (service) engine possible
  • 21. 21 Scaling with client cache (+ offline application)
  • 22. 22 Scaling with caching proxy (E-Tag & Modified Since)
  • 23. 23 Scaling with service cache Easy to implement (Memcached, ehCache) because of pure data (XML, Json) compared to HTML pages or fragments
  • 24. 24 Scaling with additional services Every backend REST service is easily stateless All frontends can use any backend Session state on server only used for authentication = cache for perfomance reasons or use security tokens
  • 25. 25 Scaling with a CDN (S3) (Application download) All HTML pages are static pages on CDN With publish to CDN, JSON and XML data are static too!
  • 27. 27 Frameworks Jersey for REST in Java (Server) jQuery for AJAX (Server <-> Client) OpenAjax Hub for client side message bus (Ajax <-> Client GUI) PURE JS library for client side templating (Client GUI)
  • 28. 28 Jersey – Java REST JAX-RS JSR 311 implementation from Sun Open Source Annotations for REST – PUT, POST, GET etc. https://jersey.dev.java.net/
  • 29. 29 Jersey example 1 // The Java class will be hosted at the URI path "/helloworld" 2 @Path("/helloworld") 3 public class HelloWorldResource { 4 5 // The Java method will process HTTP GET requests 6 @GET 7 // The Java method will produce content identified by the MIME Media 8 // type "text/plain" 9 @Produces("text/plain") 10 public String getClichedMessage() { 11 // Return some cliched textual content 12 return "Hello World"; 13 } 14 }
  • 30. 30 JSON with Jersey Automatically with JAX-B, or using Builder and static methods ($) @Inject CustomerService service; @GET @Path("/customer/{customerId}") @ProduceMime({"application/json", "text/html“, “text/xml”}) public Node getList(@PathParam(“customerId") String customerId) { Customer customer = service.findById(customerId); return $( $("id", customer.getId()), $("name", customer.getName()), $(„adresses", new List<Adress>(customer.getAdresses()) { protected Node item(Adress adress) { return $(type(„adress"), $(„street", adress.getStreet())) } }) ); }
  • 31. 31 PURE – Javascript templating How to render a frontend application without a web framework? Dojo, jQuery UI, extJS, … „PURE is an Open Source JavaScript Template Engine for HTML. Truly unobtrusive, it leaves your HTML untouched.“ Open Source, MIT Lizenz Embedding templates in page Seperating HTML and render directives HTML templates without logic, simple mapping http://beebole.com/pure/
  • 32. 32 PURE Beispiel <div id=„customer"> Hello <span class="who">customer</span> </div> function render() { var directive = {"span.who" : "name"}; var context = { "name": customer.name }; $('#customer').autoRender(context, directive); }
  • 33. 33 jQuery „jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.“ - jQuery website Open Source, MIT / GPL John Resig is a JavaScript evangelist for the Mozilla Corporation DOM, Effects, Utilities, Ajax, UI $("p.neat").addClass("ohmy").show("slow");
  • 34. 34 AJAX with jQuery customer_put = function(customer) { return jQuery.ajax({ type: "PUT", url: "/customers/", data: customer, success: function(customer) { OpenAjax.hub.publish(„customer.put.ok", customer) }, dataType: "json" }); }
  • 35. 35 OpenAJAX Hub 1.0 Messaging bus for Javascript Goal: Interoperability between JS frameworks / components Reference implementation Adobe, Aptana, Cisco, Curl, Dojo, Eclipse, Google, IBM, Liferay, Mozilla, Oracle, SAP, Sun, Thinwire, Tibco, Vodafone, Zend, Zoho (108 Mitglieder) http://www.openajax.org
  • 36. 36 OpenAJAX Hub API Messages hierarchical com.myproject.customer.new Wildcards com.myproject.*.new com.myproject.** OpenAjax.hub.subscribe(name, callback, scope, subscriberData, filter) OpenAjax.hub.unsubscribe(subscription) OpenAjax.hub.publish(name, publisherData)
  • 37. More aspects of Sofea development 37
  • 38. 38 State … a challenge State management by client Simple for 1-page applications => JS variable Two main cases Session State View State Solutions Window.name Cookies Google Gears …
  • 39. 39 AJAX is NOT asynchronous Ajax is asynchronous compared to page loading, but synchronous for requests Real async only possible with back channel Comet as protocol
  • 40. 40 Comet "Comet is a neologism to describe a web application model in which a long-held HTTP request allows a web server to push data to a browser" - Wikipedia Eliminates classic web model Several solutions for polling und streaming Limitations by network (firewalls, proxies) and protocol (HTTP)
  • 41. 41 Data Interchange with Ajax and Comet
  • 42. Questions? Immobilien Scout GmbH Andreasstr. 10 10243 Berlin Tel: 030 - 24 301 1100 Fax: 030 - 24 301 1110 info@ImmobilienScout24.de www.immobilienscout24.de