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



        Web-5


         2012-04-05
PRESENTATION
           Alexandre Morgaut
       Web Architect / Community Manager
                   Creator of @NantesJS



                  @amorgaut
HISTORY
BIRTH
•   1995                                    Brendan Eich
    Mocha > LiveScript > JavaScript (NS2)    JavaScript creator


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

•   1997
    ECMAScript 1
    “DHTML”
    Windows IIS 3
The “JavaScript” name is trademarked by Oracle (via Sun)
MATURITY
•   1998 - HTML/XML DOM, Sun/Mozilla Rhino
•   1999 - ECMAScript 3, XMLHttpRequest, HTML 4
•   2000 - ActionScript, Helma Hop
•   2001 - JSON, Apple JavaScript OSA
•   2002 - JSLint, Mozilla “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
SSJS: THE COME BACK
•   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
SSJS: THE COME BACK
•   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
SSJS: THE COME BACK
•   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
SSJS: THE COME BACK
•   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
SSJS: THE COME BACK
•   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
60+ EXISTING SOLUTIONS




http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
ECOSYSTEM
COMMUNITY




http://www.communityjs.org/
LIBRAIRIES & FRAMEWORKS




https://github.com/languages/JavaScript   http://javascriptlibraries.com/
DEVELOPMENT ENVIRONMENTS

• Visual   Studio
• XCode
• Eclipse
• NetBeans




           • Wakanda   Studio
           • Cloud9
DEBUGGERS
Client-side
  • Firebug       *

  • Web       Inspector *
  • Dragonfly


Server-Side
  • Wakanda           Debugger *
  • Cloud9        Debugger *
 * via standard protocols, some debugger can debug JS code running anywhere (server, desktop, mobile, ...)
ECMASCRIPT 5 & NEXT


• ES5.1                     • ES.Next

 • Mode   strict             • Typed Array

 • Object   freeze           • Modules

 • Read   only properties    • Destructuring

 • Getter   / setter         • String   templates

 • More   native methods     • ...
TOOLS & STANDARDS
• JSLint   / JSHint / JavaScriptLint
• JSON     / JSON-Schema / JSONQuery / JSON-RPC
• JSDoc    / ScriptDoc
• JSON View
• JSMin    / Packer / YUI Compressor / Dojo Shrinksafe
• YUI Test    / QUnit / Jasmine / Mocha / Selenium
• NPM      / CPM
• RequireJS    (r.js)
• PhantomJS
JAVASCRIPT EVERYWHERE
ENGINES
C+
                                         C                                                                                                        +
  SpiderMonkey                                                      webkit JavaScriptCore: JSC
            3 JIT Compilers:                                                  SquirrelFish Extreme: SFX aka Nitro
             TraceMonkey,                                                               (JIT Compiler inside)
             JägerMonkey,
               IonMonkey




                                  Jav                                                                               C+
                                     a                                                                                +
            Rhino                                                                                         V8
  Interpreted or Compiled execution                                                               JIT Compiler: CrankShaft




Nashorn?
                                                                                                  ?
                                             Trident: MSHTML
                                                  Chakra
                                             -> Classic JScript, Managed JScript, & JScript.NET


                               C+                                                                                                   ?
                                 +
             Tamarin                                                                                             Carakan
       JIT Compiler: NanoJIT
      -> ActionScript / “ECMAScript 4”
                                                                                                      Previously: Linear A, Linear B, Futhark
CLIENT-SIDE


SpiderMonkey             JavaScriptCore



    Rhino                      V8



 Tamarin    Trident / Chakra   Carakan / Futhark
SERVER-SIDE

SpiderMonkey                 JavaScriptCore




  Rhino                           V8



               Trident / Chakra
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/
EMSCRIPTEN TESTS
                (OCTOBER 2011)

