En JavaScript-motor är ett specialiserat program som bearbetar JavaScript , särskilt i webbläsare .
Fram till 2008-2009 JavaScript-motorn (även kallad JavaScript-tolkare och JavaScript-implementering ) implementerades som en tolk som läser och kör JavaScript -källkod .
Den första JavaScript-motorn skapades av Brendan Eich på Netscape Communications för webbläsaren Netscape Navigator . Motorn fick kodnamnet SpiderMonkey och implementerades i programmeringsspråket C. Därefter har den uppdaterats för att vara kompatibel med den tredje utgåvan av ECMA-262-specifikationen. Rhino JavaScript-motorn skrevs främst av Norris Boyd ( också från Netscape) och är en implementering av JavaScript i programmeringsspråket Java . Liksom SpiderMonkey är Rhino kompatibel med den tredje upplagan av ECMA-262-specifikationen. Nitro från Apple Safari är också kompatibel med denna specifikation , V8 från Google Chrome och TraceMonkey från Mozilla Firefox 3.5.
Den vanligaste körningsmiljön för JavaScript är webbläsaren. Som regel tillhandahåller webbläsare ett offentligt API för att skapa runtime-objekt ( engelska värdobjekt ) som ger möjlighet att arbeta med DOM i JavaScript.
En annan vanlig JavaScript-exekveringsmiljö är webbservern . En JavaScript-aktiverad webbserver exponerar runtime-objekt som representerar en HTTP - begäran och ett HTTP-svar. Genom att manipulera dessa objekt kan ett JavaScript-program generera sidor dynamiskt. Till exempel låter ASP -tekniken för IIS -webbservern dig implementera serverdelen, inklusive i programmeringsspråket JScript (JavaScript-implementering från Microsoft). Ett annat exempel är Jaxer webbserver tillhandahåller förutom objekt som är traditionella för servrar, objekt som är traditionella för webbläsare. Fördelen med detta tillvägagångssätt är att samma kod kan delas mellan server och klient.
Kärna JavaScript-motorer:
Firefox 3.5 (släppt 30 juni 2009) använder en optimeringsteknik som föreslår "20-40x prestandaförbättringar i vissa fall" [ 2] .
Den 2 juni 2008 introducerade WebKit-utvecklingsteamet SquirrelFish [3] , en ny JavaScript-motor som avsevärt förbättrade hastigheten med vilken Safari [4] tolkar skript . Denna motor var en av de nya funktionerna i Safari 4. Testversionen dök upp den 11 juni 2008; motorn döptes så småningom om till Nitro.
Sedan dess har webbläsarutvecklarnas kapplöpning för att öka hastigheten på JavaScript-motorer börjat. Sedan 2008 har Google Chrome hållit handflatan i sig : detta bekräftas av många oberoende experiment [5] [6] [7] . Med tillkomsten av Squirrelfish Extreme av WebKit-utvecklare och Tracemonkey av Mozilla anses JavaScript-prestandan i Google Chrome inte längre vara den bästa [8] [9] [10] [11] . Google Danish har dock utvecklat en V8 JavaScript-motor med kraftigt förbättrad JavaScript-prestanda i Google Chrome 2.
Vanligtvis har en webbläsare en webbläsarrenderingsmotor och en JavaScript-motor, vilket gör det enkelt att testa, återanvända eller använda i andra projekt. Till exempel används Caracan med Presto, Nitro med WebKit, SpiderMonkey med Gecko, KJS med KHTML, Rhino används inte som standard med någon av webbläsarmotorerna. Andra kombinationer är ibland möjliga, som V8 med WebKit i Google Chrome. JavaScript-motorn tillåter utvecklare att komma åt den funktionalitet (nätverk, DOM, externa händelser, HTML5-video, canvas, lagring) som behövs för att styra webbläsaren.
Sunspider är testverktyg för JavaScript-motorer i över ett dussin tester, var och en fokuserad på en annan del av JavaScript-språket. Sunspider är inte designad för att testa funktioner som är relaterade till något annat än datoranvändning (HTML, CSS, nätverk).
JavaScript är en dialekt av ECMAScript som stöds av många applikationer, särskilt webbläsare. Dialekter inkluderar ibland språktillägg eller ett standardbibliotek och motsvarande API : er som W3C :s dokumentobjektmodell . Det betyder att applikationer skrivna för en dialekt kanske inte är kompatibla med andra om de inte delar en gemensam undergrupp av funktioner och API:er som stöds.
Det finns ingen tydlig skillnad mellan dialekt och implementering. En dialekt av ett språk är en variant av ett språk med betydande egenskaper medan en språk-/dialektimplementering kör ett program skrivet på den dialekten.
Ansökan | Dialekt och senaste version | ECMAScript-utgåva |
---|---|---|
Google Chrome , V8-motor | JavaScript | ECMA-262 Revision 5 |
Mozilla Firefox , Gecko , SpiderMonkey och Rhino | JavaScript 1.8.1 | ECMA-262 Revision 5 |
Opera | ECMAScript med vissa JavaScript 1.5- och JScript- tillägg [12] |
ECMA-262 Revision 5.1 |
KHTML -layoutmotor, Konqueror från KDE och Safari från Apple | JavaScript 1.5 | ECMA-262 Revision 3 |
Adobe Acrobat | JavaScript 1.5 | ECMA-262 Revision 3 |
OpenLaszlo-plattformen | JavaScript 1.4 | ECMA-262 Revision 3 |
MSP | JavaScript 1.5 | ECMA-262 Revision 3 |
Galio | JavaScript 1.5 med RMAI- tillägg | ECMA-262 Revision 3 |
JavaScript | |
---|---|
Idéer | |
Kompilatorer | |
Motorer | |
Bibliotek och ramar | |
Redaktörer | |
Verktyg |
|
Relaterade teknologier | |
människor | |
Kategori |
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialekter |
| ||||||||||||
Motorer ( jämförelse ) |
| ||||||||||||
Ramar , bibliotek |
| ||||||||||||
människor | |||||||||||||
Övrig |
|