JavaScript-motor

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 5. oktober 2017; checks kræver 13 redigeringer .

En JavaScript-motor  er et specialiseret program , der behandler JavaScript , især i browsere .

Historie

Indtil 2008-2009 JavaScript-motoren (også kaldet JavaScript-fortolker og JavaScript-implementering ) blev implementeret som en fortolker , der læser og udfører JavaScript -kildekode .

Den første JavaScript-motor blev skabt af Brendan Eich hos Netscape Communications til Netscape Navigator -browseren . Motoren fik kodenavnet SpiderMonkey og blev implementeret i programmeringssproget C. Efterfølgende er den blevet opdateret til at være kompatibel med den tredje udgave af ECMA-262-specifikationen. Rhino JavaScript-motoren blev primært skrevet af Norris Boyd  ( også fra Netscape) og er en implementering af JavaScript i programmeringssproget Java . Ligesom SpiderMonkey er Rhino kompatibel med den tredje udgave af ECMA-262-specifikationen. Nitro fra Apple Safari er også kompatibel med denne specifikation , V8 fra Google Chrome og TraceMonkey fra Mozilla Firefox 3.5.

Det mest almindelige JavaScript-udførelsesmiljø er browseren. Som regel giver browsere en offentlig API til at skabe runtime-objekter ( engelsk  værtsobjekter ), der giver mulighed for at arbejde med DOM i JavaScript.

Et andet almindeligt JavaScript-udførelsesmiljø er webserveren . En JavaScript-aktiveret webserver afslører runtime-objekter, der repræsenterer en HTTP - anmodning og et HTTP-svar. Ved at manipulere disse objekter kan et JavaScript-program dynamisk generere sider. Eksempelvis giver ASP - teknologien til IIS -webserveren dig mulighed for at implementere serverdelen, herunder i programmeringssproget JScript (JavaScript-implementering fra Microsoft). Et andet eksempel er Jaxer-webserveren ud over objekter, der er traditionelle til servere, leverer objekter, der er traditionelle til . Fordelen ved denne tilgang er, at den samme kode kan deles mellem server og klient.

JavaScript-motorer

Kerne JavaScript-motorer:

Mozilla

Google

Andre

Udviklingen af ​​ydeevne

Firefox 3.5 (udgivet 30. juni 2009) bruger en optimeringsteknik, der foreslår "20-40x ydeevneforbedringer i nogle tilfælde" [ 2] .

Den 2. juni 2008 introducerede WebKit-udviklingsteamet SquirrelFish [3]  , en ny JavaScript-motor, der markant forbedrede den hastighed, hvormed Safari [4] fortolker scripts . Denne motor var en af ​​de nye funktioner i Safari 4. Testversionen udkom den 11. juni 2008; motoren blev til sidst omdøbt til Nitro.

Siden da er kapløbet mellem browserudviklere om at øge hastigheden på JavaScript-motorer begyndt. Siden 2008 har Google Chrome holdt håndfladen i sig : dette bekræftes af mange uafhængige eksperimenter [5] [6] [7] . Med fremkomsten af ​​Squirrelfish Extreme af WebKit-udviklere og Tracemonkey af Mozilla anses JavaScript-ydeevne i Google Chrome ikke længere for at være den bedste [8] [9] [10] [11] . Google Danish har dog udviklet en V8 JavaScript-motor med stærkt forbedret JavaScript-ydeevne i Google Chrome 2.

Typisk har en browser en browsergengivelsesmotor og en JavaScript-motor, som gør det nemt at teste, genbruge eller bruge i andre projekter. For eksempel bruges Caracan med Presto, Nitro med WebKit, SpiderMonkey med Gecko, KJS med KHTML, Rhino bruges ikke som standard med nogen af ​​browsermotorerne. Andre kombinationer er nogle gange mulige, såsom V8 med WebKit i Google Chrome. JavaScript-motoren giver udviklere adgang til den funktionalitet (netværk, DOM, eksterne begivenheder, HTML5-video, lærred, lagring), der er nødvendig for at styre webbrowseren.

