A JavaScript motor egy speciális program , amely a JavaScriptet dolgozza fel, különösen a böngészőkben .
2008-2009-ig A JavaScript-motort (más néven JavaScript értelmezőt és JavaScript implementációt ) olyan értelmezőként valósították meg, amely beolvassa és végrehajtja a JavaScript -forráskódot .
Az első JavaScript motort Brendan Eich készítette a Netscape Communications -től a Netscape Navigator böngészőhöz . A motor kódneve SpiderMonkey volt, és C programozási nyelven valósították meg . Ezt követően frissítették, hogy kompatibilis legyen az ECMA-262 specifikáció harmadik kiadásával. A Rhino JavaScript motort elsősorban Norris Boyd írta ( szintén a Netscape-től), és a JavaScript implementációja a Java programozási nyelven . A SpiderMonkey-hoz hasonlóan a Rhino is kompatibilis az ECMA-262 specifikáció harmadik kiadásával. Az Apple Safari Nitro-ja is kompatibilis ezzel a specifikációval , V8 a Google Chrome -tól és TraceMonkey a Mozilla Firefox 3.5-től.
A leggyakoribb JavaScript-végrehajtási környezet a böngésző. Általános szabály, hogy a böngészők nyilvános API -t biztosítanak a futásidejű objektumok ( angolul hostobjektumok ) létrehozásához, amelyek lehetővé teszik a JavaScript DOM -mal való együttműködését.
Egy másik gyakori JavaScript-végrehajtási környezet a webszerver . A JavaScript-kompatibilis webszerver HTTP-kérést és HTTP-választ képviselő futásidejű objektumokat tesz közzé . Ezen objektumok manipulálásával egy JavaScript program dinamikusan tud oldalakat generálni. Például az IIS webszerver ASP technológiája lehetővé teszi a kiszolgálórész megvalósítását, beleértve a JScript programozási nyelvet is (a Microsoft JavaScript implementációja). Egy másik példa a Jaxer webszerver amely szerverekhez használt hagyományos objektumok mellett a böngészők számára hagyományos objektumokat is biztosít Ennek a megközelítésnek az az előnye, hogy ugyanazt a kódot meg lehet osztani a szerver és a kliens között.
Alapvető JavaScript motorok:
A Firefox 3.5 (megjelenés: 2009. június 30.) olyan optimalizálási technikát használ, amely "néhány esetben 20-40-szeres teljesítményjavítást javasol" [ 2] .
2008. június 2-án a WebKit fejlesztőcsapata bemutatta a SquirrelFish [3] nevű új JavaScript-motort, amely jelentősen javította a Safari [4] szkriptek értelmezésének sebességét . Ez a motor volt az egyik újdonság a Safari 4-ben. A tesztverzió 2008. június 11-én jelent meg; a motort végül Nitro névre keresztelték.
Azóta megkezdődött a böngészőfejlesztők versenyfutása a JavaScript-motorok sebességének növeléséért. 2008 óta a Google Chrome tartja a pálmát : ezt számos független kísérlet is megerősíti [5] [6] [7] . A WebKit fejlesztői által a Squirrelfish Extreme és a Mozilla Tracemonkey megjelenésével a JavaScript teljesítményét a Google Chrome-ban már nem tartják a legjobbnak [8] [9] [10] [11] . A Google Danish azonban kifejlesztett egy V8 JavaScript motort , amely jelentősen javította a JavaScript teljesítményt a Google Chrome 2-ben.
Általában egy böngészőben van egy böngésző - megjelenítő motor és egy JavaScript motor, ami megkönnyíti a tesztelést, újrafelhasználást vagy más projektekben való felhasználást. Például a Caracan a Presto-val, a Nitro a WebKit-tel, a SpiderMonkey a Gecko-val, a KJS a KHTML-lel, a Rhino alapértelmezés szerint egyik böngészőmotornál sem. Néha más kombinációk is lehetségesek, például V8 a WebKittel a Google Chrome-ban. A JavaScript motor segítségével a fejlesztők hozzáférhetnek a webböngésző vezérléséhez szükséges funkciókhoz (hálózat, DOM, külső események, HTML5 videó, vászon, tárhely).
A Sunspider teljesítmény-tesztelő eszköze JavaScript-motorok teljesítményét több mint tucatnyi tesztben mérik, amelyek mindegyike a JavaScript nyelv más-más részére összpontosít. A Sunspider nem olyan funkciók tesztelésére készült, amelyek a számítástechnikán kívül mással kapcsolatosak (HTML, CSS, hálózat).
A JavaScript az ECMAScript dialektusa , amelyet számos alkalmazás, különösen böngészők támogatnak. A dialektusok néha nyelvi kiterjesztéseket vagy szabványos könyvtárat és megfelelő API -kat , például a W3C dokumentumobjektum-modelljét tartalmaznak . Ez azt jelenti, hogy az egyik dialektusra írt alkalmazások nem feltétlenül kompatibilisek másokkal, hacsak nem osztják meg a támogatott szolgáltatások és API-k közös részhalmazát.
Nincs egyértelmű különbség a dialektus és a megvalósítás között. Egy nyelv dialektusa egy nyelv változata jelentős tulajdonságokkal, míg a nyelvi/dialektus implementáció az adott dialektusban írt programot hajtja végre.
Alkalmazás | Dialektus és legújabb verzió | ECMAScript kiadás |
---|---|---|
Google Chrome , V8 motor | JavaScript | ECMA-262 5. változat |
Mozilla Firefox , Gecko , SpiderMonkey és Rhino | JavaScript 1.8.1 | ECMA-262 5. változat |
Opera | ECMAScript néhány JavaScript 1.5 és JScript kiterjesztéssel [12] |
ECMA-262 Revízió 5.1 |
KHTML elrendezési motor, Konqueror a KDE-től és Safari az Apple-től | JavaScript 1.5 | ECMA-262 3. változat |
Adobe Acrobat | JavaScript 1.5 | ECMA-262 3. változat |
OpenLaszlo Platform | JavaScript 1.4 | ECMA-262 3. változat |
MSP_ | JavaScript 1.5 | ECMA-262 3. változat |
Galio | JavaScript 1.5 RMAI kiterjesztéssel | ECMA-262 3. változat |
JavaScript | |
---|---|
Ötletek | |
Fordítók | |
Motorok | |
Könyvtárak és keretrendszerek | |
Szerkesztők | |
Eszközök |
|
Kapcsolódó technológiák | |
Emberek | |
Kategória |
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialektusok | |||||||||||||
Motorok ( összehasonlítás ) | |||||||||||||
Keretrendszerek , könyvtárak |
| ||||||||||||
Emberek | |||||||||||||
Egyéb |