SlideShare a Scribd company logo
STATE OF THE ART
     SERVER-SIDE JAVASCRIPT


@amorgaut                  4d.com


              2011-09-24
HISTORY
BIRTH
•   1995
    LiveScript/JavaScript

•   1996
    Microsoft JScript (IE4)
    NetScape Enterprise Server 2
    aka LiveWire/iPlanet

•   1997
    ECMAScript 1
    “DHTML”
    Windows IIS 3
MATURITY
•   1998 - DOM, Mozilla Rhino
•   1999 - ES3, XMLHttpRequest, HTML 4
•   2000 - ActionScript, Helma Hop
•   2001 - JSON, Apple JavaScript OSA
•   2002 - JSLint
•   2003 - JavaScript Adobe Press, JScript .NET
•   2004 - E4X , “Web 2.0”
•   2005 - Prototype, “Ajax”
•   2006 - Firebug, jQuery, “Comet”, APE, “HTML5”
•   2007 - SitePoint Persevere, Rhino on Rails
SSJS: THE COMEBACK
•   2008
    Aptana Jaxer
    CouchDB
    Acid Test 3

•   2009
    Narwhal & Jack
    GPSEE
    ServerJS -> CommonJS
    Node.js
    ECMAScript 5

•   2010
    Helma NG -> RingoJS
    Sun Phobos

•   2011
    Wakanda
SSJS: THE COMEBACK
•   2008
    Aptana Jaxer
    CouchDB
    Acid Test 3

•   2009
    Narwhal & Jack
    GPSEE
    ServerJS -> CommonJS
    Node.js
    ECMAScript 5

•   2010
    Helma NG -> RingoJS
    Sun Phobos

•   2011
    Wakanda
SSJS: THE COMEBACK
•   2008
    Aptana Jaxer
    CouchDB
    Acid Test 3

•   2009
    Narwhal & Jack
    GPSEE
    ServerJS -> CommonJS
    Node.js
    ECMAScript 5

•   2010
    Helma NG -> RingoJS
    Sun Phobos

•   2011
    Wakanda
SSJS: THE COMEBACK
•   2008
    Aptana Jaxer
    CouchDB
    Acid Test 3

•   2009
    Narwhal & Jack
    GPSEE
    ServerJS -> CommonJS
    Node.js
    ECMAScript 5

•   2010
    Helma NG -> RingoJS
    Sun Phobos

•   2011
    Wakanda
60+ EXISTING SOLUTIONS




http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
ENGINES
C                                                   C+
                                                                               +
SpiderMonkey                   webkit JavaScriptCore: JSC
   TraceMonkey (JIT)                     SquirrelFish Extreme: SFX (JIT)
   JägerMonkey (JIT)
    IonMonkey (JIT)
                                                    Nitro


                                                            C+
                  Jav                                         +
                     a
     Rhino                                           V8
                                   C+
                                     +
                             Trident
                              Chakra
                                                                       C+
                                                                         +
               C+
                 +                                        Carakan
   Tamarin                                                Futhark
CLIENT-SIDE

SpiderMonkey           JavaScriptCore



   Rhino                      V8



 Tamarin   Trident / Chakra   Carakan / Futhark
SERVER-SIDE


SpiderMonkey                                  JavaScriptCore
          Narwhal
                                                   Narwhal
    CouchDB, MongoDB
                                                   Wakanda
   APE, GPSEE, SpiderNode
             ...


                                    V8
                                    Narwhal
                                    Akshell
                                    Node.js

        Rhino                                 Trident / Chakra
           Narwhal                                   IronJS
   Helma / RingoJS, AppJet                         Node.NET
 Persevere, Phobos, RhiNodeII
              ...
BENCHMARKS



 and what they worth....
BROWSERS WAR II
                                           (MAY 2009)




http://www.maximumpc.com/article/features/browser_brouhaha_your_maximum_guide_browsers_today_and_tomorrow?page=0,6
PERSEVERE & JAVASCRIPTDB
                                  (APRIL 2009)




 http://www.sitepen.com/blog/2009/04/20/javascriptdb-perseveres-new-high-performance-storage-engine/
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
RINGOJS VS NODEJS
       (SEPTEMBER 2010)




 http://hns.github.com/2010/09/21/benchmark.html