!"#$%&'($)(*+,$-."/
0 +((',--#+..(./(012&.(+03)4&1*0.%5$12,23
  $
     ! 677,84#$4#$4#$4#$4#$4#$4#$4#$4#$4#$4
     ! 91:13$4#$4#$4#$4#$4#$4#$5#$5#$5#$6#$6
     ! ;$1213$4#$4#$4#$5#$5#$5#$5#$5#$5#$7#$8
     ! <1#=)223$4#$4#$5#$5#$5#$5#$6#$9#$:
     ! 6>3$4#$4#$5#$5#$5#$5#$6#$6#$7#$;#$45
     !   <<

     ! 91:1;$%&'(3$5#$5#$6#$9#$9#$;$$$$$$$$=">?$12,2#$*",$(&"",">,@
     !   <<

     ! ?@(+.*3$4#$6#$:#$6:#$75#$7A#$A4#$:4#$;7#$44B
     ! A/4@3$7#$:#$;#$54#$5:#$9B#$:A#$;4#$44B#$54A
                                                                         !"#$%&'()*


              http://syntensity.com/static/jsconf_eu_Emscripten_lo.pdf
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 4




http://www.page.ca/~wes/SpiderMonkey/Perf/sunspider_history.png
MAIN CONCEPTS
INTEGRATION-ORIENTED
                                           •   PHP (J2PA, V8JS)
- using Rhino like with
   - Helma, Persevere, Narwhal, RingoJS,   •   C (GPSEE),
     Sun Phobos...
- Oracle Nashorn?
                                           •   Objective C (iMonkey),


                                           •   Ruby (Johnson),
- using JScript.NET like with
   - IronJS, Node.NET
                                           •   Perl (JE), …
COMMON JAVASCRIPT
•   Working Groups:
    -   ECMA TC39
    -   W3C
    -   WHATWG
    -   CommonJS

•   Ubiquity beyond ECMAScript

•   HTML5 specification was also known as:
    “Web Applications 1.0”
    http://www.whatwg.org/specs/web-apps/current-work/


•   Asynchronous & Synchronous APIs
ASYNC. EVENT-BASED

• Browser’s   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 & MULTI THREADING
                             One global 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


    Notes:
    - an event loop can generate some other threads which could use other cores
    - multi-thread architectures can run event loops in some of their threads
DATA-DRIVEN

         •   Document Store          •   Object Store




         •   Key/value Store         •   Push engine




See also: JSDB, JavaScriptDB
APIS - PACKAGES
COMMONJS

     • Modules                          • Packages




•   System                •   Binary                        •   Stream

•   Unit-Testing          •   File

•   Promises              •   JSGI



                   http://wiki.commonjs.org/wiki/CommonJS
NODE
             ASYNC APIS

•   Buffer       •   Net                           •   Streams

•   Events       •   OS                            •   Timers

•   File         •   Process                       •   ...




              http://nodejs.org/docs/v0.5.5/api/
W3C / HTML5 / ES.NEXT
     & OTHER STANDARDS
•   Console             •   Typed Arrays

•   Blob, Blob URL      •   Web Sockets

•   DataView            •   Web Storage, Indexed DB

•   File / FileSystem   •   Web Workers

•   Modules             •   XHR 2

•   Progress Events     •   DOM, E4X

•   Structured clones   •   Messages
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
IN PRODUCTION NOW!
DEMANDWARE
Many shops run on SSJS via
Demandware’s commerce platform:

  London 2012 olympics shop

  Puma sneaker

  ...

It uses Mozilla Rhino




                        http://jsconf.eu/2010/speaker/server-side_javascript_the_unt.html
NEOLANE
Neolane, a desktop application
written in C++, is used by clients
but also by integrators & partners
who need to be able to add their
own code

JavaScript was chosen because it is a
well-known interpreted language

The JavaScript engine is
SpiderMonkey



                                 http://www.neolane.com
MTV

• Current   deployments include

 • SpikeTV.com

 • Comedy     Central Indecision,

• MTV Networks will be rolling
 out MongoDB on many other
 major sites

                     http://www.mongodb.org/display/DOCS/Production+Deployments
VOXER

Voxer is a next generation application for
voice and text messaging

“Node.js dramatically outperformed the
previous solution we had written in Python”

Matt Rainey, RebelVox CTO




                                             http://voxer.com/
HAPPY MEEPLE

Using APE project

Synchronization between users

Reuse JavaScript code on client and
server to have the same intelligence
when online and offline




                                http://www.happymeeple.com
FINANCIAL DATA REPORTS

Using Wakanda

Deployed on employees iOS,
Android, & Blackberry smartphones

Provides historical sales and invoices
reports in PDF
THANK YOU
            Come with us at San Jose, CA on October 26th:




                                @jseverywhere

                            http://jseverywhere.org


Alexandre Morgaut - @amorgaut                Call to speaker just started!!!

More Related Content

What's hot

クラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャクラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャTomoharu ASAMI
 
Reactive Access to MongoDB from Java 8
Reactive Access to MongoDB from Java 8Reactive Access to MongoDB from Java 8
Reactive Access to MongoDB from Java 8Hermann Hueck
 
JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesCharles Nutter
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9Marcus Lagergren
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitAriya Hidayat
 
20101017 program analysis_for_security_livshits_lecture04_nozzle
20101017 program analysis_for_security_livshits_lecture04_nozzle20101017 program analysis_for_security_livshits_lecture04_nozzle
20101017 program analysis_for_security_livshits_lecture04_nozzleComputer Science Club
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBMongoDB
 
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?Bertrand Delacretaz
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central Dispatchcqtt191
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for CassandraEdward Capriolo
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsFabio Akita
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than YouRobert Cooper
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
Do we need Unsafe in Java?
Do we need Unsafe in Java?Do we need Unsafe in Java?
Do we need Unsafe in Java?Andrei Pangin
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門tamtam180
 
Down to Stack Traces, up from Heap Dumps
Down to Stack Traces, up from Heap DumpsDown to Stack Traces, up from Heap Dumps
Down to Stack Traces, up from Heap DumpsAndrei Pangin
 
Torquebox - O melhor dos dois mundos
Torquebox - O melhor dos dois mundosTorquebox - O melhor dos dois mundos
Torquebox - O melhor dos dois mundosBruno Oliveira
 

What's hot (18)

クラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャクラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャ
 
Reactive Access to MongoDB from Java 8
Reactive Access to MongoDB from Java 8Reactive Access to MongoDB from Java 8
Reactive Access to MongoDB from Java 8
 
JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for Dummies
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
20101017 program analysis_for_security_livshits_lecture04_nozzle
20101017 program analysis_for_security_livshits_lecture04_nozzle20101017 program analysis_for_security_livshits_lecture04_nozzle
20101017 program analysis_for_security_livshits_lecture04_nozzle
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
ClassLoader Leaks
ClassLoader LeaksClassLoader Leaks
ClassLoader Leaks
 
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?
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central Dispatch
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability Options
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
Do we need Unsafe in Java?
Do we need Unsafe in Java?Do we need Unsafe in Java?
Do we need Unsafe in Java?
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
 
Down to Stack Traces, up from Heap Dumps
Down to Stack Traces, up from Heap DumpsDown to Stack Traces, up from Heap Dumps
Down to Stack Traces, up from Heap Dumps
 
Torquebox - O melhor dos dois mundos
Torquebox - O melhor dos dois mundosTorquebox - O melhor dos dois mundos
Torquebox - O melhor dos dois mundos
 

Similar to 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 - NantesJSAlexandre Morgaut
 
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 - MoscowJSAlexandre Morgaut
 
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...Alexandre Morgaut
 
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 2012Alexandre Morgaut
 
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 2012Alexandre Morgaut
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with MicronautQAware GmbH
 
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
Replatforming Legacy Packaged Applications: Block-by-Block with MinecraftReplatforming Legacy Packaged Applications: Block-by-Block with Minecraft
Replatforming Legacy Packaged Applications: Block-by-Block with MinecraftVMware Tanzu
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - DeploymentFabio Akita
 
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornIsomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornMaxime Najim
 
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile WebAnalyzing the Performance of Mobile Web
Analyzing the Performance of Mobile WebAriya Hidayat
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011bobmcwhirter
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with MicronautQAware GmbH
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options.toster
 
J Ruby Kungfu Rails
J Ruby   Kungfu RailsJ Ruby   Kungfu Rails
J Ruby Kungfu RailsDaniel Lv
 
The Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOneThe Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOneKonrad Malawski
 
Lagergren jvmls-2014-final
Lagergren jvmls-2014-finalLagergren jvmls-2014-final
Lagergren jvmls-2014-finalMarcus Lagergren
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationMark Proctor
 

Similar to State of the art - server side JavaScript - web-5 2012 (20)

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 - 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 - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
State of the art: Server-Side JavaScript - WebWorkersCamp IV - Open World For...
 
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
 
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
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with Micronaut
 
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
Replatforming Legacy Packaged Applications: Block-by-Block with MinecraftReplatforming Legacy Packaged Applications: Block-by-Block with Minecraft
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornIsomorphic JavaScript with Nashorn
Isomorphic JavaScript with Nashorn
 
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile WebAnalyzing the Performance of Mobile Web
Analyzing the Performance of Mobile Web
 
Devignition 2011
Devignition 2011Devignition 2011
Devignition 2011
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with Micronaut
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options
 
Deployment de Rails
Deployment de RailsDeployment de Rails
Deployment de Rails
 
J Ruby Kungfu Rails
J Ruby   Kungfu RailsJ Ruby   Kungfu Rails
J Ruby Kungfu Rails
 
The Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOneThe Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOne
 
Lagergren jvmls-2014-final
Lagergren jvmls-2014-finalLagergren jvmls-2014-final
Lagergren jvmls-2014-final
 
20160908 hivemall meetup
20160908 hivemall meetup20160908 hivemall meetup
20160908 hivemall meetup
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentation
 

More from Alexandre Morgaut

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...Alexandre Morgaut
 
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 2017Alexandre Morgaut
 
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 42Alexandre Morgaut
 
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 2012Alexandre Morgaut
 
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 2014Alexandre Morgaut
 
HTML5 in automotive - web2day 2014
HTML5 in automotive  - web2day 2014HTML5 in automotive  - web2day 2014
HTML5 in automotive - web2day 2014Alexandre 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
 
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 2013Alexandre Morgaut
 
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 WakandaAlexandre 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-29Alexandre 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) EuropeAlexandre 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) EuropeAlexandre Morgaut
 
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 2012Alexandre 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 GeneveAlexandre Morgaut
 
NantesJS premier meetup - Welcome
NantesJS premier meetup - WelcomeNantesJS premier meetup - Welcome
NantesJS premier meetup - WelcomeAlexandre Morgaut
 
Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011Wakanda NoSQL Object Datastore - MoscowJS 2011
Wakanda NoSQL Object Datastore - MoscowJS 2011Alexandre 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 WakandaAlexandre Morgaut
 
ParisJS meetup 8 - june 2011
ParisJS meetup 8  - june 2011ParisJS meetup 8  - june 2011
ParisJS meetup 8 - june 2011Alexandre Morgaut
 

More from 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)
 
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
 
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
 
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
 
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
 
