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
Alexandre Morgaut
October 08, 2011
Technology
160
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
AIチャット検索改善の3週間
kworkdev
PRO
2
160
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
730
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
1
340
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.1k
水を運ぶ人としてのリーダーシップ
izumii19
3
720
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
750
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
450
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
180
GitHub Copilot app最速の発信の裏側
tomokusaba
1
230
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
210
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
230
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
150
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
The agentic SEO stack - context over prompts
schlessera
0
820
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
210
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
ラッコキーワード サービス紹介資料
rakko
1
3.7M
Building the Perfect Custom Keyboard
takai
2
800
Embracing the Ebb and Flow
colly
88
5.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
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)