SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
End-to-end
     W3C APIs
      By Alexandre Morgaut
JS.everywhere(2012) Silicon Valley
Presentation
• 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 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
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
Async & Sync
• XMLHttpRequest(method, url, async)
• FileReaderSync()
• requestFileSystemSync()
• openDatabaseSync()
• indexedDBSync.open()
• localStorage.getItem()
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
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/

Mais conteúdo relacionado

Mais procurados

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
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumNgoc Dao
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web frameworkNgoc Dao
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other usefulFrank van der Linden
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Christian Posta
 
Modular & Event driven UI Architecture
Modular & Event driven UI ArchitectureModular & Event driven UI Architecture
Modular & Event driven UI ArchitectureVytautas Butkus
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.jsKasey McCurdy
 
IMPACT Interoperability Framework - Clemens Neudecker
IMPACT Interoperability Framework - Clemens NeudeckerIMPACT Interoperability Framework - Clemens Neudecker
IMPACT Interoperability Framework - Clemens NeudeckerIMPACT Centre of Competence
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on RailsAvi Kedar
 
Microservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterMicroservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterC4Media
 
Play concurrency
Play concurrencyPlay concurrency
Play concurrencyJustin Long
 
No Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with BootiqueNo Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with BootiqueAndrus Adamchik
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Microsoft Iceland
 

Mais procurados (20)

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!"
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and Xitrum
 
RESTful Services
RESTful ServicesRESTful Services
RESTful Services
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
 
Be faster then rabbits
Be faster then rabbitsBe faster then rabbits
Be faster then rabbits
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web framework
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other useful
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2
 
Modular & Event driven UI Architecture
Modular & Event driven UI ArchitectureModular & Event driven UI Architecture
Modular & Event driven UI Architecture
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
Art of nodejs
Art of nodejsArt of nodejs
Art of nodejs
 
IMPACT Interoperability Framework - Clemens Neudecker
IMPACT Interoperability Framework - Clemens NeudeckerIMPACT Interoperability Framework - Clemens Neudecker
IMPACT Interoperability Framework - Clemens Neudecker
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Microservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterMicroservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell Monster
 
Play concurrency
Play concurrencyPlay concurrency
Play concurrency
 
Web Ninja
Web NinjaWeb Ninja
Web Ninja
 
No Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with BootiqueNo Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with Bootique
 
Meanstack overview
Meanstack overviewMeanstack overview
Meanstack overview
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 

Destaque

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
 
How to see the numbers in dt
How to see the numbers in dtHow to see the numbers in dt
How to see the numbers in dtShariq Khan
 
Web Introduction
Web IntroductionWeb Introduction
Web Introductionasim78
 
ACM 2016v7.Presentation English
ACM 2016v7.Presentation EnglishACM 2016v7.Presentation English
ACM 2016v7.Presentation Englishkeating349
 
Concert Sponsorship
Concert SponsorshipConcert Sponsorship
Concert Sponsorshipmrogers1
 
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno JobNodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno JobNuno Job
 
L’agilité pour une organisation d’entreprise saine et efficiente
L’agilité pour une organisation d’entreprise saine et efficienteL’agilité pour une organisation d’entreprise saine et efficiente
L’agilité pour une organisation d’entreprise saine et efficienteJonas Vonlanthen
 
Devnest 111115
Devnest 111115Devnest 111115
Devnest 111115Angus Fox
 
Simplicity: UXLx version
Simplicity: UXLx versionSimplicity: UXLx version
Simplicity: UXLx versioncxpartners
 
Startup Passion Smack-Down SXSW 2012
Startup Passion Smack-Down SXSW 2012Startup Passion Smack-Down SXSW 2012
Startup Passion Smack-Down SXSW 2012John Bradberry
 
Using Sakai with Multiple Locales
Using Sakai with Multiple LocalesUsing Sakai with Multiple Locales
Using Sakai with Multiple Localesballsy333
 
Marketing Your Tech Talent - OSCON 2014
Marketing Your Tech Talent - OSCON 2014Marketing Your Tech Talent - OSCON 2014
Marketing Your Tech Talent - OSCON 2014deirdrestraughan
 
I Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROII Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROIemfluence
 
