SlideShare a Scribd company logo
State of the Art
    Server-Side JavaScript
                      #10



@amorgaut                   4d.com
@thibarg
             2011-08-31
Notes


These slides are part of a 15min version of
the talk for ParisJS

a more recent version has been presented at
WebWorkersCamp IV during
Open World Forum
http://www.slideshare.net/alexandre_morgaut/state-of-the-art-server-side-java-script-webworkerscamp-9406069
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
2004 - E4X , “Web 2.0”
2005 - Prototype, “Ajax”
2006 - Firebug, jQuery, “Comet”, “HTML5”

2007 - SitePoint Persevere, Rhino on Rails
SSJS: The comeback
2008
Aptana Jaxer
CouchDB

2009
Narwhal & Jack
ServerJS/CommonJS
Node.JS
ECMAScript 5

2010
Helma NG -> RingoJS
Sun Phobos

2011
Wakanda
SSJS: The comeback
2008
Aptana Jaxer
CouchDB

2009
Narwhal & Jack
ServerJS/CommonJS
Node.JS
ECMAScript 5

2010
Helma NG -> RingoJS
Sun Phobos

2011
Wakanda
SSJS: The comeback
2008
Aptana Jaxer
CouchDB

2009
Narwhal & Jack
ServerJS/CommonJS
Node.JS
ECMAScript 5

2010
Helma NG -> RingoJS
Sun Phobos

2011
Wakanda
SSJS: The comeback
2008
Aptana Jaxer
CouchDB

2009
Narwhal & Jack
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
Engines

SpiderMonkey            webkit JavaScriptCore: JSC
  TraceMonkey (JIT)          SquirrelFish Extreme: SFX (JIT)
  JägerMonkey (JIT)
   IonMonkey (JIT)
                                        Nitro


     Rhino                               V8

                       Trident
                       Chakra                     Carakan
     Tamarin
                                                  Futhark
Engines
                             C/                                                 C/
                               C+                                                 C+
                                  +                                                  +
SpiderMonkey                                 webkit JavaScriptCore: JSC
       Narwhal                                                    Narwhal
  CouchDB, MongoDB                                                Wakanda
     Spidernode                                                     ...
         ...
          Sp
            ide                                                        C/
                  rM                                                     C+
                     o   nk                                                 +
     Rhino                                                         V8
                           ey
                              in
                                 Ja
                                   va
       Narwhal                                                    Narwhal
       RingoJS                                                    Akshell
      Persevere                                                   Node.js
         ...                                             C/         ...
                                                           C+
                                        Trident / Chakra      +

                                            ASP / .NET
Benchmarks?
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
  SpiderMonkey in Java
  Interaction with Java (APIs and objects)
  Helma, Persevere, Narwhal*, RingoJS, Sun Phobos...

JScript .Net
  Chakra (C++)
  Interaction with Windows APIs
Async. Event-based
One single thread

Cooperative («one at a time») with async. callbacks

nodejs (V8)
Async. Event-based
       One single thread

       Cooperative («one at a time») with async. callbacks

       nodejs (V8)

Cons                               Pros
  Vulnerable to synchronous           Can handle a lot of
  operations                          requests
  Share failure                       Low memory usage
  Doesn’t use other cores             Uses only one core
  Hard to debug and maintain
Thread-based
One thread per context

Preemptive: Parallel code execution

About all others
Thread-based
       One thread per context

       Preemptive: Parallel code execution

       About all others

Cons                                Pros
  Memory/CPU limits                   Vertical scalability (cloud)
  Race conditions, deadlocks, ...     Thread-safety for concurrent
  (internal, C++)                     access
  Uses all available cores            Uses all available cores
Database-driven
CouchDB, MongoDB (SpiderMonkey):
  Document Store


Wakanda (JavaScriptCore)
  Object Store
APIs
CommonJS
Modules                             Binary

Packages                            File

Promises                            JSGI

System                              Stream

Unit-Testing




      http://wiki.commonjs.org/wiki/CommonJS
Node.js async APIs
Buffer                              Streams

Events                              Timers

File                                ...

Net

OS

Process

          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
     lot of commonjs modules in several
     repositories (Persevere, Narwhal,
     RingoJS, ...)

NPM: Node Package Manager
     3600+ packages

CPM: CommonJS Package Manager (new)

         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                                wakanday.org
@wakandasoft                             @wakanday

More Related Content

KEY
State of the art: Server-side JavaScript - MoscowJS
KEY
State of the art server side java script
PDF
State of the art: Server-Side JavaScript - dejeuner fulljs
KEY
State of the art - server side JavaScript - web-5 2012
PPT
MongoTokyo
PDF
Hong Qiangning in QConBeijing
PDF
Can we run the Whole Web on Apache Sling?
PDF
Mongo DBを半年運用してみた
State of the art: Server-side JavaScript - MoscowJS
State of the art server side java script
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art - server side JavaScript - web-5 2012
MongoTokyo
Hong Qiangning in QConBeijing
Can we run the Whole Web on Apache Sling?
Mongo DBを半年運用してみた

