This document discusses end-to-end web standards and server-side JavaScript. It summarizes the World Wide Web Consortium (W3C) and its role in developing web standards. It also discusses how many W3C APIs can be used on both the client-side and server-side through JavaScript implementations like Node.js, RingoJS, and Wakanda. CommonJS standards allow modules and packages to be shared between client-side and server-side JavaScript.
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
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?
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