Sunspider er ydeevne, der ​​JavaScript-motorer i over et dusin tests, der hver især fokuserer på en anden del af JavaScript-sproget. Sunspider er ikke designet til at teste funktioner, der er relateret til andet end computere (HTML, CSS, netværk).

Implementeringer

JavaScript er en dialekt af ECMAScript , der understøttes af mange applikationer, især browsere. Dialekter inkluderer nogle gange sprogudvidelser eller et standardbibliotek og tilsvarende API'er , såsom W3C 's Document Object Model . Det betyder, at applikationer skrevet til én dialekt muligvis ikke er kompatible med andre, medmindre de deler en fælles undergruppe af understøttede funktioner og API'er.

Der er ingen klar forskel mellem dialekt og implementering. En dialekt af et sprog er en variation af et sprog med væsentlige funktioner, mens en sprog-/dialektimplementering udfører et program skrevet på den dialekt.

Ansøgning Dialekt og seneste version ECMAScript udgave
Google Chrome , V8-motor JavaScript ECMA-262 Revision 5
Mozilla Firefox , Gecko , SpiderMonkey og Rhino JavaScript 1.8.1 ECMA-262 Revision 5
Opera ECMAScript med nogle JavaScript 1.5-
og JScript- udvidelser [12]
ECMA-262 Revision 5.1
KHTML layout motor, Konqueror fra KDE og Safari fra Apple JavaScript 1.5 ECMA-262 Revision 3
Adobe Acrobat JavaScript 1.5 ECMA-262 Revision 3
OpenLaszlo platform JavaScript 1.4 ECMA-262 Revision 3
MSP JavaScript 1.5 ECMA-262 Revision 3
Galio JavaScript 1.5 med RMAI- udvidelser ECMA-262 Revision 3

Noter

  1. Oiaga, Marius Internet Explorer 9 Beta Næste - Nye IE9-bygninger hver 8.  uge . softpedia.com . SoftNews NET SR (20. marts 2010). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  2. Ryan, Paul Firefox for at få massivt JavaScript-ydeevneboost  . arstechnica.com . Ars Technica © 2010 Condé Nast Digital (22. august 2008). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  3. Garen, Geoffrey annoncerer SquirrelFish (2. juni 2008). Hentet 30. juni 2008. Arkiveret fra originalen 1. maj 2012.
  4. Lipskas, Vygantas Apple Safari 4 (11. juni 2008). Hentet 30. juni 2008. Arkiveret fra originalen 1. maj 2012.
  5. Stephen Shankland. Hastighedstest: Google Chrome slår Firefox, IE, Safari . cnet.com Business Tech . CNET News (2. september 2008). Hentet 28. juni 2010. Arkiveret fra originalen 1. maj 2012.
  6. Riemann, Link Big browser sammenligningstest: Internet Explorer vs.  Firefox, Opera, Safari og Chrome - Opdatering: Firefox 3.5 Final . PC spil hardware . Computec Media AG (3. juli 2009). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  7. Purdy, Kevin Lifehacker Hastighedstest: Safari 4, Chrome 2 og  mere . Lifehacker (6. november 2009). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  8. Stephen Shankland, CNET News.com. Tredje Chrome beta endnu et hak hurtigere  . Bygmester AU (3. november 2008). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  9. Gå til side, Chrome, for Squirrelfish Extreme - Nyheder arkiveret 6. oktober 2009 på Wayback Machine , Builder AU
  10. Ying, Charles SquirrelFish Extreme: Hurtigste JavaScript-motor endnu  ( 19. september 2008). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  11. ↑ Shankland , Stephen Firefox imødegår Googles browserhastighedstest  . CNET News (3. september 2008). Hentet 30. juni 2010. Arkiveret fra originalen 1. maj 2012.
  12. Understøttelse af webspecifikationer i Opera Presto . Opera.com . Opera Software A.S.A. Hentet 28. juni 2010. Arkiveret fra originalen 28. januar 2011.

Links