STATE OF THE ART            SERVER-SIDE JAVASCRIPTAlexandre MorgautWeb Architect & Community Manager - 4D / Wakanda       ...
HISTOIRE
NAISSANCE•   1995    Mocha > LiveScript > JavaScript•   1996    Microsoft JScript (IE4)    NetScape Enterprise Server 2   ...
MATURITE•   1998 - HTML/XML DOM, Sun/Mozilla Rhino•   1999 - ECMAScript 3, XMLHttpRequest, HTML 4•   2000 - ActionScript, ...
SSJS: LE COMEBACK•   2008    Aptana Jaxer    CouchDB    Acid Test 3•   2009    Narwhal & Jack    ServerJS > CommonJS    No...
SSJS: LE COMEBACK•   2008    Aptana Jaxer    CouchDB    Acid Test 3•   2009    Narwhal & Jack    ServerJS > CommonJS    No...
SSJS: LE COMEBACK•   2008    Aptana Jaxer    CouchDB    Acid Test 3•   2009    Narwhal & Jack    ServerJS > CommonJS    No...
SSJS: LE COMEBACK•   2008    Aptana Jaxer    CouchDB    Acid Test 3•   2009    Narwhal & Jack    ServerJS > CommonJS    No...
60+ EXISTING SOLUTIONShttp://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
ÉCOSYSTÈME
ÉDITEURS DE CODE• Visual   Studio• XCode• Eclipse• NetBeans• Wakanda     Studio• Cloud9
COMMUNAUTÉ• Nombreux    User Groups• Nombreuses    Conférences• Langage aussi utilisé par les autres développeurs
COMMUNAUTÉ• Nombreux    User Groups• Nombreuses    Conférences• Langage aussi utilisé par les autres développeurs
LIBRAIRIES• JavaScript           est le language le plus populaire sur GitHub• Nombreuses    librairies• Nombreux     fram...
ENGINES
C+                                                                                                                        ...
CLIENT-SIDESpiderMonkey             JavaScriptCore    Rhino                      V8 Tamarin    Trident / Chakra   Carakan ...
SERVER-SIDESpiderMonkey                 JavaScriptCore  Rhino                           V8               Trident / Chakra
ECMASCRIPT 5 & NEXT• ES5                       • ES.Next • Mode   strict             • Types Array • Object   freeze      ...
EVERYWHERE->   Widgets/Gadgets : Yahoo Widgets, Microsoft Gadgets, Google Desktop Gadgets, & Dashboards widgets;->   Windo...
BENCHMARKS and what they worth....
BROWSERS WAR II                                          (MAY 2009)http://www.maximumpc.com/article/features/browser_brouh...
PERSEVERE & JAVASCRIPTDB                                 (APRIL 2009) http://www.sitepen.com/blog/2009/04/20/javascriptdb-...
NODE VS THIN VS NARWHAL      (SEPTEMBER 2009)                                 300 concurrent clients                      ...
RINGOJS VS NODEJS   (SEPTEMBER 2010)   http://hns.github.com/2010/09/21/benchmark.html
SPIDERMONKEY                                                             1.5 is ~ Firefox 2.0 (and ES-3)                  ...
SUNSPIDER 0.9.1                              (AUGUST 2011)        7        8        6        5        4        3        2 ...
MAIN CONCEPTS
INTEGRATION-ORIENTED• Rhino  - Interaction with Java (APIs and objects)  - Helma, Persevere, Narwhal, RingoJS, Sun Phobos....
COMMON JAVASCRIPT•   Working Groups:    -   CommonJS    -   WHATWG    -   W3C    -   ECMA TC39•   L’ubiquité au delà d’ECM...
ASYNC. EVENT-BASED                           Node.js like• Browser   Event-Loop on the Server• An   Event Loop in one sing...
SINGLE & MULTI THREADING                                   One context per threadSINGLE                                   ...
DATABASE-DRIVEN•   Document Store    -   CouchDB, MongoDB•   Key/value Store    -   Riak•   Object Store    -   Wakanda•  ...
APIS - PACKAGES
COMMONJS     • Modules           • Packages                   • Promises•   System                •   Binary              ...
NODE             ASYNC APIS•   Buffer       •   Net                           •   Streams•   Events       •   OS          ...
W3C / HTML5 / ES.NEXT     & OTHER STANDARDS•   Console             •   Structured clones•   Blob, Blob URL*     •   Typed ...
PACKAGES & MODULES• github: CommonJS     modules in projects (Persevere, Narwhal, RingoJS, ...)• NPM: Node   Package Manag...
CREDITSThanks for their contributions to        Wesley Garland          Ondrej Zara
STATE OF THE ART     SERVER-SIDE JAVASCRIPT@amorgaut                 4d.com
Upcoming SlideShare
Loading in …5
×

State of the art: Server-Side JavaScript - dejeuner fulljs

2,059
-1

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,059
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