What's hot (20)

PDF
Middleware as Code with mruby
PDF
JS Fest 2019. Тимур Шемсединов. Разделяемая память в многопоточном Node.js
PDF
Tools for Metaspace
PDF
Dependency Resolution with Standard Libraries
PPTX
Sun jdk 1.6 gc english version
PDF
How to test code with mruby
PDF
Middleware as Code with mruby
PDF
Mastering java in containers - MadridJUG
PDF
RubyGems 3 & 4
PPTX
JVM @ Taobao - QCon Hangzhou 2011
PDF
Large-scaled Deploy Over 100 Servers in 3 Minutes
PDF
Toster - Understanding the Rails Web Model and Scalability Options
PDF
The secret of programming language development and future
PDF
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
PDF
Practical ngx_mruby
PDF
ゼロから作るパケット転送用OS (Internet Week 2014)
PDF
近未来的並列 LL
PPTX
Intro to GPGPU Programming with Cuda
PDF
视觉中国的MongoDB应用实践(QConBeijing2011)
PDF
How to distribute Ruby to the world
Middleware as Code with mruby
JS Fest 2019. Тимур Шемсединов. Разделяемая память в многопоточном Node.js
Tools for Metaspace
Dependency Resolution with Standard Libraries
Sun jdk 1.6 gc english version
How to test code with mruby
Middleware as Code with mruby
Mastering java in containers - MadridJUG
RubyGems 3 & 4
JVM @ Taobao - QCon Hangzhou 2011
Large-scaled Deploy Over 100 Servers in 3 Minutes
Toster - Understanding the Rails Web Model and Scalability Options
The secret of programming language development and future
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
Practical ngx_mruby
ゼロから作るパケット転送用OS (Internet Week 2014)
近未来的並列 LL
Intro to GPGPU Programming with Cuda
视觉中国的MongoDB应用实践(QConBeijing2011)
How to distribute Ruby to the world
Ad

Similar to State of the art: Server-Side JavaScript (ParisJS) (20)

PDF
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
KEY
State of the art: server-side javaScript - NantesJS
PDF
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
PDF
Fisl - Deployment
PDF
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
PDF
Deployment de Rails
PDF
TorqueBox at DC:JBUG - November 2011
PPT
AppengineJS
KEY
Deploying JRuby Web Applications
PDF
Isomorphic JavaScript with Nashorn
PDF
20160908 hivemall meetup
PDF
Reactive programming with Rxjava
PDF
Microservices with Micronaut
PDF
Integrating Applications: the Reactive Way
PDF
.NET Architects Day - DNAD 2011
PDF
09 - Fábio Akita - Além do rails
PDF
Porting a Streaming Pipeline from Scala to Rust
PDF
Understanding the Rails web model and scalability options
PDF
Everyday tools and tricks for scaling Node.js
PPTX
Why you’re going to fail running java on docker!
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: server-side javaScript - NantesJS
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Fisl - Deployment
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Deployment de Rails
TorqueBox at DC:JBUG - November 2011
AppengineJS
Deploying JRuby Web Applications
Isomorphic JavaScript with Nashorn
20160908 hivemall meetup
Reactive programming with Rxjava
Microservices with Micronaut
Integrating Applications: the Reactive Way
.NET Architects Day - DNAD 2011
09 - Fábio Akita - Além do rails
Porting a Streaming Pipeline from Scala to Rust
Understanding the Rails web model and scalability options
Everyday tools and tricks for scaling Node.js
Why you’re going to fail running java on docker!
Ad

More from Alexandre Morgaut (20)

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

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Cloud computing and distributed systems.
PPTX
Spectroscopy.pptx food analysis technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
cuic standard and advanced reporting.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
NewMind AI Weekly Chronicles - August'25 Week I
Unlocking AI with Model Context Protocol (MCP)
sap open course for s4hana steps from ECC to s4
20250228 LYD VKU AI Blended-Learning.pptx
Electronic commerce courselecture one. Pdf
Spectral efficient network and resource selection model in 5G networks
Mobile App Security Testing_ A Comprehensive Guide.pdf
Encapsulation_ Review paper, used for researhc scholars
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Network Security Unit 5.pdf for BCA BBA.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
MIND Revenue Release Quarter 2 2025 Press Release
Cloud computing and distributed systems.
Spectroscopy.pptx food analysis technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
cuic standard and advanced reporting.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Review of recent advances in non-invasive hemoglobin estimation
NewMind AI Weekly Chronicles - August'25 Week I