SUNSPIDER 0.9.1
                               (AUGUST 2011)


         7
         8
         6
         5
         4
         3
         2
         1

http://expansive-derivation.ossreleasefeed.com/2011/08/javascript-performance-test-results-with-sunspider/
MAIN CONCEPTS
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
COMMON JAVASCRIPT
•   Ubiquity not only for ECMAScript

•   Server missing APIs

•   Web Applications 1.0

•   Asynchronous & Synchronous

•   Working Groups:
    -   CommonJS
    -   WHATWG
    -   W3C
    -   ECMA TC39
ASYNC. EVENT-BASED

• 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
SINGLE vs MULTI THREADING
        One context per thread
SINGLE vs MULTI THREADING
                               One context per thread


SINGLE                                     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
DATABASE-DRIVEN
• Document         Store
 -   CouchDB, MongoDB

• Object    Store
 -   Wakanda

• Push     Store
 -   APE
APIS
COMMONJS
•   Modules

•   Packages                           •   Binary

•   Promises                           •   File

•   System                             •   JSGI

•   Unit-Testing                       •   Stream




                   http://wiki.commonjs.org/wiki/CommonJS
NODE ASYNC APIS
•   Buffer                     •   Process

•   Events                     •   Streams

•   File                       •   Timers

•   Net                        •   ...

•   OS




             http://nodejs.org/docs/v0.5.5/api/
W3C / HTML5
       & OTHER STANDARDS
•   Console             •   Structured clones

•   Blob, Blob URL*     •   Typed Arrays*

•   DataView*           •   Web Sockets

•   File / FileSystem   •   Web Storage

•   Modules*            •   Web Workers

•   Progress Events     •   XHR 2
PACKAGES & MODULES
• github: CommonJS        modules in forks (Persevere, Narwhal, RingoJS, ...)

• NPM: Node   Package Manager (3600+ packages)

• CPM: CommonJS        Package Manager (new)

• PINF: Universal   module loader


                    http://wiki.commonjs.org/wiki/CommonJS
STATE OF THE ART
     SERVER-SIDE JAVASCRIPT
                     The End


                See us at Wakanday aka
        JS.everywhere(Boston, October, 15)




@amorgaut                                   4d.com
@thibarg                               Wakanda.org
@wakanday                              Wakanday.org

More Related Content

What's hot (20)

PPTX
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Udaya Kiran
 
PDF
Apache Tomcat + Java EE = Apache TomEE
Jacek Laskowski
 
PPTX
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Udaya Kiran
 
PPT
Hacking Tomcat
guestc27cd9
 
PPT
Tomcat Server
Anirban Majumdar
 
PPTX
Apache Performance Tuning: Scaling Out
Sander Temme
 
PDF
Tomcatx performance-tuning
Vladimir Khokhryakov
 
PDF
The details of CI/CD environment for Ruby
Hiroshi SHIBATA
 
PDF
J Ruby Whirlwind Tour
oscon2007
 
PDF
Composer Helpdesk
Sven Rautenberg
 
PPTX
Composer | PHP Dependency Manager
Ujjwal Ojha
 
PPTX
Apache tomcat
Shashwat Shriparv
 
PDF
Dissecting the rabbit: RabbitMQ Internal Architecture
Alvaro Videla
 
PDF
The future of the php development environment
Jeremy Quinton
 
PDF
[네이버오픈소스세미나] What’s new in Zipkin - Adrian Cole
NAVER Engineering
 
PPT
Tomcat New Evolution
Allan Huang
 
PPT
Tomcat
Venkat Pinagadi
 
PDF
Inside The Java Virtual Machine
elliando dias
 
PDF
Productive web applications that run only on the frontend
Stefan Adolf
 
PPTX
JRuby deployments
berninme
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Udaya Kiran
 
Apache Tomcat + Java EE = Apache TomEE
Jacek Laskowski
 
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Udaya Kiran
 
Hacking Tomcat
guestc27cd9
 