ParisJS meetup 8 - june 2011
ParisJS meetup 8  - june 2011ParisJS meetup 8  - june 2011
ParisJS meetup 8 - june 2011
 

Recently uploaded

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

State of the art - server side JavaScript - web-5 2012

  • 1. STATE OF THE ART SERVER-SIDE JAVASCRIPT Web-5 2012-04-05
  • 2. PRESENTATION Alexandre Morgaut Web Architect / Community Manager Creator of @NantesJS @amorgaut
  • 4. BIRTH • 1995 Brendan Eich Mocha > LiveScript > JavaScript (NS2) JavaScript creator • 1996 Microsoft JScript (IE4) NetScape Enterprise Server 2 aka LiveWire/iPlanet • 1997 ECMAScript 1 “DHTML” Windows IIS 3
  • 5. The “JavaScript” name is trademarked by Oracle (via Sun)
  • 6. MATURITY • 1998 - HTML/XML DOM, Sun/Mozilla Rhino • 1999 - ECMAScript 3, XMLHttpRequest, HTML 4 • 2000 - ActionScript, Helma Hop • 2001 - JSON, Apple JavaScript OSA • 2002 - JSLint, Mozilla “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
  • 7. SSJS: THE COME BACK • 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: THE COME BACK • 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. SSJS: THE COME BACK • 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
  • 10. SSJS: THE COME BACK • 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
  • 11. SSJS: THE COME BACK • 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
  • 16. DEVELOPMENT ENVIRONMENTS • Visual Studio • XCode • Eclipse • NetBeans • Wakanda Studio • Cloud9
  • 17. DEBUGGERS Client-side • Firebug * • Web Inspector * • Dragonfly Server-Side • Wakanda Debugger * • Cloud9 Debugger * * via standard protocols, some debugger can debug JS code running anywhere (server, desktop, mobile, ...)
  • 18. ECMASCRIPT 5 & NEXT • ES5.1 • ES.Next • Mode strict • Typed Array • Object freeze • Modules • Read only properties • Destructuring • Getter / setter • String templates • More native methods • ...
  • 19. TOOLS & STANDARDS • JSLint / JSHint / JavaScriptLint • JSON / JSON-Schema / JSONQuery / JSON-RPC • JSDoc / ScriptDoc • JSON View • JSMin / Packer / YUI Compressor / Dojo Shrinksafe • YUI Test / QUnit / Jasmine / Mocha / Selenium • NPM / CPM • RequireJS (r.js) • PhantomJS
  • 22. C+ C + SpiderMonkey webkit JavaScriptCore: JSC 3 JIT Compilers: SquirrelFish Extreme: SFX aka Nitro TraceMonkey, (JIT Compiler inside) JägerMonkey, IonMonkey Jav C+ a + Rhino V8 Interpreted or Compiled execution JIT Compiler: CrankShaft Nashorn? ? Trident: MSHTML Chakra -> Classic JScript, Managed JScript, & JScript.NET C+ ? + Tamarin Carakan JIT Compiler: NanoJIT -> ActionScript / “ECMAScript 4” Previously: Linear A, Linear B, Futhark
  • 23. CLIENT-SIDE SpiderMonkey JavaScriptCore Rhino V8 Tamarin Trident / Chakra Carakan / Futhark
  • 24. SERVER-SIDE SpiderMonkey JavaScriptCore Rhino V8 Trident / Chakra
  • 25. BENCHMARKS and what they worth....
  • 26. BROWSERS WAR II (MAY 2009) http://www.maximumpc.com/article/features/browser_brouhaha_your_maximum_guide_browsers_today_and_tomorrow?page=0,6
  • 27. PERSEVERE & JAVASCRIPTDB (APRIL 2009) http://www.sitepen.com/blog/2009/04/20/javascriptdb-perseveres-new-high-performance-storage-engine/
  • 28. 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
  • 29. RINGOJS VS NODEJS (SEPTEMBER 2010) http://hns.github.com/2010/09/21/benchmark.html
  • 30. 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/
  • 31. EMSCRIPTEN TESTS (OCTOBER 2011) !"#$%&'($)(*+,$-."/ 0 +((',--#+..(./(012&.(+03)4&1*0.%5$12,23 $ ! 677,84#$4#$4#$4#$4#$4#$4#$4#$4#$4#$4 ! 91:13$4#$4#$4#$4#$4#$4#$5#$5#$5#$6#$6 ! ;$1213$4#$4#$4#$5#$5#$5#$5#$5#$5#$7#$8 ! <1#=)223$4#$4#$5#$5#$5#$5#$6#$9#$: ! 6>3$4#$4#$5#$5#$5#$5#$6#$6#$7#$;#$45 ! << ! 91:1;$%&'(3$5#$5#$6#$9#$9#$;$$$$$$$$=">?$12,2#$*",$(&"",">,@ ! << ! ?@(+.*3$4#$6#$:#$6:#$75#$7A#$A4#$:4#$;7#$44B ! A/4@3$7#$:#$;#$54#$5:#$9B#$:A#$;4#$44B#$54A !"#$%&'()* http://syntensity.com/static/jsconf_eu_Emscripten_lo.pdf
  • 32. 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 4 http://www.page.ca/~wes/SpiderMonkey/Perf/sunspider_history.png
  • 34. INTEGRATION-ORIENTED • PHP (J2PA, V8JS) - using Rhino like with - Helma, Persevere, Narwhal, RingoJS, • C (GPSEE), Sun Phobos... - Oracle Nashorn? • Objective C (iMonkey), • Ruby (Johnson), - using JScript.NET like with - IronJS, Node.NET • Perl (JE), …
  • 35. COMMON JAVASCRIPT • Working Groups: - ECMA TC39 - W3C - WHATWG - CommonJS • Ubiquity beyond ECMAScript • HTML5 specification was also known as: “Web Applications 1.0” http://www.whatwg.org/specs/web-apps/current-work/ • Asynchronous & Synchronous APIs
  • 36. ASYNC. EVENT-BASED • Browser’s 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
  • 37. SINGLE & MULTI THREADING One global 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 Notes: - an event loop can generate some other threads which could use other cores - multi-thread architectures can run event loops in some of their threads
  • 38. DATA-DRIVEN • Document Store • Object Store • Key/value Store • Push engine See also: JSDB, JavaScriptDB
  • 40. COMMONJS • Modules • Packages • System • Binary • Stream • Unit-Testing • File • Promises • JSGI http://wiki.commonjs.org/wiki/CommonJS
  • 41. NODE ASYNC APIS • Buffer • Net • Streams • Events • OS • Timers • File • Process • ... http://nodejs.org/docs/v0.5.5/api/
  • 42. W3C / HTML5 / ES.NEXT & OTHER STANDARDS • Console • Typed Arrays • Blob, Blob URL • Web Sockets • DataView • Web Storage, Indexed DB • File / FileSystem • Web Workers • Modules • XHR 2 • Progress Events • DOM, E4X • Structured clones • Messages
  • 43. 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
  • 45. DEMANDWARE Many shops run on SSJS via Demandware’s commerce platform: London 2012 olympics shop Puma sneaker ... It uses Mozilla Rhino http://jsconf.eu/2010/speaker/server-side_javascript_the_unt.html
  • 46. NEOLANE Neolane, a desktop application written in C++, is used by clients but also by integrators & partners who need to be able to add their own code JavaScript was chosen because it is a well-known interpreted language The JavaScript engine is SpiderMonkey http://www.neolane.com
  • 47. MTV • Current deployments include • SpikeTV.com • Comedy Central Indecision, • MTV Networks will be rolling out MongoDB on many other major sites http://www.mongodb.org/display/DOCS/Production+Deployments
  • 48. VOXER Voxer is a next generation application for voice and text messaging “Node.js dramatically outperformed the previous solution we had written in Python” Matt Rainey, RebelVox CTO http://voxer.com/
  • 49. HAPPY MEEPLE Using APE project Synchronization between users Reuse JavaScript code on client and server to have the same intelligence when online and offline http://www.happymeeple.com
  • 50. FINANCIAL DATA REPORTS Using Wakanda Deployed on employees iOS, Android, & Blackberry smartphones Provides historical sales and invoices reports in PDF
  • 51. THANK YOU Come with us at San Jose, CA on October 26th: @jseverywhere http://jseverywhere.org Alexandre Morgaut - @amorgaut Call to speaker just started!!!

Editor's Notes

  1. When we started to define the Wakanda project, we did a lot of research and tests before concluding what would be the best language for it on the server and with which engine. We then decided to share with the others what we knew and what we learned. And here come this presentation.\n
  2. \n
  3. \n
  4. Brendan Eich creates JavaScript for NetScape.\n1 year after, he puts it on the server.\nEach time Microsoft followed just one year after.\nThe Server-Side JavaScript is 15 years old.\nBackend developers were not much convinced and mostly choose to ignore it.\n
  5. \n
  6. JavaScript long growing maturity.\nMozilla Rhino and Microsoft IIS were the only ones running JavaScript/JScript on the server.\nJavaScript finally had respected standards, development tools, libraries, frameworks, richer APIs\n\n
  7. Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side &amp; client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
  8. Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side &amp; client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
  9. Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side &amp; client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
  10. Aptana was well respected for its support of JavaScript and JS frameworks in its Studio.\nWhen they tried to launch their Cloud solution with JS on the server via Jaxer, lot of JS experts were enthusiastic. John Resig immediately shared its own experiences on its blog.\nIn 2008, first presentation of Wakanda at The Ajax Experience ;-)\nA group called ServerJS were created from the Mozilla Developper Tools community with Kevin Dangoor.\nIt became more independent and choose to be renamed CommonJS to create standard server-side &amp; client-side JS APIs.\nNode.js proposed an Async Event-Loop model on the server via the Google V8 JS engine. V8 had good reputation, and the concept looked quite revolutionary to JS developers.\nThe Long time running Helma choose to rename Helma NG for a new brand: RingoJS\n
  11. \n
  12. \n
  13. Many User groups, Many Conferences, Many Blogs &amp; books, Large documentation, Language also used by developers from other communities\n
  14. Most popular language on GitHub\nMany libraries and Frameworks with sometime big Companies behind (Yahoo!, Microsoft, Google, IBM, ...)\n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. Spidermonkey now looks more C++ now but its API are still in C\nComplex Webkit naming\nTrident: Windows only\n
  22. \n
  23. SpiderMonkey: Narwhal, CouchDB, MongoDB, JSDB, APE, GPSEE, SpiderNode, ...\nJavaScriptCore: Narwhal, Wakanda\nV8: Narwhal, v8cgi, Akshell, Node.js\nRhino: Narwhal, Helma / RingoJS, AppJet, Persevere, Phobos, RhinodeII, ...\nTrident / Chackra: ASP, WSH, .NET, IronJS, Node.NET\n
  24. \n
  25. The growth of WebApps with Ajax Frameworks requires more powerful engines \n-&gt; Browsers War II.\n
  26. Ici, on compare JS avec d&amp;#x2019;autres technologies : Persevere et son js faisaient plus de req/s que php par exemple\n
  27. \n
  28. \n
  29. The core engines running on the server have finally reach acceptable performances, with quite comparable results.\nThey all actively continue their own performance enhancement.\nECMAScript 5 in strict mode also help to provide better internal optimizations.\n \n
  30. \n
  31. Juste en travaillant sur le moteur lui m&amp;#xEA;me a fait d&amp;#x2019;&amp;#xE9;normes gains jusque la 185, puis en ajoutant leur JIT, hop, ils divisent les temps d&amp;#x2019;ex&amp;#xE9;c. par 4.\n\n&amp;#x201C;les autres ont fait pareil dans le m&amp;#xEA;me temps etc...&amp;#x201D; (next slide)\n
  32. \n
  33. These solutions were mostly the ones which made JavaScript survive on the server\nAll missing stuff were covered by the environment in which they are running.\nIt&amp;#x2019;s then easy to make it&amp;#x2019;s application platform dependent which often what front-end JavaScript developers want to prevent.\n-&gt; so then came the work on standards for the &amp;#x201C;missing stuff&amp;#x201D; ;-)\n
  34. &amp;#x201C;JavaScript&amp;#x201D; is available in all modern mobile phones, tablets, Internet box, and even some remote control and TVs.\n- It is quite everywhere, but, back on the server, the JS engines only provide the Core of the language, mostly as defined by ECMAScript with ongoing features. \n- Ajax, Web 2.0, &amp; HTML5 provided a very large &amp; active open source community (first community on Github)\n- At least 4 important Working Groups are doing their best to make it better and better.\n- Common JavaScript oriented implementations want to enhance interoperability between each of them, hopefully more quickly than how it came on client-side.\n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \nNPM: Author ?\nCPM: by Kris Zyp\nPINF: by Christoph Dorn\n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n