State of the art: Server-Side JavaScript - dejeuner fulljs

  1. 1. STATE OF THE ART SERVER-SIDE JAVASCRIPTAlexandre MorgautWeb Architect & Community Manager - 4D / Wakanda 2011-12-08
  2. 2. HISTOIRE
  3. 3. NAISSANCE• 1995 Mocha > LiveScript > JavaScript• 1996 Microsoft JScript (IE4) NetScape Enterprise Server 2 aka LiveWire/iPlanet• 1997 ECMAScript 1 “DHTML” Windows IIS 3
  4. 4. MATURITE• 1998 - HTML/XML DOM, Sun/Mozilla Rhino• 1999 - ECMAScript 3, XMLHttpRequest, HTML 4• 2000 - ActionScript, Helma Hop• 2001 - JSON, Apple JavaScript OSA• 2002 - JSLint, “Phoenix” > Firefox• 2003 - JavaScript Adobe Press, JScript .NET• 2004 - E4X , “Web 2.0”, JSDB• 2005 - Prototype.js, “Ajax”• 2006 - Firebug, jQuery, “Comet”, APE, “HTML5”• 2007 - SitePoint Persevere, Rhino on Rails
  5. 5. SSJS: LE COMEBACK• 2008 Aptana Jaxer CouchDB Acid Test 3• 2009 Narwhal & Jack ServerJS > CommonJS Node.js v8cgi, GPSEE ECMAScript 5• 2010 Helma NG > RingoJS Sun Phobos• 2011 Wakanda CoffeeScript ECMAScript 5.1
  6. 6. SSJS: LE COMEBACK• 2008 Aptana Jaxer CouchDB Acid Test 3• 2009 Narwhal & Jack ServerJS > CommonJS Node.js v8cgi, GPSEE ECMAScript 5• 2010 Helma NG > RingoJS Sun Phobos• 2011 Wakanda CoffeeScript ECMAScript 5.1
  7. 7. SSJS: LE COMEBACK• 2008 Aptana Jaxer CouchDB Acid Test 3• 2009 Narwhal & Jack ServerJS > CommonJS Node.js v8cgi, GPSEE ECMAScript 5• 2010 Helma NG > RingoJS Sun Phobos• 2011 Wakanda CoffeeScript ECMAScript 5.1
  8. 8. SSJS: LE COMEBACK• 2008 Aptana Jaxer CouchDB Acid Test 3• 2009 Narwhal & Jack ServerJS > CommonJS Node.js v8cgi, GPSEE ECMAScript 5• 2010 Helma NG > RingoJS Sun Phobos• 2011 Wakanda CoffeeScript ECMAScript 5.1
  9. 9. 60+ EXISTING SOLUTIONShttp://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
  10. 10. ÉCOSYSTÈME
  11. 11. ÉDITEURS DE CODE• Visual Studio• XCode• Eclipse• NetBeans• Wakanda Studio• Cloud9
  12. 12. COMMUNAUTÉ• Nombreux User Groups• Nombreuses Conférences• Langage aussi utilisé par les autres développeurs
  13. 13. COMMUNAUTÉ• Nombreux User Groups• Nombreuses Conférences• Langage aussi utilisé par les autres développeurs
  14. 14. LIBRAIRIES• JavaScript est le language le plus populaire sur GitHub• Nombreuses librairies• Nombreux frameworkhttps://github.com/languages/JavaScripthttp://javascriptlibraries.com/
  15. 15. ENGINES
  16. 16. C+ + C SpiderMonkey webkit JavaScriptCore: JSC 3 JIT Compilers: SquirrelFish Extreme: SFX aka NitroTraceMonkey, JägerMonkey, & IonMonkey (JIT Compiler inside) Jav C+ a + Rhino V8 Interpreted or Compiled execution JIT Compiler: CrankShaft C+ + Trident: MSHTML Chakra -> Classic JScript, Managed JScript, & JScript.NET C+ C+ + + Tamarin Carakan JIT Compiler: NanoJIT Previously: Linear A, Linear B, Futhark -> ActionScript / “ECMAScript 4”
  17. 17. CLIENT-SIDESpiderMonkey JavaScriptCore Rhino V8 Tamarin Trident / Chakra Carakan / Futhark
  18. 18. SERVER-SIDESpiderMonkey JavaScriptCore Rhino V8 Trident / Chakra
  19. 19. ECMASCRIPT 5 & NEXT• ES5 • ES.Next • Mode strict • Types Array • Object freeze • Modules • Read only properties • Destructuring • Getter / setter • String templates
  20. 20. EVERYWHERE-> Widgets/Gadgets : Yahoo Widgets, Microsoft Gadgets, Google Desktop Gadgets, & Dashboards widgets;-> Windows: WSH (Windows Script Host), JScript.Net, Managed JScript, and Windows 8 Metro Applications-> PAC files for automatique proxy sélection;-> Acrobat for interactive PDF forms;-> XUL applications and Jetpack (as Firefox addons);-> Open Office macros;-> QtScript for QT;-> Apple Cocoa (JSCocoa);-> JetC (JavaScript Embedded Toolkit in C) allow to provide embedded application with JavaScript;-> Pronto Philips products (programmable touchscreen remote controls) use ProntoScript based on JS 1.6;-> but also : PHP (J2PA), Apache (mod_js), Ruby (Johnson), Python, Perl (JE), …
  21. 21. BENCHMARKS and what they worth....
  22. 22. BROWSERS WAR II (MAY 2009)http://www.maximumpc.com/article/features/browser_brouhaha_your_maximum_guide_browsers_today_and_tomorrow?page=0,6
  23. 23. PERSEVERE & JAVASCRIPTDB (APRIL 2009) http://www.sitepen.com/blog/2009/04/20/javascriptdb-perseveres-new-high-performance-storage-engine/
  24. 24. NODE VS THIN VS NARWHAL (SEPTEMBER 2009) 300 concurrent clients completed requests: thin 36045 node 35668 narwhal 2921 > summary(node300$ttime) Min. 1st Qu. Median Mean 3rd Qu. Max. 12.0 66.0 112.0 239.4 157.0 12200.0 > summary(thin300$ttime) Min. 1st Qu. Median Mean 3rd Qu. Max. 71.0 84.0 87.0 208.7 107.0 23950.0 > summary(narwhal300$ttime) Min. 1st Qu. Median Mean 3rd Qu. Max. 928 2837 2935 2921 3018 8759 http://four.livejournal.com/1019177.html
  25. 25. RINGOJS VS NODEJS (SEPTEMBER 2010) http://hns.github.com/2010/09/21/benchmark.html
  26. 26. SPIDERMONKEY 1.5 is ~ Firefox 2.0 (and ES-3) 1.7 is ~ Firefox 3.0 1.8 is ~ Firefox 3.6 1.8.5 + JITs is ~ Firefox 4http://www.page.ca/~wes/SpiderMonkey/Perf/sunspider_history.png
  27. 27. SUNSPIDER 0.9.1 (AUGUST 2011) 7 8 6 5 4 3 2 1http://expansive-derivation.ossreleasefeed.com/2011/08/javascript-performance-test-results-with-sunspider/
  28. 28. MAIN CONCEPTS
  29. 29. INTEGRATION-ORIENTED• Rhino - Interaction with Java (APIs and objects) - Helma, Persevere, Narwhal, RingoJS, Sun Phobos...• JScript .Net - Interaction with MS .NET (APIs and objects) - IronJS, Node.NET
  30. 30. COMMON JAVASCRIPT• Working Groups: - CommonJS - WHATWG - W3C - ECMA TC39• L’ubiquité au delà d’ECMAScript• HTML5 est aussi connu sous le nom de : “Web Applications 1.0”• Asynchronous & Synchronous APIs
  31. 31. ASYNC. EVENT-BASED Node.js like• Browser Event-Loop on the Server• An Event Loop in one single thread• Cooperative («one at a time») with async. callbacks• Node.js (V8), SpiderNode, RhiNodeII, Node.NET
  32. 32. SINGLE & MULTI THREADING One context per threadSINGLE MULTI• Low memory usage • Vertical scalability (multi-core)• Potentially handle lot of requests • Thread-safety for concurrent access• Cooperative • Preemptive: Parallel code execution• Shared context • Allow Synchronous APIs• Use mostly one core • Uses easily all available cores Notes: - an event loop can generate some other threads - multi-thread architectures can run event loops in some of their threads
  33. 33. DATABASE-DRIVEN• Document Store - CouchDB, MongoDB• Key/value Store - Riak• Object Store - Wakanda• Push Store - APE
  34. 34. APIS - PACKAGES
  35. 35. COMMONJS • Modules • Packages • Promises• System • Binary • JSGI• Unit-Testing • File • Stream http://wiki.commonjs.org/wiki/CommonJS
  36. 36. NODE ASYNC APIS• Buffer • Net • Streams• Events • OS • Timers• File • Process • ... http://nodejs.org/docs/v0.5.5/api/
  37. 37. W3C / HTML5 / ES.NEXT & OTHER STANDARDS• Console • Structured clones• Blob, Blob URL* • Typed Arrays*• DataView* • Web Sockets• File / FileSystem • Web Storage, Indexed DB• Modules* • Web Workers• Progress Events • XHR 2
  38. 38. PACKAGES & MODULES• github: CommonJS modules in projects (Persevere, Narwhal, RingoJS, ...)• NPM: Node Package Manager (thousands packages)• CPM: CommonJS Package Manager (new)• PINF: Universal module loader
  39. 39. CREDITSThanks for their contributions to Wesley Garland Ondrej Zara
  40. 40. STATE OF THE ART SERVER-SIDE JAVASCRIPT@amorgaut 4d.com

×