JavaScript engine je specializovaný program , který zpracovává JavaScript , zejména v prohlížečích .
Do roku 2008-2009 JavaScript engine (také nazývaný JavaScript interpret a JavaScript implementace ) byl implementován jako interpret , který čte a spouští zdrojový kód JavaScriptu .
První JavaScript engine vytvořil Brendan Eich z Netscape Communications pro prohlížeč Netscape Navigator . Motor dostal kódové označení SpiderMonkey a byl implementován v programovacím jazyce C. Následně byla aktualizována, aby byla kompatibilní s třetím vydáním specifikace ECMA-262. Rhino JavaScript engine byl napsán primárně Norrisem Boydem ( také z Netscape) a je implementací JavaScriptu v programovacím jazyce Java . Stejně jako SpiderMonkey je Rhino kompatibilní se třetím vydáním specifikace ECMA-262. Nitro od Apple Safari je také kompatibilní s touto specifikací, V8 z Google Chrome a TraceMonkey z Mozilla Firefox 3.5.
Nejběžnějším prostředím pro provádění JavaScriptu je prohlížeč. Prohlížeče zpravidla poskytují veřejné API pro vytváření runtime objektů ( anglicky host objects ), které poskytují možnost pracovat s DOM v JavaScriptu.
Dalším běžným prostředím pro provádění JavaScriptu je webový server . Webový server s povoleným JavaScriptem zpřístupňuje runtime objekty představující požadavek HTTP a odpověď HTTP. Manipulací s těmito objekty může program JavaScript dynamicky generovat stránky. Například technologie ASP pro webový server IIS umožňuje implementovat serverovou část, včetně programovacího jazyka JScript (implementace JavaScriptu od společnosti Microsoft). Dalším příkladem je webový server Jaxer kromě objektů tradičních pro servery i objekty tradiční pro prohlížeče. Výhodou tohoto přístupu je, že stejný kód může být sdílen mezi serverem a klientem.
Jádro JavaScript Engines:
Firefox 3.5 (vydán 30. června 2009) používá optimalizační techniku, která navrhuje "v některých případech 20-40x zlepšení výkonu" [ 2] .
Dne 2. června 2008 představil vývojový tým WebKit SquirrelFish [3] , nový JavaScript engine, který výrazně zlepšil rychlost, jakou Safari [4] interpretuje skripty . Tento engine byl jednou z nových funkcí v Safari 4. Testovací verze se objevila 11. června 2008; motor byl nakonec přejmenován na Nitro.
Od té doby začal závod vývojářů prohlížečů ve zvýšení rychlosti JavaScriptových enginů. Od roku 2008 v něm Google Chrome drží dlaň : to je potvrzeno mnoha nezávislými experimenty [5] [6] [7] . S příchodem Squirrelfish Extreme od vývojářů WebKit a Tracemonkey od Mozilly již není výkon JavaScriptu v Google Chrome považován za nejlepší [8] [9] [10] [11] . Google Danish však vyvinul V8 JavaScript engine s výrazně lepším výkonem JavaScriptu v Google Chrome 2.
Prohlížeč má obvykle vykreslovací modul prohlížeče a modul JavaScript, což usnadňuje testování, opětovné použití nebo použití v jiných projektech. Například Caracan se používá s Presto, Nitro s WebKit, SpiderMonkey s Gecko, KJS s KHTML, Rhino se standardně nepoužívá s žádným z enginů prohlížeče. Někdy jsou možné i jiné kombinace, například V8 s WebKit v Google Chrome. JavaScript engine umožňuje vývojářům přístup k funkcionalitám (sítě, DOM, externí události, HTML5 video, plátno, úložiště) potřebné k ovládání webového prohlížeče.
Sunspider je testování výkonu JavaScriptových motorů ve více než tuctu testů, z nichž každý je zaměřen na jinou část jazyka JavaScript. Sunspider není určen k testování funkcí, které souvisejí s něčím jiným než s výpočetní technikou (HTML, CSS, sítě).
JavaScript je dialekt ECMAScript podporovaný mnoha aplikacemi, zejména prohlížeči. Dialekty někdy zahrnují jazyková rozšíření nebo standardní knihovnu a odpovídající API , jako je dokumentový objektový model W3C . To znamená, že aplikace napsané pro jeden dialekt nemusí být kompatibilní s ostatními, pokud nesdílejí společnou podmnožinu podporovaných funkcí a rozhraní API.
Mezi dialektem a implementací není jasný rozdíl. Dialekt jazyka je variací jazyka s významnými rysy, zatímco implementace jazyka/dialektu spouští program napsaný v tomto dialektu.
aplikace | Dialekt a nejnovější verze | Edice ECMAScript |
---|---|---|
Google Chrome , motor V8 | JavaScript | ECMA-262 Revize 5 |
Mozilla Firefox , Gecko , SpiderMonkey a Rhino | JavaScript 1.8.1 | ECMA-262 Revize 5 |
Opera | ECMAScript s některými rozšířeními JavaScript 1.5 a JScript [12] |
ECMA-262 Revize 5.1 |
KHTML layout engine, Konqueror z KDE a Safari od Apple | JavaScript 1.5 | ECMA-262 Revize 3 |
Adobe Acrobat | JavaScript 1.5 | ECMA-262 Revize 3 |
Platforma OpenLaszlo | JavaScript 1.4 | ECMA-262 Revize 3 |
MSP | JavaScript 1.5 | ECMA-262 Revize 3 |
Galio | JavaScript 1.5 s rozšířeními RMAI | ECMA-262 Revize 3 |
JavaScript | |
---|---|
Nápady | |
Kompilátory | |
Motory | |
Knihovny a rámce | |
redaktoři | |
Nástroje |
|
Související technologie | |
Lidé | |
Kategorie |
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialekty |
| ||||||||||||
Motory ( srovnání ) |
| ||||||||||||
Rámce , knihovny |
| ||||||||||||
Lidé | |||||||||||||
jiný |
|