End-to-end     W3C APIs      By Alexandre MorgautJS.everywhere(2012) Silicon Valley
Presentation• W3C AC member• Web Architect• JS Expert• REST Lover• NoSQL Fanboy• W3C “jseverywhere“  community group     @...
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...
REST• Representational State Transfer • Client-Server • Stateless, Cache, Uniform Interface • Layered System • Code on Dem...
Web Standards
W3C• Created at the MIT in 1994• Led by Tim Berners-Lee and Dr. Jeffrey Jaffe• Joint agreement among three "Host Instituti...
IANA• Internet Assigned Numbers Authority• created by Jon Postel and Joyce K. Reynolds• department of ICANN Names and Numb...
IETF• Internet Engineering Task Force• organized activity of the Internet Society (ISOC)• cooperates with W3C & ISO/IEC• m...
ECMA•   European Computer Manufacturers Association•   Standards    •   CD-ROM, ECMAScript, C#, Office Open XML File Forma...
WaSP•   Web Standards Project•   founded in 1998 by Georges Olsen, Glenn Davis, & Jeffrey Zeldman•   convinced in 2001    ...
WHATWG•   Web Hypertext Application Technology Working Group•   founded in 2004 by individuals from Apple, the Mozilla & O...
CommonJS•   created in 2009 by Kevin Dangoor as ServerJS on Mozilla Wiki    •   standards for JavaScript on the server    ...
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• W...
Async & Sync• XMLHttpRequest(method, url, async)• FileReaderSync()• requestFileSystemSync()• openDatabaseSync()• indexedDB...
Web Workers• Dedicated or Shared• No Window, No Document• WorkerGlobal, WorkerUtils• WorkerNavigator, WorkerLocation• post...
Concept• Server JS contexts == Workers • multi-threaded -> Dedicated Workers • single threaded EventLoop -> Shared• Server...
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-fastx...
Wakanda• W3C • XMLHttpRequest, WindowTimer, • Web Storage, Web Worker, • File, FileSystem, Blob, ...• CommonJS • Modules, ...
Summary•   ECMAScript is already everywhere•   Modules: CommonJS already standard, AMD, ECMAScript 6•   Many W3C APIs alre...
Client and Server JavaScript APIs     W3C Community Grouphttp://www.w3.org/community/jseverywhere/
End-to-end W3C APIs
Upcoming SlideShare
Loading in …5
×

End-to-end W3C APIs

1,557 views
1,450 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,557
On SlideShare
0
From Embeds
0
Number of Embeds
99
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

End-to-end W3C APIs

  1. 1. End-to-end W3C APIs By Alexandre MorgautJS.everywhere(2012) Silicon Valley
  2. 2. Presentation• W3C AC member• Web Architect• JS Expert• REST Lover• NoSQL Fanboy• W3C “jseverywhere“ community group @amorgaut
  3. 3. Agenda• The World Wide Web• The Standards• Server-Side JavaScript• Web Applications• Now & Tomorrow
  4. 4. 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
  5. 5. REST• Representational State Transfer • Client-Server • Stateless, Cache, Uniform Interface • Layered System • Code on Demand: JavaScript• defined in 2000 by Roy Thomas Fielding
  6. 6. Web Standards
  7. 7. 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...
  8. 8. 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...
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. Server-Side JavaScript
  15. 15. Engines• Mozilla SpiderMonkey• Mozilla Rhino• Webkit JavaScriptCore• Google V8• Microsoft Chakra• Opera Carakan
  16. 16. Standards• ECMAScript• CommonJS
  17. 17. Servers• Microsoft IIS• Persevere• Jaxer• node.js• Wakanda• RingoJS• SilkJS
  18. 18. NoSQL Databases• CouchDB• MongoDB• Riak• WakandaDB• ArangoDB• OrientDB
  19. 19. Web Application “1.0”
  20. 20. 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
  21. 21. Async & Sync• XMLHttpRequest(method, url, async)• FileReaderSync()• requestFileSystemSync()• openDatabaseSync()• indexedDBSync.open()• localStorage.getItem()
  22. 22. Web Workers• Dedicated or Shared• No Window, No Document• WorkerGlobal, WorkerUtils• WorkerNavigator, WorkerLocation• postMessage(), onmessage(), onerror()• importScripts()
  23. 23. Concept• Server JS contexts == Workers • multi-threaded -> Dedicated Workers • single threaded EventLoop -> Shared• Server JS contexts === Remote JS Workers
  24. 24. Now & Tomorrow
  25. 25. RingoJS• W3C • Web Worker• CommonJS • Modules • System, fs, binary, IO, Unit Test• Other: console
  26. 26. SilkJS• W3C • XMLHttpRequest• CommonJS • Modules
  27. 27. node.js• W3C via modules • XMLHttpRequest (node-xmlhttprequest) • Web Sockets (node-websocket-client) • DOM (node-o3-fastxml), IndexedDB (perstore)• CommonJS • Modules, Packages• Other: console
  28. 28. Wakanda• W3C • XMLHttpRequest, WindowTimer, • Web Storage, Web Worker, • File, FileSystem, Blob, ...• CommonJS • Modules, System, Unit Test• Other: console
  29. 29. 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
  30. 30. Client and Server JavaScript APIs W3C Community Grouphttp://www.w3.org/community/jseverywhere/

×