SlideShare a Scribd company logo
End-to-end HTML5 APIs

Alexandre Morgaut
Osijek, Croatia
October 12th, 2013
Presentation
W3C AC member
Web Architect
JS Expert
REST Lover
NoSQL Fanboy
W3C “jseverywhere“
community group
@amorgaut
Agenda
The Web & JavaScript
Web standards
Server-Side JavaScript
HTML5
Remote Debugging
Present & Future
The Web & JavaScript
The Web
WWW: WorldWideWeb (Hypertext Project)
UDI: Uniform Document Identifier

➡

URL: Uniform Resource Locator

HTML: Hypertext Markup Language
HTTP: Hypertext Transfer Protocol
designed in 1989 by Tim Berners-Lee at the CERN

Info.cern.ch
1st website on Christmas 1990
created on NeXT
REST
Representational State Transfer
1. Null
2. Client-Server
3. Stateless
4. Cache
5. Uniform Interface
6. Layered System
7. Code on Demand: JavaScript
defined in 2000 by Roy Thomas Fielding in its dissertation
“Architectural Styles and the Design of Network-based Software Architectures”
http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm
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...
ECMA
European Computer Manufacturers Association
Standards:

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

JavaScript
ECMA-262: ECMAScript (see also ISO/IEC 16262)

➡
➡

TC39-TG1 managed by Mr. J. Neumann
Test262

ECMA-357: E4X: ECMAScript for XML
ECMA-402: ECMAScript Internationalization API
ECMA-404: The JSON Data Interchange Format (was RFC 4627)
http://wiki.ecmascript.org http://en.wikipedia.org/wiki/ECMAScript
http://www.ecma-international.org/publications/standards/Standard.htm
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, flusspferd
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
https://wiki.mozilla.org/ServerJS

http://www.commonjs.org/
W3C on Server-Side ?
Really?
DOM
Java
JavaScript
.NET
PHP
python
..;
But also
XSL-FO

SOAP

XSLT

WSDL

XPath

SVG

XQuery

RDF

XML Schema

SPARQL
Server-Side JavaScript
Engines
SpiderMonkey
3 JIT Compilers:
TraceMonkey,
JägerMonkey,
IonMonkey

webkit JavaScriptCore: JSC
SquirrelFish Extreme: SFX aka Nitro
(JIT Compiler inside)

V8

Rhino

JIT Compiler: CrankShaft

Tamarin

Carakan

Interpreted or Compiled execution

JIT Compiler: NanoJIT
-> ActionScript / “ECMAScript 4”

Trident: MSHTML / Chakra
-> Classic JScript, Managed JScript, & JScript.NET

Linear A,
Linear B,
Futhark
Standards
•

ECMAScript

•

CommonJS

More than 60 SSJS implementations
Servers
SpiderMonkey: GPSee, APE
Rhino: RingoJS, Persevere, AppJet, Glassfish
JavaScriptCore: wakanda
Trident / Chakra: IronJS, .NET
V8: node.js, SilkJS, TeaJS, Akshell
NoSQL Databases
SpiderMonkey: riak, CouchDB
Rhino: OrientDB
JavaScriptCore: WakandaDB
V8: ArangoDB, MongoDB, CouchBase
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/
Async “and” 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
==
JS Workers

➡ multi-threaded Dedicated Workers
➡ Shared Worker EventLoop
Remote Debugging
Protocols
Firebug Crossfire
Crossfire for Internet Explorer
V8 Debugger Protocol
Opera Scope Protocol
Webkit “Remote Debugging Protocol 1.0”
Mozilla Debugging Protocol
Purpose
Original

➡ Debug JS code running in mobiles
Implicit

➡ Debug JS code running on servers
Concept
Server JS contexts
===
Remote JS Workers
Present & Future
caniuse “SS-HTML5”
node.js

wakanda

RingoJS

SilkJS

Timers

YES

YES

Base64

module

module

module

XHR

module

module

YES

?

YES

Blob

YES

?

?

Storage

YES*

?

?

Workers

module

YES**

YES

?

Sockets

module

WAK7

?

?

YES

?

?

?

?

FileSystem
SSE

module

DOM

module

SQL

module

WebCL

module

module
http://www.w3.org/community/jseverywhere/wiki/Main_Page

APE

YES
RingoJS
HTML5

➡ Web Worker
CommonJS

➡ Modules
➡ System, fs, binary, IO, Unit Test
Other

➡ console
node.js
HTML5 via modules

➡ XMLHttpRequest (node-xmlhttprequest)
➡ Web Sockets (node-websocket-client)
➡ DOM (jsdom),
➡ IndexedDB (perstore), Web SQL (node-sqlite)
CommonJS

