Seriál Do hlubin implementací JavaScriptu
Seriál se zabírá problematikou implementací jazyka JavaScript. Představí některé obecné problémy implementací dynamických jazyků a následně se soustředí na jednotlivé implementace JavaScriptu v prohlížečích.
Javascriptové novinky: souboj o nejrychlejší engine pokračuje
Od vydání posledního posledního dílu seriálu o implementacích JavaScriptu uplynul měsíc a půl nabitý zajímavými událostmi. Co nového přinese nový javascriptový engine Opery? Jak je na tom s rychlostí JavaScriptu nová betaverze Safari? A prosadí se V8 na serveru? Pojďme se na tyto otázky podívat.
Velký test rychlosti JavaScriptu v prohlížečích
Dnešním článkem uzavíráme náš seriál o implementacích JavaScriptu - otestováním jejich výkonu ve třech nejčastěji používaných sadách testů: SunSpider, Dromaeo a V8 Benchmark Suite. Prozkoumáme přitom jak stabilní, tak vývojové verze všech důležitých prohlížečů. Chcete vědět, kdo je vítěz?
Rhino: na rozhraní JavaScriptu a Javy
V předchozích dílech našeho seriálu jsme si popisovali implementace JavaScriptu uvnitř webových prohlížečů. Dnes jejich svět opustíme a podíváme se na Rhino, implementaci JavaScriptu v Javě. Představíme si její interpret a kompilátor a především si popíšeme, jak JavaScript umí díky Rhinu spolupracovat s Javou.
V8: JavaScript uvnitř Google Chrome
Dnes nahlédneme pod pokličku V8 - interpretu JavaScriptu uvnitř Google Chrome. Podíváme se na tři jeho klíčové vlastnosti - kompilaci do nativního kódu, skryté třídy a garbage collector. Na závěr si ukážeme, jak V8 implementuje JavaScript z velké části v JavaScriptu samém.
SpiderMonkey: rychlá kompilace JavaScriptu do nativního kódu
V předchozím dílu našeho seriálu jsme si představili SpiderMonkey, interpret JavaScriptu ve Firefoxu. Dnes si povíme o jeho vývojové verzi TraceMonkey, která zvládá kompilaci do nativního kódu pomocí nové techniky zvané trace trees. Vyzkoušet si ji můžete v betaverzích Firefoxu 3.1.
SpiderMonkey: zpracování JavaScriptu ve Firefoxu
Tímto dílem seriálu o interpretech JavaScriptu zahajujeme část věnovanou interpretu SpiderMonkey. Dnes si ho představíme a popíšeme si, jak v něm probíhá zpracování javascriptového kódu. Pozastavíme se také nad jeho reprezentací hodnot a optimalizacemi, které umožňují efektivní práci s řetězci a poli.
SquirrelFish: regulární výrazy, vlastnosti objektů a budoucnost
V dnešní části seriálu dokončíme povídání o interpretu SquirrelFish. Podíváme se na to, jakým způsobem urychluje práci s regulárními výrazy a jak optimalizuje přístup k vlastnostem objektů. Článek zakončíme popisem některých optimalizací, které jeho vývojáři chtějí implementovat v blízké budoucnosti.
SquirrelFish: optimalizace vykonávání instrukcí a nativní kód
Dnes se budeme věnovat tomu, jak urychlit vykonávání instrukcí bajtkódu JavaScriptu ve virtuálním stroji SquirrelFish. Představíme si přitom techniku direct threading, která zrychluje dispatching instrukcí, a další optimalizace. Na závěr článku se podíváme, jak je na tom SquirrelFish s generováním nativního kódu.
SquirrelFish: reprezentace hodnot JavaScriptu a virtuální stroj
Tímto dílem začínáme část seriálu o implementacích JavaScriptu, která se bude věnovat vnitřnostem konkrétních implementací. Začneme s popisem vybraných částí interpretu SquirrelFish - podíváme se, jak se v něm reprezentují hodnoty javascriptových proměnných a jak je navržen jeho virtuální stroj a bajtkód.
Do hlubin implementací JavaScriptu: 5. díl - implementace mimo prohlížeče
V tomto dílu dokončíme přehled implementací JavaScriptu a podíváme se, kde všude kromě webových prohlížečů se dá tento jazyk najít. JavaScript můžeme totiž používat také v Javě, Flashi, .NETu, ale třeba i na webovém serveru Apache, v Emacsu a v několika jiných nečekaných prostředích.
Do hlubin implementací JavaScriptu: 4. díl - implementace v prohlížečích
Dnešním dílem opouštíme teorii a začínáme se věnovat konkrétním implementacím JavaScriptu. Dnes stručně projdeme ty, které jsou k nalezení uvnitř webových prohlížečů Internet Explorer, Firefox, Safari, Opera, Google Chrome a několika dalších. Ukážeme si, co je pro ně charakteristické.
Do hlubin implementací JavaScriptu: 3. díl - výkonnostně nepříjemné konstrukce
V dnešním dílu seriálu zakončíme obecné povídání o rychlosti interpretace JavaScriptu. Podíváme se na funkci eval, dále na to, jak výkonnostně nepříjemná může být možnost zjistit informace o parametrech funkcí na zásobníku a také na příkaz with. Na závěr si stručně povíme, jak jsou interprety obvykle implementované.
Do hlubin implementací JavaScriptu: 2. díl - dynamičnost a výkon
Ve druhém dílu seriálu o implementacích JavaScriptu se podíváme na to, proč není snadné JavaScript rychle interpretovat, a které vlastnosti tohoto jazyka mají největší negativní vliv na jeho výkon. Zaměříme se přitom na problémy způsobené jeho dynamičností.
Do hlubin implementací JavaScriptu: 1. díl - úvod
Tento článek otevírá nový seriál, který bude věnován implementacím JavaScriptu. Postupně si v něm představíme nejdůležitější současné interprety tohoto jazyka (především ty obsažené ve webových prohlížečích) a u některých vybraných se podrobněji podíváme, jak vypadají uvnitř. Nejvíc nás přitom bude zajímat, jaké techniky se v nich používají pro optimalizaci a urychlení spouštěného kódu.