Ez a lap egy ellenőrzött változata
AJavaScript-motor olyan speciálisszoftver, amiértelmezi és futtatja aJavaScript (vagyECMAScript) kódot. Bár számos más felhasználása is létezik a JavaScript-motoroknak, leggyakrabban mégiswebböngészőkben használatosak.[1][2][2]
A második, 2008-2009-esböngészőháború előtt, a JavaScript-motor (másképpenJavaScript-értelmező vagyJavaScript-implementáció) egyszerűen egy interpreter volt, ami beolvasta és sorról sorra végrehajtotta aJavaScriptforráskódot.
Az első JavaScript-motort aNetscape Communications Corporationnél dolgozóBrendan Eich kódolta aNetscape Navigatorwebböngésző számára. ASpiderMonkey kódnevű motortC nyelven implementálta. Azóta (a JavaScript 1.5-ben) frissítették, hogy megfeleljen az ECMA-262 Edition 3 specifikációinak. ARhino motort szintén egy Netscape-dolgozó, Norris Boyd hozta létre,Javában. Ahogy a SpiderMonkey, a Rhino is megfelel az ECMA-262 Edition 3-nak. A technológia felhasználói közé tartozik az Apple Safari 4 Nitro motorja, a Google ChromeV8 JavaScript-motorja és a Mozilla Firefox 3.5-ben találhatóTraceMonkey.
A JavaScript messze leggyakoribb gazdakörnyezete a webböngésző. A böngészők általában a nyilvánosAPI-t használják ún. „host object”-ek (a befogadó környezet által nyújtott objektumok) létrehozására, amik felelnek aDOM-ok JavaScriptbe való tükrözéséért.
A JavaScript-futtatómotorok másik gyakori alkalmazási környezete awebkiszolgáló. AJavaScript webszerver aHTTP-kérések és -válaszok objektumait reprezentáló host object-eket hozzáférhetővé teszi egy JavaScript nyelvű program számára, ami ezek alapján dinamikusan weboldalakat generál. AMicrosoftIIS-ben használtASP-technológiája lehetővé teszi a szerveroldali kód megírásátVB Script és JScript (a Microsoft JavaScript-implementációja) nyelven egyaránt. A Jaxer egy teljesen JavaScriptben megírt webszerver; ennek az az előnye, hogy ugyanaz a kód futhat szerver- és kliensoldalon.
„…a korábban színfalak mögötti, JavaScriptnek nevezett programozási technológia egyszerre láthatóvá válik… ”
– -CNET[2]
A tipikus, nagyobb böngészők rendelkeznek egygrafikus motorral és egy attól független JavaScript-motorral, ami könnyebbé teszi a tesztelést és a más projektben való felhasználását. Ilyen kombinációk a Carakan és aPresto, a Nitro és aWebKit; aSpiderMonkey és aGecko; aKJS és aKHTML; a Rhinónak alapértelmezésben nincs megjelenítőmotorja. Más kombinációk is elképzelhetők, például aGoogle Chrome-ban aV8-at használják együtt a WebKittel. A JavaScript-motor a fejlesztőknek hozzáférést enged a webböngésző vezérléséhez szükséges funkciókhoz (hálózat, DOM-kezelés, külső események,HTML5 videó, canvas- és adattárolás).
ASunspider egyJavaScript-sebességteszt, ami több mint egy tucat, a JavaScript nyelv különböző aspektusaira koncentráló tesztben értékeli a JavaScript-motorok sebességét. A SunSpider a mérés során nem használ az alapfunkcionalitáson kívüli képességeket (nincs benneHTML-,CSS- vagy hálózatkezelés).
Elindult egy versenyfutás a böngészők fejlesztői között, hogy ki tudja kifejleszteni a leggyorsabb JavaScript-motorokat. 2008-ban aGoogle Chrome-ot dicsérték JavaScript-teljesítménye miatt, de hamarosan egyes más böngészők JavaScript-motorjai még gyorsabbak lettek. Később a Google Chrome visszanyerte első helyét. A Chrome fő erősségei az általános webmegjelenítés és a JavaScript-feldolgozás sebessége, melyekben a többi nagy böngészővel szembeni elsőségét több weboldal egymástól függetlenül igazolta.[3][4][5]
A WebKitSquirrelfish, illetve a MozillaTraceMonkey JavaScript-virtuálisgépeinek megjelenésével a Chrome JavaScript-futtatási teljesítménye lassabbnak bizonyult.[6][7][8][9] A Google válasza erre a dán fejlesztésűV8 JavaScript-motor volt, ami a Google Chrome 2-ben nagy löketet adott a JavaScript-teljesítménynek.
A WebKit fejlesztői csapata 2008. június 2-án jelentette be a SquirrelFisht,[10] az akkor új JavaScript-motort, ami jelentősen megdobta a Safari böngésző teljesítményét.[11] A fejlesztők számára 2008. június 11-én átadott motor a Safari 4 új funkciói közé tartozott; a JavaScript-motor végleges verziója a Nitro nevet kapta.
2009 januárjában az akkor SquirrelFish Extreme (SFX) néven futó motor, ami korábban csak azx86 architektúrát támogatta, azApple Inc. minden platformtesztjét sikeresen lefuttatta, így aMac OS Xx86-64-architektúráin is engedélyezésre került.[12]
A 2009. június 30-án megjelentFirefox 3.5-be bekerült optimalizációs technika „egyes esetekben 20-40-szeres teljesítményjavulást” ígért aFirefox 3-hoz képest.[13]
2010 elején a norvégOpera böngészőben lecserélték az öregedő Futhark motort a korai tesztekben 2,5-ször gyorsabbnak bizonyuló Carakan-ra.[2] Versenyben volt még ekkortájt az Apple Safarijában található Nitro (korábban SquirrelFish néven futott) és a Firefox új JägerMonkey engine-je („a Nitro és a korábbi TraceMonkey Engine keresztgyereke”).[1] A Microsoft lemaradt, böngészője az elterjedtebb böngészők közül a leglassabb volt, külön JavaScript-motor nélkül; bár 2010 közepére az akkor még ki nem adottInternet Explorer 9Chakra motorja ígéretesnek látszott.[1] A JägerMonkey nyilvános tesztelése 2010 nyarán kezdődött aFirefox 4 bétaverziójában.[14] A szintén 2010 nyarán megjelentSafari 5 30%-ot gyorsult a Nitro motort használóSafari 4-hez képest.[15]
A JavaScript azECMAScript egy dialektusa, amit számos alkalmazás támogat, különösen awebböngészők. Az egyes dialektusokban időnként kiegészítik a nyelvet, astandard könyvtárat és a kapcsolódóAPI-kat, mint aW3C által meghatározottDOM. Ez azt is jelenti, hogy adott dialektusban megírt alkalmazásinkompatibilis lehet egy másikkal, ha nem úgy írták meg az alkalmazásokat, hogy a támogatott funkciók és API-k közös részhalmazára szorítkozzanak.
Meg kell különböztetni a dialektusokat és az implementációkat. A nyelv egy dialektusa annak szignifikáns változatát jelenti, míg egy nyelv/dialektus implementációja az adott nyelven/dialektusban írt program futtatására képes.
| Alkalmazás | Dialektus és legutolsó verzió | ECMAScript-kiadás |
|---|---|---|
| Google Chrome,V8 JavaScript-motor | JavaScript | ECMA-262, edition 3 |
| Mozilla Firefox,Gecko böngészőmotor,SpiderMonkey ésRhino | JavaScript 1.8.1 | ECMA-262, edition 3 |
| Opera | ECMAScript némiJavaScript 1.5- ésJScript-kiegészítéssel[17] | ECMA-262, edition 3 |
| KHTML-böngészőmotor, KDEKonqueror és AppleSafari | JavaScript 1.5 | ECMA-262, edition 3 |
| Adobe Acrobat | JavaScript 1.5 | ECMA-262, edition 3 |
| OpenLaszlo Platform | JavaScript 1.4 | ECMA-262, edition 3 |
| Max/MSP | JavaScript 1.5 | ECMA-262, edition 3 |
| ANT Galio 3 | JavaScript 1.5RMAI-kiterjesztésekkel | ECMA-262, edition 3 |