JavaScript-motor

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 5 oktober 2017; kontroller kräver 13 redigeringar .

En JavaScript-motor  är ett specialiserat program som bearbetar JavaScript , särskilt i webbläsare .

Historik

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 EichNetscape 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.

JavaScript-motorer

Kärna JavaScript-motorer:

Mozilla

Google

Andra

Utvecklingen av prestanda

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).

Implementeringar

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

Anteckningar

  1. Oiaga , Marius Internet Explorer 9 Beta Nästa - Nya IE9  -byggen var åttonde vecka . softpedia.com . SoftNews NET SR (20 mars 2010). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  2. Ryan, Paul Firefox för att få massiv JavaScript-prestandaökning  . arstechnica.com . Ars Technica © 2010 Condé Nast Digital (22 augusti 2008). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  3. Garen, Geoffrey tillkännager SquirrelFish (2 juni 2008). Hämtad 30 juni 2008. Arkiverad från originalet 1 maj 2012.
  4. Lipskas, Vygantas Apple Safari 4 (11 juni 2008). Hämtad 30 juni 2008. Arkiverad från originalet 1 maj 2012.
  5. Stephen Shankland. Hastighetstest: Google Chrome slår Firefox, IE, Safari . cnet.com Business Tech . CNET News (2 september 2008). Hämtad 28 juni 2010. Arkiverad från originalet 1 maj 2012.
  6. Riemann, Link Stort jämförelsetest för webbläsare: Internet Explorer vs.  Firefox, Opera, Safari och Chrome - Uppdatering: Firefox 3.5 Final . Hårdvara för PC-spel . Computec Media AG (3 juli 2009). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  7. Purdy, Kevin Lifehacker hastighetstester: Safari 4, Chrome 2 och  mer . Lifehacker (6 november 2009). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  8. Stephen Shankland, CNET News.com. Tredje Chrome beta ytterligare ett snäpp snabbare  . Builder AU (3 november 2008). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  9. Gå åt sidan, Chrome, för Squirrelfish Extreme - Nyheter arkiverade 6 oktober 2009 på Wayback Machine , Builder AU
  10. Ying, Charles SquirrelFish Extreme: Snabbaste JavaScript-motorn ännu  ( 19 september 2008). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  11. Shankland, Stephen Firefox motverkar Googles hastighetstest för webbläsaren  . CNET News (3 september 2008). Hämtad 30 juni 2010. Arkiverad från originalet 1 maj 2012.
  12. Stöd för webbspecifikationer i Opera Presto . Opera.com . Opera Software A.S.A. Hämtad 28 juni 2010. Arkiverad från originalet 28 januari 2011.

Länkar