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 @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
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 Grouphttp://www.w3.org/community/jseverywhere/
Let LinkedIn power your SlideShare experience
+
Let LinkedIn power your SlideShare experience
Customize SlideShare content based on your interests
We will import your LinkedIn profile and you will be visible on SlideShare.
Keep up to date when your LinkedIn contacts post on SlideShare