State of the art: Server-Side JavaScript (ParisJS)

  • 1. State of the Art Server-Side JavaScript #10 @amorgaut 4d.com @thibarg 2011-08-31
  • 2. Notes These slides are part of a 15min version of the talk for ParisJS a more recent version has been presented at WebWorkersCamp IV during Open World Forum http://www.slideshare.net/alexandre_morgaut/state-of-the-art-server-side-java-script-webworkerscamp-9406069
  • 4. Birth 1995 LiveScript/JavaScript 1996 Microsoft JScript (IE4) NetScape Enterprise Server 2 aka LiveWire/iPlanet 1997 ECMAScript 1 “DHTML” Windows IIS 3
  • 5. 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 2004 - E4X , “Web 2.0” 2005 - Prototype, “Ajax” 2006 - Firebug, jQuery, “Comet”, “HTML5” 2007 - SitePoint Persevere, Rhino on Rails
  • 6. SSJS: The comeback 2008 Aptana Jaxer CouchDB 2009 Narwhal & Jack ServerJS/CommonJS Node.JS ECMAScript 5 2010 Helma NG -> RingoJS Sun Phobos 2011 Wakanda
  • 7. SSJS: The comeback 2008 Aptana Jaxer CouchDB 2009 Narwhal & Jack ServerJS/CommonJS Node.JS ECMAScript 5 2010 Helma NG -> RingoJS Sun Phobos 2011 Wakanda
  • 8. SSJS: The comeback 2008 Aptana Jaxer CouchDB 2009 Narwhal & Jack ServerJS/CommonJS Node.JS ECMAScript 5 2010 Helma NG -> RingoJS Sun Phobos 2011 Wakanda
  • 9. SSJS: The comeback 2008 Aptana Jaxer CouchDB 2009 Narwhal & Jack ServerJS/CommonJS Node.JS ECMAScript 5 2010 Helma NG -> RingoJS Sun Phobos 2011 Wakanda
  • 12. Engines SpiderMonkey webkit JavaScriptCore: JSC TraceMonkey (JIT) SquirrelFish Extreme: SFX (JIT) JägerMonkey (JIT) IonMonkey (JIT) Nitro Rhino V8 Trident Chakra Carakan Tamarin Futhark
  • 13. Engines C/ C/ C+ C+ + + SpiderMonkey webkit JavaScriptCore: JSC Narwhal Narwhal CouchDB, MongoDB Wakanda Spidernode ... ... Sp ide C/ rM C+ o nk + Rhino V8 ey in Ja va Narwhal Narwhal RingoJS Akshell Persevere Node.js ... C/ ... C+ Trident / Chakra + ASP / .NET
  • 15. Persevere JavaScriptDB (April 2009) http://www.sitepen.com/blog/2009/04/20/javascriptdb-perseveres-new-high-performance-storage-engine/
  • 16. 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
  • 17. RingoJS vs NodeJS (September 2010) http://hns.github.com/2010/09/21/benchmark.html
  • 18. 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/
  • 20. Integration-Oriented Rhino SpiderMonkey in Java Interaction with Java (APIs and objects) Helma, Persevere, Narwhal*, RingoJS, Sun Phobos... JScript .Net Chakra (C++) Interaction with Windows APIs
  • 21. Async. Event-based One single thread Cooperative («one at a time») with async. callbacks nodejs (V8)
  • 22. Async. Event-based One single thread Cooperative («one at a time») with async. callbacks nodejs (V8) Cons Pros Vulnerable to synchronous Can handle a lot of operations requests Share failure Low memory usage Doesn’t use other cores Uses only one core Hard to debug and maintain
  • 23. Thread-based One thread per context Preemptive: Parallel code execution About all others
  • 24. Thread-based One thread per context Preemptive: Parallel code execution About all others Cons Pros Memory/CPU limits Vertical scalability (cloud) Race conditions, deadlocks, ... Thread-safety for concurrent (internal, C++) access Uses all available cores Uses all available cores
  • 25. Database-driven CouchDB, MongoDB (SpiderMonkey): Document Store Wakanda (JavaScriptCore) Object Store
  • 26. APIs
  • 27. CommonJS Modules Binary Packages File Promises JSGI System Stream Unit-Testing http://wiki.commonjs.org/wiki/CommonJS
  • 28. Node.js async APIs Buffer Streams Events Timers File ... Net OS Process http://nodejs.org/docs/v0.5.5/api/
  • 29. 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
  • 30. Packages & Modules github lot of commonjs modules in several repositories (Persevere, Narwhal, RingoJS, ...) NPM: Node Package Manager 3600+ packages CPM: CommonJS Package Manager (new) http://wiki.commonjs.org/wiki/CommonJS
  • 31. State of the Art Server-Side JavaScript The End See us at Wakanday aka JS.everywhere(Boston, October, 15) @amorgaut 4d.com @thibarg wakanday.org @wakandasoft @wakanday

Editor's Notes

  • #4: Brendan Eich creates JavaScript for NetScape 1 year after, he puts it on the server Each time Microsoft followed just one year after
  • #5: JavaScript long growing maturity
  • #6: Server-Side JavaScript: the come back
  • #11: Maturité de l’environement (Tools, Standards, libraries) mais aussi montée des performances “ The JavaScript Performance Race”
  • #16: Maturité de l’environement (Tools, Standards, libraries) mais aussi montée des performances “ The JavaScript Performance Race”