Your SlideShare is downloading. ×
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,989

Published on

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

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. STATE OF THE ART SERVER-SIDE JAVASCRIPTAlexandre MorgautWeb Architect & Community Manager - 4D / Wakanda 2011-12-08
  • 2. HISTOIRE
  • 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. 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. 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. 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. 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. 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. 60+ EXISTING SOLUTIONShttp://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
  • 10. ÉCOSYSTÈME
  • 11. ÉDITEURS DE CODE• Visual Studio• XCode• Eclipse• NetBeans• Wakanda Studio• Cloud9
  • 12. COMMUNAUTÉ• Nombreux User Groups• Nombreuses Conférences• Langage aussi utilisé par les autres développeurs
  • 13. COMMUNAUTÉ• Nombreux User Groups• Nombreuses Conférences• Langage aussi utilisé par les autres développeurs
  • 14. LIBRAIRIES• JavaScript est le language le plus populaire sur GitHub• Nombreuses librairies• Nombreux frameworkhttps://github.com/languages/JavaScripthttp://javascriptlibraries.com/
  • 15. ENGINES
  • 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. CLIENT-SIDESpiderMonkey JavaScriptCore Rhino V8 Tamarin Trident / Chakra Carakan / Futhark
  • 18. SERVER-SIDESpiderMonkey JavaScriptCore Rhino V8 Trident / Chakra
  • 19. ECMASCRIPT 5 & NEXT• ES5 • ES.Next • Mode strict • Types Array • Object freeze • Modules • Read only properties • Destructuring • Getter / setter • String templates
  • 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. BENCHMARKS and what they worth....
  • 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. PERSEVERE & JAVASCRIPTDB (APRIL 2009) http://www.sitepen.com/blog/2009/04/20/javascriptdb-perseveres-new-high-performance-storage-engine/
  • 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. RINGOJS VS NODEJS (SEPTEMBER 2010) http://hns.github.com/2010/09/21/benchmark.html
  • 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. 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. MAIN CONCEPTS
  • 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. 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. 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. 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. DATABASE-DRIVEN• Document Store - CouchDB, MongoDB• Key/value Store - Riak• Object Store - Wakanda• Push Store - APE
  • 34. APIS - PACKAGES
  • 35. COMMONJS • Modules • Packages • Promises• System • Binary • JSGI• Unit-Testing • File • Stream http://wiki.commonjs.org/wiki/CommonJS
  • 36. NODE ASYNC APIS• Buffer • Net • Streams• Events • OS • Timers• File • Process • ... http://nodejs.org/docs/v0.5.5/api/
  • 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. 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. CREDITSThanks for their contributions to Wesley Garland Ondrej Zara
  • 40. STATE OF THE ART SERVER-SIDE JAVASCRIPT@amorgaut 4d.com

×