SlideShare a Scribd company logo
1 of 39
Download to read offline
End-to-end
  W3C APIs
   By Alexandre Morgaut
JS.everywhere(2012) Europe
Presentation
•   Wakanda Community manager

•   W3C AC member

•   Web Architect

•   JS Expert, REST Lover, NoSQL Fanboy

•   W3C “jseverywhere“ community group


                    @amorgaut
Agenda
• The World Wide Web
• The Standards
• Server-Side JavaScript
• Web Applications
• Now & Tomorrow
The World Wide Web
The Web
• WWW: WorldWideWeb
  (aka “Hypertext Project”)

 • UDI: Uniform Document Identifier
 • HTML: Hypertext Markup Language
 • HTTP: Hypertext Transfer Protocol
• created in 1989 by Tim Berners-Lee
REST
• Representational State Transfer
 • Client-Server
 • Stateless, Cache, Uniform Interface
 • Layered System
 • Code on Demand: JavaScript
• defined in 2000 by Roy Thomas Fielding
Web Standards
W3C
• Created at the MIT in 1994
• Led by Tim Berners-Lee and Dr. Jeffrey Jaffe
• Joint agreement among three "Host Institutions"
 • MIT, ERCIM, Keio University
• Working Groups
 • HTML, MathML, RDF, SVG, CSS, Audio, Device...