Título de experto en programación con tecnologías web
Título de experto en programación con tecnologías webTítulo de experto en programación con tecnologías web
Título de experto en programación con tecnologías webAlicantePHP
 
The Web is Open. Let's Keep It That Way
The Web is Open. Let's Keep It That WayThe Web is Open. Let's Keep It That Way
The Web is Open. Let's Keep It That WayMarek Stępień
 
With great power comes great (development) responsibility
With great power comes great (development) responsibilityWith great power comes great (development) responsibility
With great power comes great (development) responsibilitySally Lait
 

Destaque (20)

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...
 
How to see the numbers in dt
How to see the numbers in dtHow to see the numbers in dt
How to see the numbers in dt
 
Web Introduction
Web IntroductionWeb Introduction
Web Introduction
 
ACM 2016v7.Presentation English
ACM 2016v7.Presentation EnglishACM 2016v7.Presentation English
ACM 2016v7.Presentation English
 
Concert Sponsorship
Concert SponsorshipConcert Sponsorship
Concert Sponsorship
 
Revenge of the ORMs
Revenge of the ORMsRevenge of the ORMs
Revenge of the ORMs
 
Real World F# - SDD 2015
Real World F# -  SDD 2015Real World F# -  SDD 2015
Real World F# - SDD 2015
 
[OTA15] Back to binary !
[OTA15] Back to binary ![OTA15] Back to binary !
[OTA15] Back to binary !
 
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno JobNodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
 
L’agilité pour une organisation d’entreprise saine et efficiente
L’agilité pour une organisation d’entreprise saine et efficienteL’agilité pour une organisation d’entreprise saine et efficiente
L’agilité pour une organisation d’entreprise saine et efficiente
 
Devnest 111115
Devnest 111115Devnest 111115
Devnest 111115
 
Simplicity: UXLx version
Simplicity: UXLx versionSimplicity: UXLx version
Simplicity: UXLx version
 
Startup Passion Smack-Down SXSW 2012
Startup Passion Smack-Down SXSW 2012Startup Passion Smack-Down SXSW 2012
Startup Passion Smack-Down SXSW 2012
 
Using Sakai with Multiple Locales
Using Sakai with Multiple LocalesUsing Sakai with Multiple Locales
Using Sakai with Multiple Locales
 
Marketing Your Tech Talent - OSCON 2014
Marketing Your Tech Talent - OSCON 2014Marketing Your Tech Talent - OSCON 2014
Marketing Your Tech Talent - OSCON 2014
 
I Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROII Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROI
 
Título de experto en programación con tecnologías web
Título de experto en programación con tecnologías webTítulo de experto en programación con tecnologías web
Título de experto en programación con tecnologías web
 
jclouds BoF
jclouds BoFjclouds BoF
jclouds BoF
 
The Web is Open. Let's Keep It That Way
The Web is Open. Let's Keep It That WayThe Web is Open. Let's Keep It That Way
The Web is Open. Let's Keep It That Way
 
With great power comes great (development) responsibility
With great power comes great (development) responsibilityWith great power comes great (development) responsibility
With great power comes great (development) responsibility
 

Semelhante a End-to-end W3C APIs presentation

End to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeEnd to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeAlexandre Morgaut
 
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
 
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
 
Offience's Node showcase
Offience's Node showcaseOffience's Node showcase
Offience's Node showcasecloud4le
 
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
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferaydaveayan
 
Full Stack Developer Course | Infinite Graphix Technologies
Full Stack Developer Course | Infinite Graphix TechnologiesFull Stack Developer Course | Infinite Graphix Technologies
Full Stack Developer Course | Infinite Graphix TechnologiesInfinite Graphix Technologies
 
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
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JSbrendankowitz
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...Jon Peck
 
Edy Dawson Notes on SF HTML5 Dev Conf
Edy Dawson Notes on SF HTML5 Dev ConfEdy Dawson Notes on SF HTML5 Dev Conf
Edy Dawson Notes on SF HTML5 Dev ConfEdy Dawson
 
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
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Dockervisual28
 
Women Who Code, Ground Floor
Women Who Code, Ground FloorWomen Who Code, Ground Floor
Women Who Code, Ground FloorKatie Weiss
 
