JavaScript:

A JavaScript-motor

Olyan speciális szoftver, ami értelmezi és futtatja a JavaScript (vagy ECMAScript) 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

 

Története

 

A második, 2008-2009-es böngészőháború előtt, a JavaScript-motor (másképpen JavaScript-értelmező vagy JavaScript-implementáció) egyszerűen egy interpreter volt, ami beolvasta és sorról sorra végrehajtotta a JavaScript forráskódot.

Az első JavaScript-motort a Netscape Communications Corporationnél dolgozó Brendan Eichkódolta a Netscape Navigator webböngésző számára. A SpiderMonkey kódnevű motort C nyelven implementálta. Azóta (a JavaScript 1.5-ben) frissítették, hogy megfeleljen az ECMA-262 Edition 3 specifikációinak. A Rhino 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 Chrome V8 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ános API-t használják ún. „host object”-ek (a befogadó környezet által nyújtott objektumok) létrehozására, amik felelnek a DOM-ok JavaScriptbe való tükrözéséért.

A JavaScript-futtatómotorok másik gyakori alkalmazási környezete a webkiszolgáló. AJavaScript webszerver a HTTP-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. A Microsoft IIS-ben használt ASP-technológiája lehetővé teszi a szerveroldali kód megírását VB 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 teljesítmény fejlődése

 

„…a korábban színfalak mögötti, JavaScriptnek nevezett programozási technológia egyszerre láthatóvá válik… ”

A tipikus, nagyobb böngészők rendelkeznek egy grafikus 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 a Presto, a Nitro és a WebKit; a SpiderMonkey és a Gecko; aKJS és a KHTML; a Rhinónak alapértelmezésben nincs megjelenítőmotorja. Más kombinációk is elképzelhetők, például a Google Chrome-ban a V8-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).

A Sunspider egy JavaScript-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).

 

A JavaScript-motorok versenye: 2008 és 2009

 

Elindult egy versenyfutás a böngészők fejlesztői között, hogy ki tudja kifejleszteni a leggyorsabb JavaScript-motorokat. 2008-ban a Google 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.

A WebKit Squirrelfish, illetve a Mozilla TraceMonkey JavaScript-virtuálisgépeinekmegjelenésével a Chrome JavaScript-futtatási teljesítménye lassabbnak bizonyult.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,az akkor új JavaScript-motort, ami jelentősen megdobta a Safari böngésző teljesítményét. 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 az x86 architektúrát támogatta, az Apple Inc. minden platformtesztjét sikeresen lefuttatta, így a Mac OS X x86-64-architektúráin is engedélyezésre került.

A 2009. június 30-án megjelent Firefox 3.5-be bekerült optimalizációs technika „egyes esetekben 20-40-szeres teljesítményjavulást” ígért a Firefox 3-hoz képest

 

A JavaScript-motorok versenye: 2010-

 

2010 elején a norvég Opera böngészőben lecserélték az öregedő Futhark motort a korai tesztekben 2,5-ször gyorsabbnak bizonyuló Carakan-ra. 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”). 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 adott Internet Explorer 9Chakra motorja ígéretesnek látszott.A JägerMonkey nyilvános tesztelése 2010 nyarán kezdődött a Firefox 4 bétaverziójában.

 

A szintén 2010 nyarán megjelent Safari 5 30%-ot gyorsult a Nitro motort használó Safari 4-hez képest. JavaScript-motorok

 

Mozilla

Rhino, a Mozilla Foundation kezelésében, nyílt forrású, teljes egészében Javában fejlesztve

SpiderMonkey (kódnév), a legelső JavaScript-motor, a Netscape Communicationsnél dolgozó Brendan Eich fejlesztette

TraceMonkey, a Firefox 3.5 motorja

JägerMonkey, a Mozilla Firefox 4 motorja.

Tamarin, az Adobe Labs fejlesztése

 

Google

 

V8 – nyílt forrású, Dániában fejleszti a Google, a Google Chrome részét képezi

 

Opera

 

Carakan, az Opera Software fejleszti, az Opera 10.50-től (2010. március)

Futhark, az Opera Software fejlesztette, az Opera 10.50-ben a Carakanra cserélték

 

Safari

 

Nitro, a Safari motorja

Egyéb KJS – a KDE ECMAScript/JavaScript-motorja; eredetileg Harri Porten fejlesztette a KDE projekt Konqueror webböngészőjéhez

Narcissus; nyílt forrású, a SpiderMonkeyt is jegyző Brendan Eich műve

Chakra, Internet Explorer 9

 

Implementációk

 

A JavaScript az ECMAScript 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, a standard könyvtáratés a kapcsolódó API-kat, mint a W3C által meghatározott DOM. Ez azt is jelenti, hogy adott dialektusban megírt alkalmazás inkompatibilis 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.