JavaScript-moottori on erikoisohjelma, joka käsittelee JavaScriptiä erityisesti selaimissa .
2008-2009 asti JavaScript-moottori (kutsutaan myös JavaScriptin tulkiksi ja JavaScript-toteutukseksi ) toteutettiin tulkkina , joka lukee ja suorittaa JavaScript- lähdekoodia .
Ensimmäisen JavaScript - moottorin loi Brendan Eich Netscape Communicationsista Netscape Navigator -selaimelle . Moottorin koodinimi oli SpiderMonkey ja se toteutettiin C - ohjelmointikielellä . Myöhemmin se on päivitetty yhteensopivaksi ECMA-262-spesifikaation kolmannen painoksen kanssa. Rhino JavaScript -moottorin on kirjoittanut ensisijaisesti Norris Boyd ( myös Netscapesta), ja se on JavaScript-toteutus Java -ohjelmointikielellä . Kuten SpiderMonkey, Rhino on yhteensopiva ECMA-262-määrityksen kolmannen painoksen kanssa. Apple Safarin Nitro on myös yhteensopiva tämän määrityksen kanssa, V8 Google Chromesta ja TraceMonkey Mozilla Firefox 3.5:stä.
Yleisin JavaScript-suoritusympäristö on selain. Pääsääntöisesti selaimet tarjoavat julkisen API :n ajonaikaisten objektien ( englanninkielisten isäntäobjektien ) luomiseen , jotka tarjoavat mahdollisuuden työskennellä JavaScriptin DOM :n kanssa.
Toinen yleinen JavaScript-suoritusympäristö on verkkopalvelin . JavaScript-yhteensopiva verkkopalvelin paljastaa ajonaikaiset objektit, jotka edustavat HTTP - pyyntöä ja HTTP-vastausta. Näitä objekteja manipuloimalla JavaScript-ohjelma voi luoda sivuja dynaamisesti. Esimerkiksi IIS -verkkopalvelimen ASP - teknologia mahdollistaa palvelinosan toteuttamisen myös JScript -ohjelmointikielellä (Microsoftin JavaScript-toteutus). Toinen esimerkki on Jaxer-verkkopalvelin tarjoaa palvelimille perinteisten objektien lisäksi myös selaimille perinteisiä objekteja Tämän lähestymistavan etuna on, että sama koodi voidaan jakaa palvelimen ja asiakkaan välillä.
Ydin JavaScript-moottorit:
Firefox 3.5 (julkaistu 30. kesäkuuta 2009) käyttää optimointitekniikkaa, joka ehdottaa "20-40x suorituskyvyn parannuksia joissakin tapauksissa" [ 2] .
2. kesäkuuta 2008 WebKitin kehitystiimi esitteli SquirrelFish [3] , uuden JavaScript-moottorin, joka paransi merkittävästi nopeutta, jolla Safari [4] tulkitsee skriptejä . Tämä moottori oli yksi Safari 4:n uusista ominaisuuksista. Testiversio ilmestyi 11. kesäkuuta 2008; Moottori nimettiin lopulta Nitroksi.
Siitä lähtien selainkehittäjien kilpailu JavaScript-koneiden nopeuden lisäämiseksi on alkanut. Vuodesta 2008 lähtien Google Chrome on pitänyt kämmentä siinä : tämän ovat vahvistaneet monet riippumattomat kokeet [5] [6] [7] . WebKit-kehittäjien Squirrelfish Extremen ja Mozillan Tracemonkeyn käyttöönoton myötä JavaScriptin suorituskykyä Google Chromessa ei pidetä enää parhaana [8] [9] [10] [11] . Google Danish on kuitenkin kehittänyt V8 JavaScript -moottorin , jolla on huomattavasti parempi JavaScript-suorituskyky Google Chrome 2:ssa.
Tyypillisesti selaimessa on selaimen renderöintimoottori ja JavaScript-moottori, joten sen testaus, uudelleenkäyttö tai käyttö muissa projekteissa on helppoa. Esimerkiksi Caracania käytetään Preston kanssa, Nitroa WebKitin kanssa, SpiderMonkeya Geckon kanssa, KJS:ää KHTML:n kanssa, Rhinoa ei käytetä oletuksena missään selainkoneissa. Muut yhdistelmät ovat joskus mahdollisia, kuten V8 ja WebKit Google Chromessa. JavaScript-moottorin avulla kehittäjät voivat käyttää verkkoselaimen ohjaamiseen tarvittavia toimintoja (verkko, DOM, ulkoiset tapahtumat, HTML5-video, kanvas, tallennustila).
Sunspider on testaustyökalu, JavaScript-koneiden suorituskyvyn mittaamiseen yli tusinassa testissä, joista jokainen keskittyi JavaScript-kielen eri osaan. Sunspider ei ole suunniteltu testaamaan ominaisuuksia, jotka liittyvät mihinkään muuhun kuin tietojenkäsittelyyn (HTML, CSS, verkko).
JavaScript on ECMAScriptin murre, jota monet sovellukset, erityisesti selaimet, tukevat. Murteet sisältävät joskus kielilaajennuksia tai vakiokirjaston ja vastaavat API :t , kuten W3C : n asiakirjaobjektimallin . Tämä tarkoittaa, että yhdelle murteelle kirjoitetut sovellukset eivät välttämättä ole yhteensopivia muiden kanssa, ellei niillä ole yhteistä tuettujen ominaisuuksien ja sovellusliittymien osajoukkoa.
Murteen ja toteutuksen välillä ei ole selvää eroa. Kielen murre on kielen muunnelma, jolla on merkittäviä ominaisuuksia, kun taas kieli-/murretoteutus suorittaa kyseisellä murteella kirjoitetun ohjelman.
Sovellus | Murre ja uusin versio | ECMAScript-versio |
---|---|---|
Google Chrome , V8 moottori | JavaScript | ECMA-262 versio 5 |
Mozilla Firefox , Gecko , SpiderMonkey ja Rhino | JavaScript 1.8.1 | ECMA-262 versio 5 |
Ooppera | ECMAScript joissakin JavaScript 1.5- ja JScript- laajennuksissa [12] |
ECMA-262-versio 5.1 |
KHTML - asettelumoottori, Konqueror KDE:stä ja Safari Applelta | JavaScript 1.5 | ECMA-262 versio 3 |
Adobe Acrobat | JavaScript 1.5 | ECMA-262 versio 3 |
OpenLaszlo-alusta | JavaScript 1.4 | ECMA-262 versio 3 |
MSP | JavaScript 1.5 | ECMA-262 versio 3 |
Galio | JavaScript 1.5 RMAI- laajennuksilla | ECMA-262 versio 3 |
JavaScript | |
---|---|
Ideoita | |
Kääntäjät | |
Moottorit | |
Kirjastot ja puitteet | |
Toimittajat | |
Työkalut |
|
Liittyvät tekniikat | |
Ihmiset | |
Kategoria |
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Murteet |
| ||||||||||||
Moottorit ( vertailu ) |
| ||||||||||||
Kehykset , kirjastot |
| ||||||||||||
Ihmiset | |||||||||||||
Muut |
|