Micro Services in .NET Core and Docker
Micro Services in .NET Core and DockerMicro Services in .NET Core and Docker
Micro Services in .NET Core and Dockercjmyers
 

Semelhante a End-to-end W3C APIs presentation (20)

End to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeEnd to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) Europe
 
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
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 
Node.js
Node.jsNode.js
Node.js
 
Offience's Node showcase
Offience's Node showcaseOffience's Node showcase
Offience's Node showcase
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Express yourself
Express yourselfExpress yourself
Express yourself
 
Node
NodeNode
Node
 
Full Stack Developer Course | Infinite Graphix Technologies
Full Stack Developer Course | Infinite Graphix TechnologiesFull Stack Developer Course | Infinite Graphix Technologies
Full Stack Developer Course | Infinite Graphix Technologies
 
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
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JS
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
 
Edy Dawson Notes on SF HTML5 Dev Conf
Edy Dawson Notes on SF HTML5 Dev ConfEdy Dawson Notes on SF HTML5 Dev Conf
Edy Dawson Notes on SF HTML5 Dev Conf
 
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
 
Google web toolkit gwt training
Google web toolkit gwt trainingGoogle web toolkit gwt training
Google web toolkit gwt training
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Women Who Code, Ground Floor
Women Who Code, Ground FloorWomen Who Code, Ground Floor
Women Who Code, Ground Floor
 
Micro Services in .NET Core and Docker
Micro Services in .NET Core and DockerMicro Services in .NET Core and Docker
Micro Services in .NET Core and Docker
 

Mais de 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
 
angular-wakanda ngParis meetup 15 at 42
angular-wakanda ngParis meetup 15 at 42angular-wakanda ngParis meetup 15 at 42
angular-wakanda ngParis meetup 15 at 42Alexandre 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
 
From Web App Model Design to Production with Wakanda
From Web App Model Design to Production with WakandaFrom Web App Model Design to Production with Wakanda
From Web App Model Design to Production with WakandaAlexandre 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 - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Alexandre 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
 

Mais de 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
 
angular-wakanda ngParis meetup 15 at 42
angular-wakanda ngParis meetup 15 at 42angular-wakanda ngParis meetup 15 at 42
angular-wakanda ngParis meetup 15 at 42
 
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)
 
From Web App Model Design to Production with Wakanda
From Web App Model Design to Production with WakandaFrom Web App Model Design to Production with Wakanda
From Web App Model Design to Production with Wakanda
 
NoSQL and JavaScript: a love story
NoSQL and JavaScript: a love storyNoSQL and JavaScript: a love story
NoSQL and JavaScript: a love story
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
 
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
 

End-to-end W3C APIs presentation

  • 1. End-to-end W3C APIs By Alexandre Morgaut JS.everywhere(2012) Silicon Valley
  • 2. Presentation • 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
  • 4.
  • 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
  • 21. 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
  • 22. Async & Sync • XMLHttpRequest(method, url, async) • FileReaderSync() • requestFileSystemSync() • openDatabaseSync() • indexedDBSync.open() • localStorage.getItem()
  • 23. Web Workers • Dedicated or Shared • No Window, No Document • WorkerGlobal, WorkerUtils • WorkerNavigator, WorkerLocation • postMessage(), onmessage(), onerror() • importScripts()
  • 24. Concept • Server JS contexts == Workers • multi-threaded -> Dedicated Workers • single threaded EventLoop -> Shared • Server JS contexts === Remote JS Workers
  • 26. RingoJS • W3C • Web Worker • CommonJS • Modules • System, fs, binary, IO, Unit Test • Other: console
  • 27. SilkJS • W3C • XMLHttpRequest • CommonJS • Modules
  • 28. node.js • W3C via modules • XMLHttpRequest (node-xmlhttprequest) • Web Sockets (node-websocket-client) • DOM (node-o3-fastxml), IndexedDB (perstore) • CommonJS • Modules, Packages • Other: console
  • 29. Wakanda • W3C • XMLHttpRequest, WindowTimer, • Web Storage, Web Worker, • File, FileSystem, Blob, ... • CommonJS • Modules, System, Unit Test • Other: console
  • 30. 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
  • 31. Client and Server JavaScript APIs W3C Community Group http://www.w3.org/community/jseverywhere/