Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,531 views

Published on

Published in: Technology
  • Be the first to comment

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

×