IANA
• Internet Assigned Numbers Authority
• created by Jon Postel and Joyce K. Reynolds
• department of ICANN Names and Numbers)
  (Internet Corporation for Assigned

• manages
 • Domain Names, IP Addresses, Protocol registries
• MIME Media Types
 • application, text, image, multipart...
IETF

• Internet Engineering Task Force
• organized activity of the Internet Society (ISOC)
• cooperates with W3C & ISO/IEC
• manages the RFCs (Request For Comments)
 • DNS, FTP, HTTP, SMTP, Zlib, Cookie, Atom
ECMA
•   European Computer Manufacturers Association

•   Standards
    •   CD-ROM, ECMAScript, C#, Office Open XML File Formats

•   JavaScript

    •   ECMA-262 aka ECMAScript aka ISO/IEC 16262

    •   TC39-TG1 managed by Mr. J. Neumann

    •   E4X: ECMAScript for XML

    •   ECMAScript Internationalization API

    •   Test262

                             http://wiki.ecmascript.org
WaSP
•   Web Standards Project

•   founded in 1998 by Georges Olsen, Glenn Davis, & Jeffrey Zeldman

•   convinced in 2001
    Microsoft, Netscape, Opera & other browsers to support
    HTML 4.01, XHTML 1.0, CSS1, and ECMAScript

•   AcidTests (by Ian Hickson)

    •   1: HTML 4 & CSS 1

    •   2: CSS 1 & CSS 2

    •   3: HTML 4, XHTML 1.0, CSS 2.1, DOM 2, ECMAScript 3.1

        •   Today last versions of all major Browsers 100% compliant
WHATWG
•   Web Hypertext Application Technology Working Group

•   founded in 2004 by individuals from Apple, the Mozilla & Opera

•   Led by Ian Hickson

•   Created to work on
    HTML5 based on Web Apps 1.0 + Web Forms 2.0 while the W3C
    choose to concentrate on XHTML

•   HTML being a living standard (no more versions)

•   Proposed

    •   Web Workers, Web Storage, Web Sockets, ...

•   New W3C working group created in 2007 to work on HTML5

•   WHATWG & W3C editions of HTML5 can have some differences
CommonJS
•   created in 2009 by Kevin Dangoor as ServerJS on Mozilla Wiki

    •   standards for JavaScript on the server

    •   Narwhal, Helma NG, v8CGI, GPSEE, chiron, Persevere

•   Renamed CommonJS

    •   command line tools, desktop, addon, or browser implementations

    •   joined by CouchDB, Wakanda, Sproutcore, node.js, RequireJS...

•   Modules, Packages, and Promises

•   Binary, FileSystem, System, I/O stream, Socket I/O

•   Browser like APIs: worker, console, HTTP client
Server-Side JavaScript
Engines
• Mozilla SpiderMonkey
• Mozilla Rhino
• Webkit JavaScriptCore
• Google V8
• Microsoft Chakra
• Opera Carakan
Standards

• ECMAScript

• CommonJS
Servers
• Microsoft IIS
• Persevere
• Jaxer
• node.js
• Wakanda
• RingoJS
• SilkJS
NoSQL Databases
• CouchDB
• MongoDB
• Riak
• WakandaDB
• ArangoDB
• OrientDB
More than 60
Server-Side JavaScript
  implementations
Web Application “1.0”
HTML5 APIs
• XMLHttpRequest 2    • Web Cryptography
• Blob                • ImageData
• File / FileSystem   • Typed Arrays
• Web SQL             • Storage Quota
• Web Storage         • System Information
• Web Workers         • URL
• Web Sockets         • WebCL
WebCL

“This section proposes mechanisms for
transferring pixel data between WebCL
memory objects and HTML media elements.
Server-side or Web Worker based
implementations of WebCL will not be
required to support these features.”
https://cvs.khronos.org/svn/repos/registry/trunk/public/webcl/spec/latest/index.html#4
Web SQL
“This document was on the W3C
Recommendation track but specification work
has stopped. The specification reached an
impasse: all interested implementors have
used the same SQL backend (Sqlite), but we
need multiple independent implementations
to proceed along a standardisation path.”

            http://www.w3.org/TR/webdatabase/
Web SQL
“This document was on the W3C
Recommendation track but specification work
has stopped. The specification reached an
impasse: all interested implementors have
used the same SQL backend (Sqlite), but we
need multiple independent implementations
to proceed along a standardisation path.”

            http://www.w3.org/TR/webdatabase/
Web SQL
“This document was on the W3C
Recommendation track but specification work
has stopped. The specification reached an
impasse: all interested implementors have
used the same SQL backend (Sqlite), but we
need multiple independent implementations
to proceed along a standardisation path.”

            http://www.w3.org/TR/webdatabase/

     Should we define a JSDBC API?
Async & Sync
• XMLHttpRequest(method, url, async)
• FileReaderSync()
• requestFileSystemSync()
• openDatabaseSync()
• indexedDBSync.open()
• localStorage.getItem()
IndexedDB

“The synchronous database API methods
provide a blocking access pattern to IndexedDB
databases. Since they block the calling
thread they are only available from
workers.”
         http://www.w3.org/TR/IndexedDB/#sync-database
Web Workers
• Dedicated or Shared
• No Window, No Document
• WorkerGlobal, WorkerUtils
• WorkerNavigator, WorkerLocation
• postMessage(), onmessage(), onerror()
• importScripts()
Concept

• Server JS contexts == Workers
 • multi-threaded -> Dedicated Workers
 • single threaded EventLoop -> Shared
• Server JS contexts === Remote JS Workers
Now & Tomorrow
RingoJS
• W3C
 • Web Worker
• CommonJS
 • Modules
 • System, fs, binary, IO, Unit Test
• Other: console
SilkJS

• W3C
 • XMLHttpRequest
• CommonJS
 • Modules
node.js
• W3C via modules
 • XMLHttpRequest (node-xmlhttprequest)
 • Web Sockets (node-websocket-client)
 • DOM (node-o3-fastxml), IndexedDB (perstore)
• CommonJS
 • Modules, Packages
• Other: console
Wakanda
• W3C
 • XMLHttpRequest, WindowTimer,
 • Web Storage, Web Worker,
 • File, FileSystem, Blob, ...
• CommonJS
 • Modules, System, Unit Test
• Other: console
Wakanda extensions

• Web Storage
 • sessionStorage + user.storage & storage
• Web Workers
 • Worker & SharedWorker + SystemWorker
Server-Side
JavaScript Context

CommonJS (module.id, require, ...)


Worker (importScripts, WindowTimer, ...)
Summary
•   ECMAScript is already everywhere

•   Modules: CommonJS already standard, AMD, ECMAScript 6

•   Many W3C APIs already applicable server-side

•   Same APIs means
    ➡ better learning curve
    ➡ more shared libraries / modules
    ➡ DRY -> shared Model work Offline
Client and Server JavaScript APIs
     W3C Community Group




http://www.w3.org/community/jseverywhere/

More Related Content

What's hot

Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Stephen Chin
 
Spring cloud for microservices architecture
Spring cloud for microservices architectureSpring cloud for microservices architecture
Spring cloud for microservices architectureIgor Khotin
 
Moving To The Client - JavaFX and HTML5
Moving To The Client - JavaFX and HTML5Moving To The Client - JavaFX and HTML5
Moving To The Client - JavaFX and HTML5Stephen Chin
 
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)Stephen Chin
 
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"Fwdays
 
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Red Hat Developers
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
How You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionHow You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionBoldRadius Solutions
 
The Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsThe Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsDor Kalev
 
Gwt overview & getting started
Gwt overview & getting startedGwt overview & getting started
Gwt overview & getting startedBinh Bui
 
MEAN Stack
MEAN StackMEAN Stack
MEAN StackDotitude
 
Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019graemerocher
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture AppDynamics
 
Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDDBasav Nagur
 
Micronaut Deep Dive - Devoxx Belgium 2019
Micronaut Deep Dive - Devoxx Belgium 2019Micronaut Deep Dive - Devoxx Belgium 2019
Micronaut Deep Dive - Devoxx Belgium 2019graemerocher
 
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...Hariharan Ganesan
 
Reactjs Introduction - Virtual DOM
Reactjs Introduction - Virtual DOMReactjs Introduction - Virtual DOM
Reactjs Introduction - Virtual DOMTamir Azrab
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 

What's hot (20)

Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5
 
Spring cloud for microservices architecture
Spring cloud for microservices architectureSpring cloud for microservices architecture
Spring cloud for microservices architecture
 
Moving To The Client - JavaFX and HTML5
Moving To The Client - JavaFX and HTML5Moving To The Client - JavaFX and HTML5
Moving To The Client - JavaFX and HTML5
 
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
 
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
 
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
How You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionHow You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in Production
 
Mean stack
Mean stackMean stack
Mean stack
 
The Dark Side of Single Page Applications
The Dark Side of Single Page ApplicationsThe Dark Side of Single Page Applications
The Dark Side of Single Page Applications
 
Gwt overview & getting started
Gwt overview & getting startedGwt overview & getting started
Gwt overview & getting started
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture
 
Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDD
 
Micronaut Deep Dive - Devoxx Belgium 2019
Micronaut Deep Dive - Devoxx Belgium 2019Micronaut Deep Dive - Devoxx Belgium 2019
Micronaut Deep Dive - Devoxx Belgium 2019
 
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
 
Reactjs Introduction - Virtual DOM
Reactjs Introduction - Virtual DOMReactjs Introduction - Virtual DOM
Reactjs Introduction - Virtual DOM
 
Introduction to MERN
Introduction to MERNIntroduction to MERN
Introduction to MERN
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 

Similar to End-to-end W3C APIs presentation overview

End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012Alexandre Morgaut
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferaydaveayan
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANJeff Fox
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013Alexandre Morgaut
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5mbaric
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Service stack all the things
Service stack all the thingsService stack all the things
Service stack all the thingscyberzeddk
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJSJITENDRA KUMAR PATEL
 
Alfresco Summit 2014 - Crafter CMS - Case European Bank
Alfresco Summit 2014 - Crafter CMS - Case European BankAlfresco Summit 2014 - Crafter CMS - Case European Bank
Alfresco Summit 2014 - Crafter CMS - Case European BankPiergiorgio Lucidi
 
05.m3 cms list-ofwebserver
05.m3 cms list-ofwebserver05.m3 cms list-ofwebserver
05.m3 cms list-ofwebservertarensi
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationStuart (Pid) Williams
 