➡ Modules*, Packages
Other: console*
Wakanda
HTML5

➡ XMLHttpRequest, WindowTimer,
➡ Web Storages*
➡ Web Workers**
➡ File, FileSystem, Blob, ...
CommonJS

➡ Modules, Packages, System, Unit Test
Other: console
Wakanda
* Web Storages

➡ sessionStorage, “user.storage”, “application.storage”
➡ lock(), tryLock(), unlock()
➡ no localStorage but easy to polyfil
➡ “storage” event planned
** Web Workers

➡ Worker, SharedWorker, “SystemWorker”
Wakanda
Server-side JS context

➡ CommonJS (module.id, require, ...)
➡ Worker (importScripts, WindowTimer, ...)
CommonNode
HTML5 via modules

➡
➡
➡
➡

XMLHttpRequest (node-xmlhttprequest)
Web Sockets (node-websocket-client)
DOM (jsdom)
IndexedDB (perstore), Web SQL (node-sqlite)

CommonJS

➡

Modules, Packages

➡

System, fs, binary, IO, Unit Test

Other: console
http://olegp.github.io/common-node/
Summary
ECMAScript is already everywhere
Modules
➡

CommonJS already standard

➡

AMD (Asynchronous Module Definition)

➡

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/
Let’s start!
Q&A
Wakanda
@wakandasoft
http://wakanda.org

San Francisco, CA - Oct. 25th
@jseverywhere
http://jseverywhere.org

Client and Server JavaScript APIs Community Group
http://www.w3.org/community/jseverywhere/

More Related Content

PDF
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
PDF
HTML5 in automotive - web2day 2014
PPTX
html5?
PDF
What's new in Gradle 4.0
PDF
Building the Web with Gradle
PDF
Front-end for Java developers Devoxx France 2018
PDF
GraphQL Bangkok Meetup 6.0
PDF
Do It Yourself :: Web App - Web Api
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
HTML5 in automotive - web2day 2014
html5?
What's new in Gradle 4.0
Building the Web with Gradle
Front-end for Java developers Devoxx France 2018
GraphQL Bangkok Meetup 6.0
Do It Yourself :: Web App - Web Api

What's hot (20)

PDF
Javantura v4 - Android App Development in 2017 - Matej Vidaković
PPTX
Neo4J and Grails
PDF
Introduction to Modern DevOps Technologies
PPTX
Couch DB/PouchDB approach for hybrid mobile applications
PDF
Synchronization with CouchDB and PouchDB
PDF
Introduction to DevOps and the Practical Use Cases at Credit OK
PPTX
GraphQL-ify your APIs
PDF
Javantura v4 - Angular2 - Ionic2 - from birth to stable versions - Hrvoje Pek...
PPTX
Mean full stack development
PDF
Public PaaS Throwdown!
PDF
GDG Algiers DevFest 2013 Cool AndroidLibs
PDF
Overview of modern software ecosystem for big data analysis
PPTX
Become a Full Stack Web Developer (.NET) - Thisiswali
PDF
Ultimate guide on how to hire full stack web developer in 2022
PDF
Griffon for the Enterprise
PDF
From Rails legacy to DDD - Pivorak, Lviv
PPTX
GraphQL-ify your APIs - Devoxx UK 2021
PDF
Social Network
PDF
DevOps Toolchain v1.0
PDF
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
Javantura v4 - Android App Development in 2017 - Matej Vidaković
Neo4J and Grails
Introduction to Modern DevOps Technologies
Couch DB/PouchDB approach for hybrid mobile applications
Synchronization with CouchDB and PouchDB
Introduction to DevOps and the Practical Use Cases at Credit OK
GraphQL-ify your APIs
Javantura v4 - Angular2 - Ionic2 - from birth to stable versions - Hrvoje Pek...
Mean full stack development
Public PaaS Throwdown!
GDG Algiers DevFest 2013 Cool AndroidLibs
Overview of modern software ecosystem for big data analysis
Become a Full Stack Web Developer (.NET) - Thisiswali
Ultimate guide on how to hire full stack web developer in 2022
Griffon for the Enterprise
From Rails legacy to DDD - Pivorak, Lviv
GraphQL-ify your APIs - Devoxx UK 2021
Social Network
DevOps Toolchain v1.0
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
Ad

Viewers also liked (6)

