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
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
290
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
490
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
300
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
500
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
610
シンガポールで登壇してきます
yama3133
0
260
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
310
AICoEでAIネイティブ組織への進化
yukiogawa
0
200
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
140
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
670
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
1
120
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
270
For a Future-Friendly Web
brad_frost
183
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
A designer walks into a library…
pauljervisheath
211
24k
Navigating Team Friction
lara
192
16k
Product Roadmaps are Hard
iamctodd
55
12k
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)