Microservices with Spring Cloud
Microservices with Spring CloudMicroservices with Spring Cloud
Microservices with Spring CloudDaniel Eichten
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaAlexandre Morgaut
 
Mongo and node mongo dc 2011
Mongo and node mongo dc 2011Mongo and node mongo dc 2011
Mongo and node mongo dc 2011async_io
 

Similar to End-to-end W3C APIs presentation overview (20)

End-to-end W3C APIs
End-to-end W3C APIsEnd-to-end W3C APIs
End-to-end W3C APIs
 
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
Be faster then rabbits
Be faster then rabbitsBe faster then rabbits
Be faster then rabbits
 
Node and Azure
Node and AzureNode and Azure
Node and Azure
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Node.js
Node.jsNode.js
Node.js
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Service stack all the things
Service stack all the thingsService stack all the things
Service stack all the things
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 
Alfresco Summit 2014 - Crafter CMS - Case European Bank
Alfresco Summit 2014 - Crafter CMS - Case European BankAlfresco Summit 2014 - Crafter CMS - Case European Bank
Alfresco Summit 2014 - Crafter CMS - Case European Bank
 
Oracle application container cloud back end integration using node final
Oracle application container cloud back end integration using node finalOracle application container cloud back end integration using node final
Oracle application container cloud back end integration using node final
 
05.m3 cms list-ofwebserver
05.m3 cms list-ofwebserver05.m3 cms list-ofwebserver
05.m3 cms list-ofwebserver
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
Microservices with Spring Cloud
Microservices with Spring CloudMicroservices with Spring Cloud
Microservices with Spring Cloud
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
 
Mongo and node mongo dc 2011
Mongo and node mongo dc 2011Mongo and node mongo dc 2011
Mongo and node mongo dc 2011
 

More from Alexandre Morgaut

Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...Alexandre Morgaut
 
Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Alexandre Morgaut
 
Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Alexandre Morgaut
 
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014Alexandre Morgaut
 
HTML5 in automotive - web2day 2014
HTML5 in automotive  - web2day 2014HTML5 in automotive  - web2day 2014
HTML5 in automotive - web2day 2014Alexandre Morgaut
 
JS in SMS - JS.everywhere(2013)
JS in SMS - JS.everywhere(2013)JS in SMS - JS.everywhere(2013)
JS in SMS - JS.everywhere(2013)Alexandre Morgaut
 
Js in Automotive - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)Js in Automotive - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)Alexandre Morgaut
 
NoSQL and JavaScript: a love story
NoSQL and JavaScript: a love storyNoSQL and JavaScript: a love story
NoSQL and JavaScript: a love storyAlexandre Morgaut
 
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Wakanda and the top 5 security risks - JS.everyrwhere(2012) EuropeWakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Wakanda and the top 5 security risks - JS.everyrwhere(2012) EuropeAlexandre Morgaut
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryAlexandre Morgaut
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Alexandre Morgaut
 
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012Alexandre Morgaut
 
State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012Alexandre Morgaut
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveAlexandre Morgaut
 
NantesJS premier meetup - Welcome
NantesJS premier meetup - WelcomeNantesJS premier meetup - Welcome
NantesJS premier meetup - WelcomeAlexandre Morgaut
 
State of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSState of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSAlexandre Morgaut
 
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljsState of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljsAlexandre Morgaut
 
Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011Alexandre Morgaut
 
State of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJSState of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJSAlexandre Morgaut
 
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...Alexandre Morgaut
 

More from Alexandre Morgaut (20)

Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
 
Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017
 
Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012
 
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
 
HTML5 in automotive - web2day 2014
HTML5 in automotive  - web2day 2014HTML5 in automotive  - web2day 2014
HTML5 in automotive - web2day 2014
 
JS in SMS - JS.everywhere(2013)
JS in SMS - JS.everywhere(2013)JS in SMS - JS.everywhere(2013)
JS in SMS - JS.everywhere(2013)
 