PDF
Wakanda - apps.berlin.js - 2012-11-29
PDF
From Web App Model Design to Production with Wakanda
PDF
End to-end W3C - JS.everywhere(2012) Europe
PPTX
A complete guide to Node.js
PDF
Carnet de Route du Développeur - ENSIMAG 2012
PDF
NoSQL and JavaScript: a love story
Wakanda - apps.berlin.js - 2012-11-29
From Web App Model Design to Production with Wakanda
End to-end W3C - JS.everywhere(2012) Europe
A complete guide to Node.js
Carnet de Route du Développeur - ENSIMAG 2012
NoSQL and JavaScript: a love story
Ad

Similar to End-to-end HTML5 APIs - The Geek Gathering 2013 (20)

PDF
End-to-end W3C APIs - tpac 2012
PDF
End-to-end W3C APIs
ODP
Javascript Update May 2013
PPT
JavaScript State of the Union - Jan 2013
PPT
JavaScript State of the Union - Jan 2013
PDF
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
PDF
Kann JavaScript elegant sein?
PDF
Node.js and How JavaScript is Changing Server Programming
PDF
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
KEY
State of the art - server side JavaScript - web-5 2012
PPTX
After the LAMP, it's time to get MEAN
PDF
Developing realtime apps with Drupal and NodeJS
PPT
The future of server side JavaScript
PPTX
Non-Microsoft Technologies Which Microsoft is Embracing
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
PDF
GTUG JS will save us all
PDF
JavaScript Modules Done Right
PPTX
Frontender in-2016
PDF
Zepto and the rise of the JavaScript Micro-Frameworks
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs
Javascript Update May 2013
JavaScript State of the Union - Jan 2013
JavaScript State of the Union - Jan 2013
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
Kann JavaScript elegant sein?
Node.js and How JavaScript is Changing Server Programming
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
State of the art - server side JavaScript - web-5 2012
After the LAMP, it's time to get MEAN
Developing realtime apps with Drupal and NodeJS
The future of server side JavaScript
Non-Microsoft Technologies Which Microsoft is Embracing
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
GTUG JS will save us all
JavaScript Modules Done Right
Frontender in-2016
Zepto and the rise of the JavaScript Micro-Frameworks
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem

More from Alexandre Morgaut (19)

PDF
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
PDF
Past, present, and future of web assembly - Devfest Nantes 2017
PDF
angular-wakanda ngParis meetup 15 at 42
PDF
JS in SMS - JS.everywhere(2013)
PDF
Js in Automotive - JS.everywhere(2013)
PDF
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
PDF
NoSQL and JavaScript: a Love Story
PDF
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
PDF
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
PDF
Etat de l'art Server-Side JavaScript - JS Geneve
PDF
NantesJS premier meetup - Welcome
KEY
State of the art: server-side javaScript - NantesJS
PDF
State of the art: Server-Side JavaScript - dejeuner fulljs
PDF
Wakanda NoSQL Object Datastore - MoscowJS 2011
KEY
State of the art: Server-side JavaScript - MoscowJS
KEY
Benefits of an Open environment with Wakanda
PDF
State of the art: Server-Side JavaScript (ParisJS)
KEY
ParisJS meetup 8 - june 2011
PDF
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Past, present, and future of web assembly - Devfest Nantes 2017
angular-wakanda ngParis meetup 15 at 42
JS in SMS - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
NoSQL and JavaScript: a Love Story
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Etat de l'art Server-Side JavaScript - JS Geneve
NantesJS premier meetup - Welcome
State of the art: server-side javaScript - NantesJS
State of the art: Server-Side JavaScript - dejeuner fulljs
Wakanda NoSQL Object Datastore - MoscowJS 2011
State of the art: Server-side JavaScript - MoscowJS
Benefits of an Open environment with Wakanda
State of the art: Server-Side JavaScript (ParisJS)
ParisJS meetup 8 - june 2011
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Empathic Computing: Creating Shared Understanding
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Approach and Philosophy of On baking technology
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Advanced Soft Computing BINUS July 2025.pdf
PPTX
Cloud computing and distributed systems.
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
“AI and Expert System Decision Support & Business Intelligence Systems”
Empathic Computing: Creating Shared Understanding
Diabetes mellitus diagnosis method based random forest with bat algorithm
Network Security Unit 5.pdf for BCA BBA.
Approach and Philosophy of On baking technology
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
NewMind AI Monthly Chronicles - July 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Unlocking AI with Model Context Protocol (MCP)
The Rise and Fall of 3GPP – Time for a Sabbatical?
Big Data Technologies - Introduction.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The AUB Centre for AI in Media Proposal.docx
Reach Out and Touch Someone: Haptics and Empathic Computing
Spectral efficient network and resource selection model in 5G networks
Advanced Soft Computing BINUS July 2025.pdf
Cloud computing and distributed systems.
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

End-to-end HTML5 APIs - The Geek Gathering 2013