SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Apache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEEApache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEE
Jacek Laskowski
 
J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Tour
oscon2007
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
Allan Huang
 
Inside The Java Virtual Machine
Inside The Java Virtual MachineInside The Java Virtual Machine
Inside The Java Virtual Machine
elliando dias
 

Tendances (20)

Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
 
Apache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEEApache Tomcat + Java EE = Apache TomEE
Apache Tomcat + Java EE = Apache TomEE
 
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPPScalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
 
Hacking Tomcat
Hacking TomcatHacking Tomcat
Hacking Tomcat
 
Tomcat Server
Tomcat ServerTomcat Server
Tomcat Server
 
Apache Performance Tuning: Scaling Out
Apache Performance Tuning: Scaling OutApache Performance Tuning: Scaling Out
Apache Performance Tuning: Scaling Out
 
Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 
J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Tour
 
Composer Helpdesk
Composer HelpdeskComposer Helpdesk
Composer Helpdesk
 
Composer | PHP Dependency Manager
Composer | PHP Dependency ManagerComposer | PHP Dependency Manager
Composer | PHP Dependency Manager
 
Apache tomcat
Apache tomcatApache tomcat
Apache tomcat
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal Architecture
 
The future of the php development environment
The future of the php development environmentThe future of the php development environment
The future of the php development environment
 
[네이버오픈소스세미나] What’s new in Zipkin - Adrian Cole
[네이버오픈소스세미나] What’s new in Zipkin - Adrian Cole[네이버오픈소스세미나] What’s new in Zipkin - Adrian Cole
[네이버오픈소스세미나] What’s new in Zipkin - Adrian Cole
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
 
Tomcat
TomcatTomcat
Tomcat
 
Inside The Java Virtual Machine
Inside The Java Virtual MachineInside The Java Virtual Machine
Inside The Java Virtual Machine
 
Productive web applications that run only on the frontend
Productive web applications that run only on the frontendProductive web applications that run only on the frontend
Productive web applications that run only on the frontend
 
JRuby deployments
JRuby deploymentsJRuby deployments
JRuby deployments
 

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

State of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJSState of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJS
Alexandre Morgaut
 
State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012
Alexandre Morgaut
 
State of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSState of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJS
Alexandre Morgaut
 
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljsState of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
Alexandre Morgaut
 
Node js quick tour v2
Node js quick tour v2Node js quick tour v2
Node js quick tour v2
Wyatt Fang
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Alexandre Morgaut
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
Tim Sommer
 

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

State of the art: Server-Side JavaScript (ParisJS)
State of the art: Server-Side JavaScript  (ParisJS)State of the art: Server-Side JavaScript  (ParisJS)
State of the art: Server-Side JavaScript (ParisJS)
 
State of the art server side java script
State of the art server side java scriptState of the art server side java script
State of the art server side java script
 
State of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJSState of the art: Server-side JavaScript - MoscowJS
State of the art: Server-side JavaScript - MoscowJS
 
State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012State of the art - server side JavaScript - web-5 2012
State of the art - server side JavaScript - web-5 2012
 
State of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJSState of the art: server-side javaScript - NantesJS
State of the art: server-side javaScript - NantesJS
 
State of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljsState of the art: Server-Side JavaScript - dejeuner fulljs
State of the art: Server-Side JavaScript - dejeuner fulljs
 
Deployment de Rails
Deployment de RailsDeployment de Rails
Deployment de Rails
 
Can we run the Whole Web on Apache Sling?
Can we run the Whole Web on Apache Sling?Can we run the Whole Web on Apache Sling?
Can we run the Whole Web on Apache Sling?
 
Server-Side JavaScript Developement - Node.JS Quick Tour
Server-Side JavaScript Developement - Node.JS Quick TourServer-Side JavaScript Developement - Node.JS Quick Tour
Server-Side JavaScript Developement - Node.JS Quick Tour
 
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
Node js quick-tour_v2
Node js quick-tour_v2Node js quick-tour_v2
Node js quick-tour_v2
 
Node js quick-tour_v2
Node js quick-tour_v2Node js quick-tour_v2
Node js quick-tour_v2
 
Node js quick tour v2
Node js quick tour v2Node js quick tour v2
Node js quick tour v2
 
Introduction to Napa.js
Introduction to Napa.jsIntroduction to Napa.js
Introduction to Napa.js
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
 

Plus de Alexandre Morgaut

HTML5 in automotive - web2day 2014
HTML5 in automotive  - web2day 2014HTML5 in automotive  - web2day 2014
HTML5 in automotive - web2day 2014
Alexandre Morgaut
 
JS in SMS - JS.everywhere(2013)
JS in SMS - JS.everywhere(2013)JS in SMS - JS.everywhere(2013)
JS in SMS - JS.everywhere(2013)
Alexandre Morgaut
 
Js in Automotive - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)Js in Automotive - JS.everywhere(2013)
Js in Automotive - JS.everywhere(2013)
Alexandre Morgaut
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
 
End to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeEnd to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) Europe
Alexandre Morgaut
 
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Wakanda and the top 5 security risks - JS.everyrwhere(2012) EuropeWakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Wakanda and the top 5 security risks - JS.everyrwhere(2012) Europe
Alexandre Morgaut
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS Geneve
Alexandre Morgaut
 
NantesJS premier meetup - Welcome
NantesJS premier meetup - WelcomeNantesJS premier meetup - Welcome
NantesJS premier meetup - Welcome
Alexandre Morgaut
 
Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011
Alexandre Morgaut
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
Alexandre Morgaut
 

Plus de Alexandre Morgaut (20)

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

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 

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