Tomcat Server
Anirban Majumdar
 
Apache Performance Tuning: Scaling Out
Sander Temme
 
Tomcatx performance-tuning
Vladimir Khokhryakov
 
The details of CI/CD environment for Ruby
Hiroshi SHIBATA
 
J Ruby Whirlwind Tour
oscon2007
 
Composer Helpdesk
Sven Rautenberg
 
Composer | PHP Dependency Manager
Ujjwal Ojha
 
Apache tomcat
Shashwat Shriparv
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Alvaro Videla
 
The future of the php development environment
Jeremy Quinton
 
[네이버오픈소스세미나] What’s new in Zipkin - Adrian Cole
NAVER Engineering
 
Tomcat New Evolution
Allan Huang
 
Inside The Java Virtual Machine
elliando dias
 
Productive web applications that run only on the frontend
Stefan Adolf
 
JRuby deployments
berninme
 

Similar to State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World Forum 2011 (20)

PDF
State of the art: Server-Side JavaScript (ParisJS)
Alexandre Morgaut
 
KEY
State of the art server side java script
Thibaud Arguillere
 
KEY
State of the art: Server-side JavaScript - MoscowJS
Alexandre Morgaut
 
KEY
State of the art - server side JavaScript - web-5 2012
Alexandre Morgaut
 
PDF
State of the art: Server-Side JavaScript - dejeuner fulljs
Alexandre Morgaut
 
KEY
State of the art: server-side javaScript - NantesJS
Alexandre Morgaut
 
PDF
End-to-end W3C APIs - tpac 2012
Alexandre Morgaut
 
KEY
Node.js Performance Case Study
Fabian Frank
 
PDF
Node.js
Matt Simonis
 
PDF
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Alexandre Morgaut
 
PPT
The future of server side JavaScript
Oleg Podsechin
 
PPTX
JavaScript on the server - Node.js
Rody Middelkoop
 
PDF
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Alexandre Morgaut
 
PDF
End-to-end HTML5 APIs - The Geek Gathering 2013
Alexandre Morgaut
 
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
FITC
 
PDF
End to-end W3C - JS.everywhere(2012) Europe
Alexandre Morgaut
 
PPTX
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
PDF
Kann JavaScript elegant sein?
jbandi
 
PDF
End-to-end W3C APIs
Alexandre Morgaut
 
PDF
Open End To End Js Stack
Skills Matter
 
State of the art: Server-Side JavaScript (ParisJS)
Alexandre Morgaut
 
State of the art server side java script
Thibaud Arguillere
 
State of the art: Server-side JavaScript - MoscowJS
Alexandre Morgaut
 
State of the art - server side JavaScript - web-5 2012
Alexandre Morgaut
 
State of the art: Server-Side JavaScript - dejeuner fulljs
Alexandre Morgaut
 
State of the art: server-side javaScript - NantesJS
Alexandre Morgaut
 
End-to-end W3C APIs - tpac 2012
Alexandre Morgaut
 
Node.js Performance Case Study
Fabian Frank
 
Node.js
Matt Simonis
 
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Alexandre Morgaut
 
The future of server side JavaScript
Oleg Podsechin
 
JavaScript on the server - Node.js
Rody Middelkoop
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Alexandre Morgaut
 
End-to-end HTML5 APIs - The Geek Gathering 2013
Alexandre Morgaut
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
FITC
 
End to-end W3C - JS.everywhere(2012) Europe
Alexandre Morgaut
 
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
Kann JavaScript elegant sein?
jbandi
 
End-to-end W3C APIs
Alexandre Morgaut
 
Open End To End Js Stack
Skills Matter
 
Ad

More from Alexandre Morgaut (19)

PDF
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Alexandre Morgaut
 
PDF
Past, present, and future of web assembly - Devfest Nantes 2017
Alexandre Morgaut
 
PDF
angular-wakanda ngParis meetup 15 at 42
Alexandre Morgaut
 
PDF
Carnet de Route du Développeur - ENSIMAG 2012
Alexandre Morgaut
 
PDF
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Alexandre Morgaut
 
PDF
HTML5 in automotive - web2day 2014
Alexandre Morgaut
 
