Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
State of the art: Server Side JavaScript - WebW...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
170
Other Decks in Technology
See All in Technology
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.5k
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
1
820
Azure App Service / Container Apps の組み込み認証
kuniteru
0
140
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
0
760
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
9
1.8k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.3k
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
540
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
230
When Does a Local Qwen Start to Break
morshoto
0
110
V8コントリビュート超入門
riyaamemiya
0
110
少人数データチームのDevin活用実践事例
runandy16
2
290
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
320
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
410
Raft: Consensus for Rubyists
vanstee
141
7.7k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
270
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Faster Mobile Websites
deanohume
310
32k
How GitHub (no longer) Works
holman
316
150k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
500
Joys of Absence: A Defence of Solitary Play
codingconduct
1
460
Visualization
eitanlees
152
17k
Unsuck your backbone
ammeep
672
58k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
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)