Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
State of the art: Server Side JavaScript - WebW...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Alexandre Morgaut
October 08, 2011
Technology
170
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
State of the art: Server Side JavaScript - WebWorkersCamp
Alexandre Morgaut
October 08, 2011
More Decks by Alexandre Morgaut
See All by Alexandre Morgaut
State of the art: Server Side JavaScript - @ParisJS #10
alexandremorgaut
1
180
Other Decks in Technology
See All in Technology
あけおめLINE 傾向とその対策
nasa9084
0
310
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
地方移住と都心キャリアの両立は「金・時間・人」のリソースをフル活用すれば実現できる!〜Snowflake女子会 vol.8
snowwmn0824
0
110
絵ではじめるKubernetesセキュリティ
aoi1
5
710
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
480
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
5
710
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
1
3.2k
AI de Idea
kawaguti
PRO
2
130
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
31k
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
160
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
150
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
My Coaching Mixtape
mlcsv
0
320
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The SEO Collaboration Effect
kristinabergwall1
1
570
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Docker and Python
trallard
47
4.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
RailsConf 2023
tenderlove
30
1.6k
Transcript
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
http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions 60+ EXISTING SOLUTIONS
ENGINES
SpiderMonkey TraceMonkey (JIT) JägerMonkey (JIT) IonMonkey (JIT) V8 webkit JavaScriptCore:
JSC SquirrelFish Extreme: SFX (JIT) Nitro Trident Chakra Tamarin Carakan Futhark Rhino C C++ C++ Java C++ C++ C++
CLIENT-SIDE SpiderMonkey V8 JavaScriptCore Trident / Chakra Tamarin Carakan /
Futhark Rhino
SpiderMonkey Narwhal CouchDB, MongoDB APE, GPSEE, SpiderNode . . .
V8 JavaScriptCore Narwhal Wakanda Rhino Narwhal Helma / RingoJS, AppJet Persevere, Phobos, RhiNodeII . . . Narwhal Akshell Node.js Trident / Chakra IronJS Node.NET SERVER-SIDE
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) http://four.livejournal.com/1019177.html 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
RINGOJS VS NODEJS (SEPTEMBER 2010) http://hns.github.com/2010/09/21/benchmark.html
SUNSPIDER 0.9.1 (AUGUST 2011) http://expansive-derivation.ossreleasefeed.com/2011/08/javascript-performance-test-results-with-sunspider/ 7 8 6 5 4
3 2 1
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 •
Low memory usage • Potentially handle lot of requests • Cooperative • Shared context • Use mostly one core MULTI • Vertical scalability (multi-core) • Thread-safety for concurrent access • Preemptive: Parallel code execution • Allow Synchronous APIs • Uses easily all available cores
DATABASE-DRIVEN • Document Store - CouchDB, MongoDB • Object Store
- Wakanda • Push Store - APE
APIS
COMMONJS • Modules • Packages • Promises • System •
Unit-Testing • Binary • File • JSGI • Stream http://wiki.commonjs.org/wiki/CommonJS
NODE ASYNC APIS • Buffer • Events • File •
Net • OS • Process • Streams • Timers • . . . http://nodejs.org/docs/v0.5.5/api/
W3C / HTML5 & OTHER STANDARDS • Console • Blob,
Blob URL* • DataView* • File / FileSystem • Modules* • Progress Events • Structured clones • Typed Arrays* • Web Sockets • Web Storage • Web Workers • 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 @amorgaut @thibarg
@wakanday 4d.com Wakanda.org Wakanday.org See us at Wakanday aka JS.everywhere(Boston, October, 15)