PDF
JS in SMS - JS.everywhere(2013)
Alexandre Morgaut
 
PDF
Js in Automotive - JS.everywhere(2013)
Alexandre Morgaut
 
PDF
From Web App Model Design to Production with Wakanda
Alexandre Morgaut
 
PDF
NoSQL and JavaScript: a love story
Alexandre Morgaut
 
PDF
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
 
PDF
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Alexandre Morgaut
 
PDF
NoSQL and JavaScript: a Love Story
Alexandre Morgaut
 
PDF
Etat de l'art Server-Side JavaScript - JS Geneve
Alexandre Morgaut
 
PDF
NantesJS premier meetup - Welcome
Alexandre Morgaut
 
PDF
Wakanda NoSQL Object Datastore - MoscowJS 2011
Alexandre Morgaut
 
KEY
Benefits of an Open environment with Wakanda
Alexandre Morgaut
 
KEY
ParisJS meetup 8 - june 2011
Alexandre Morgaut
 
PDF
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Alexandre Morgaut
 
Lint, coverage, doc, autocompletion, transpilation, minification... powered b...
Alexandre Morgaut
 
Past, present, and future of web assembly - Devfest Nantes 2017
Alexandre Morgaut
 
angular-wakanda ngParis meetup 15 at 42
Alexandre Morgaut
 
Carnet de Route du Développeur - ENSIMAG 2012
Alexandre Morgaut
 
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Alexandre Morgaut
 
HTML5 in automotive - web2day 2014
Alexandre Morgaut
 
JS in SMS - JS.everywhere(2013)
Alexandre Morgaut
 
Js in Automotive - JS.everywhere(2013)
Alexandre Morgaut
 
From Web App Model Design to Production with Wakanda
Alexandre Morgaut
 
NoSQL and JavaScript: a love story
Alexandre Morgaut
 
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
 
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Alexandre Morgaut
 
NoSQL and JavaScript: a Love Story
Alexandre Morgaut
 
Etat de l'art Server-Side JavaScript - JS Geneve
Alexandre Morgaut
 
NantesJS premier meetup - Welcome
Alexandre Morgaut
 
Wakanda NoSQL Object Datastore - MoscowJS 2011
Alexandre Morgaut
 
Benefits of an Open environment with Wakanda
Alexandre Morgaut
 
ParisJS meetup 8 - june 2011
Alexandre Morgaut
 
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009
Alexandre Morgaut
 
Ad

Recently uploaded (20)

PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 