Js in Automotive - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)Js in Automotive - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)
 
NoSQL and JavaScript: a love story
NoSQL and JavaScript: a love storyNoSQL and JavaScript: a love story
NoSQL and JavaScript: a love story
 
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Wakanda and the top 5 security risks - JS.everyrwhere(2012) EuropeWakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love Story
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
 
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
 
State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS Geneve
 
NantesJS premier meetup - Welcome
NantesJS premier meetup - WelcomeNantesJS premier meetup - Welcome
NantesJS premier meetup - Welcome
 
State of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSState of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJS
 
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljsState of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
 
Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011
 
State of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJSState of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJS
 
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

End-to-end W3C APIs presentation overview

  • 1. End-to-end W3C APIs By Alexandre Morgaut JS.everywhere(2012) Europe
  • 2. Presentation • Wakanda Community manager • W3C AC member • Web Architect • JS Expert, REST Lover, NoSQL Fanboy • W3C “jseverywhere“ community group @amorgaut
  • 3. Agenda • The World Wide Web • The Standards • Server-Side JavaScript • Web Applications • Now & Tomorrow
  • 5. The Web • WWW: WorldWideWeb (aka “Hypertext Project”) • UDI: Uniform Document Identifier • HTML: Hypertext Markup Language • HTTP: Hypertext Transfer Protocol • created in 1989 by Tim Berners-Lee
  • 6. REST • Representational State Transfer • Client-Server • Stateless, Cache, Uniform Interface • Layered System • Code on Demand: JavaScript • defined in 2000 by Roy Thomas Fielding
  • 8. W3C • Created at the MIT in 1994 • Led by Tim Berners-Lee and Dr. Jeffrey Jaffe • Joint agreement among three "Host Institutions" • MIT, ERCIM, Keio University • Working Groups • HTML, MathML, RDF, SVG, CSS, Audio, Device...
  • 9. IANA • Internet Assigned Numbers Authority • created by Jon Postel and Joyce K. Reynolds • department of ICANN Names and Numbers) (Internet Corporation for Assigned • manages • Domain Names, IP Addresses, Protocol registries • MIME Media Types • application, text, image, multipart...
  • 10. IETF • Internet Engineering Task Force • organized activity of the Internet Society (ISOC) • cooperates with W3C & ISO/IEC • manages the RFCs (Request For Comments) • DNS, FTP, HTTP, SMTP, Zlib, Cookie, Atom
  • 11. ECMA • European Computer Manufacturers Association • Standards • CD-ROM, ECMAScript, C#, Office Open XML File Formats • JavaScript • ECMA-262 aka ECMAScript aka ISO/IEC 16262 • TC39-TG1 managed by Mr. J. Neumann • E4X: ECMAScript for XML • ECMAScript Internationalization API • Test262 http://wiki.ecmascript.org
  • 12. WaSP • Web Standards Project • founded in 1998 by Georges Olsen, Glenn Davis, & Jeffrey Zeldman • convinced in 2001 Microsoft, Netscape, Opera & other browsers to support HTML 4.01, XHTML 1.0, CSS1, and ECMAScript • AcidTests (by Ian Hickson) • 1: HTML 4 & CSS 1 • 2: CSS 1 & CSS 2 • 3: HTML 4, XHTML 1.0, CSS 2.1, DOM 2, ECMAScript 3.1 • Today last versions of all major Browsers 100% compliant
  • 13. WHATWG • Web Hypertext Application Technology Working Group • founded in 2004 by individuals from Apple, the Mozilla & Opera • Led by Ian Hickson • Created to work on HTML5 based on Web Apps 1.0 + Web Forms 2.0 while the W3C choose to concentrate on XHTML • HTML being a living standard (no more versions) • Proposed • Web Workers, Web Storage, Web Sockets, ... • New W3C working group created in 2007 to work on HTML5 • WHATWG & W3C editions of HTML5 can have some differences
  • 14. CommonJS • created in 2009 by Kevin Dangoor as ServerJS on Mozilla Wiki • standards for JavaScript on the server • Narwhal, Helma NG, v8CGI, GPSEE, chiron, Persevere • Renamed CommonJS • command line tools, desktop, addon, or browser implementations • joined by CouchDB, Wakanda, Sproutcore, node.js, RequireJS... • Modules, Packages, and Promises • Binary, FileSystem, System, I/O stream, Socket I/O • Browser like APIs: worker, console, HTTP client
  • 16. Engines • Mozilla SpiderMonkey • Mozilla Rhino • Webkit JavaScriptCore • Google V8 • Microsoft Chakra • Opera Carakan
  • 18. Servers • Microsoft IIS • Persevere • Jaxer • node.js • Wakanda • RingoJS • SilkJS
  • 19. NoSQL Databases • CouchDB • MongoDB • Riak • WakandaDB • ArangoDB • OrientDB
  • 20. More than 60 Server-Side JavaScript implementations
  • 22. HTML5 APIs • XMLHttpRequest 2 • Web Cryptography • Blob • ImageData • File / FileSystem • Typed Arrays • Web SQL • Storage Quota • Web Storage • System Information • Web Workers • URL • Web Sockets • WebCL
  • 23. WebCL “This section proposes mechanisms for transferring pixel data between WebCL memory objects and HTML media elements. Server-side or Web Worker based implementations of WebCL will not be required to support these features.” https://cvs.khronos.org/svn/repos/registry/trunk/public/webcl/spec/latest/index.html#4
  • 24. Web SQL “This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.” http://www.w3.org/TR/webdatabase/
  • 25. Web SQL “This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.” http://www.w3.org/TR/webdatabase/
  • 26. Web SQL “This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.” http://www.w3.org/TR/webdatabase/ Should we define a JSDBC API?
  • 27. Async & Sync • XMLHttpRequest(method, url, async) • FileReaderSync() • requestFileSystemSync() • openDatabaseSync() • indexedDBSync.open() • localStorage.getItem()
  • 28. IndexedDB “The synchronous database API methods provide a blocking access pattern to IndexedDB databases. Since they block the calling thread they are only available from workers.” http://www.w3.org/TR/IndexedDB/#sync-database
  • 29. Web Workers • Dedicated or Shared • No Window, No Document • WorkerGlobal, WorkerUtils • WorkerNavigator, WorkerLocation • postMessage(), onmessage(), onerror() • importScripts()
  • 30. Concept • Server JS contexts == Workers • multi-threaded -> Dedicated Workers • single threaded EventLoop -> Shared • Server JS contexts === Remote JS Workers
  • 32. RingoJS • W3C • Web Worker • CommonJS • Modules • System, fs, binary, IO, Unit Test • Other: console
  • 33. SilkJS • W3C • XMLHttpRequest • CommonJS • Modules
  • 34. node.js • W3C via modules • XMLHttpRequest (node-xmlhttprequest) • Web Sockets (node-websocket-client) • DOM (node-o3-fastxml), IndexedDB (perstore) • CommonJS • Modules, Packages • Other: console
  • 35. Wakanda • W3C • XMLHttpRequest, WindowTimer, • Web Storage, Web Worker, • File, FileSystem, Blob, ... • CommonJS • Modules, System, Unit Test • Other: console
  • 36. Wakanda extensions • Web Storage • sessionStorage + user.storage & storage • Web Workers • Worker & SharedWorker + SystemWorker
  • 37. Server-Side JavaScript Context CommonJS (module.id, require, ...) Worker (importScripts, WindowTimer, ...)
  • 38. Summary • ECMAScript is already everywhere • Modules: CommonJS already standard, AMD, ECMAScript 6 • Many W3C APIs already applicable server-side • Same APIs means ➡ better learning curve ➡ more shared libraries / modules ➡ DRY -> shared Model work Offline
  • 39. Client and Server JavaScript APIs W3C Community Group http://www.w3.org/community/jseverywhere/