State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World Forum 2011

  • 1. STATE OF THE ART SERVER-SIDE JAVASCRIPT @amorgaut 4d.com 2011-09-24
  • 3. BIRTH • 1995 LiveScript/JavaScript • 1996 Microsoft JScript (IE4) NetScape Enterprise Server 2 aka LiveWire/iPlanet • 1997 ECMAScript 1 “DHTML” Windows IIS 3
  • 4. MATURITY • 1998 - DOM, Mozilla Rhino • 1999 - ES3, XMLHttpRequest, HTML 4 • 2000 - ActionScript, Helma Hop • 2001 - JSON, Apple JavaScript OSA • 2002 - JSLint • 2003 - JavaScript Adobe Press, JScript .NET • 2004 - E4X , “Web 2.0” • 2005 - Prototype, “Ajax” • 2006 - Firebug, jQuery, “Comet”, APE, “HTML5” • 2007 - SitePoint Persevere, Rhino on Rails
  • 5. SSJS: THE COMEBACK • 2008 Aptana Jaxer CouchDB Acid Test 3 • 2009 Narwhal & Jack GPSEE ServerJS -> CommonJS Node.js ECMAScript 5 • 2010 Helma NG -> RingoJS Sun Phobos • 2011 Wakanda
  • 6. SSJS: THE COMEBACK • 2008 Aptana Jaxer CouchDB Acid Test 3 • 2009 Narwhal & Jack GPSEE ServerJS -> CommonJS Node.js ECMAScript 5 • 2010 Helma NG -> RingoJS Sun Phobos • 2011 Wakanda
  • 7. SSJS: THE COMEBACK • 2008 Aptana Jaxer CouchDB Acid Test 3 • 2009 Narwhal & Jack GPSEE ServerJS -> CommonJS Node.js ECMAScript 5 • 2010 Helma NG -> RingoJS Sun Phobos • 2011 Wakanda
  • 8. SSJS: THE COMEBACK • 2008 Aptana Jaxer CouchDB Acid Test 3 • 2009 Narwhal & Jack GPSEE ServerJS -> CommonJS Node.js ECMAScript 5 • 2010 Helma NG -> RingoJS Sun Phobos • 2011 Wakanda
  • 11. C C+ + SpiderMonkey webkit JavaScriptCore: JSC TraceMonkey (JIT) SquirrelFish Extreme: SFX (JIT) JägerMonkey (JIT) IonMonkey (JIT) Nitro C+ Jav + a Rhino V8 C+ + Trident Chakra C+ + C+ + Carakan Tamarin Futhark
  • 12. CLIENT-SIDE SpiderMonkey JavaScriptCore Rhino V8 Tamarin Trident / Chakra Carakan / Futhark
  • 13. SERVER-SIDE SpiderMonkey JavaScriptCore Narwhal Narwhal CouchDB, MongoDB Wakanda APE, GPSEE, SpiderNode ... V8 Narwhal Akshell Node.js Rhino Trident / Chakra Narwhal IronJS Helma / RingoJS, AppJet Node.NET Persevere, Phobos, RhiNodeII ...
  • 14. BENCHMARKS and what they worth....
  • 15. BROWSERS WAR II (MAY 2009) http://www.maximumpc.com/article/features/browser_brouhaha_your_maximum_guide_browsers_today_and_tomorrow?page=0,6
  • 16. PERSEVERE & JAVASCRIPTDB (APRIL 2009) http://www.sitepen.com/blog/2009/04/20/javascriptdb-perseveres-new-high-performance-storage-engine/
  • 17. 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
  • 18. RINGOJS VS NODEJS (SEPTEMBER 2010) http://hns.github.com/2010/09/21/benchmark.html
  • 19. SUNSPIDER 0.9.1 (AUGUST 2011) 7 8 6 5 4 3 2 1 http://expansive-derivation.ossreleasefeed.com/2011/08/javascript-performance-test-results-with-sunspider/
  • 21. 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
  • 22. COMMON JAVASCRIPT • Ubiquity not only for ECMAScript • Server missing APIs • Web Applications 1.0 • Asynchronous & Synchronous • Working Groups: - CommonJS - WHATWG - W3C - ECMA TC39
  • 23. ASYNC. EVENT-BASED • 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
  • 24. SINGLE vs MULTI THREADING One context per thread
  • 25. SINGLE vs MULTI THREADING One context per thread SINGLE 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
  • 26. DATABASE-DRIVEN • Document Store - CouchDB, MongoDB • Object Store - Wakanda • Push Store - APE
  • 27. APIS
  • 28. COMMONJS • Modules • Packages • Binary • Promises • File • System • JSGI • Unit-Testing • Stream http://wiki.commonjs.org/wiki/CommonJS
  • 29. NODE ASYNC APIS • Buffer • Process • Events • Streams • File • Timers • Net • ... • OS http://nodejs.org/docs/v0.5.5/api/
  • 30. W3C / HTML5 & OTHER STANDARDS • Console • Structured clones • Blob, Blob URL* • Typed Arrays* • DataView* • Web Sockets • File / FileSystem • Web Storage • Modules* • Web Workers • Progress Events • XHR 2
  • 31. PACKAGES & MODULES • github: CommonJS modules in forks (Persevere, Narwhal, RingoJS, ...) • NPM: Node Package Manager (3600+ packages) • CPM: CommonJS Package Manager (new) • PINF: Universal module loader http://wiki.commonjs.org/wiki/CommonJS
  • 32. STATE OF THE ART SERVER-SIDE JAVASCRIPT The End See us at Wakanday aka JS.everywhere(Boston, October, 15) @amorgaut 4d.com @thibarg Wakanda.org @wakanday Wakanday.org