En JavaScript-motor er et specialiseret program , der behandler JavaScript , især i browsere .
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.
Kerne JavaScript-motorer:
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).
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 |
JavaScript | |
---|---|
Ideer | |
Kompilere | |
Motorer | |
Biblioteker og rammer | |
Redaktører | |
Værktøjer |
|
Relaterede teknologier | |
Mennesker | |
Kategori |
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialekter |
| ||||||||||||
Motorer ( sammenligning ) | |||||||||||||
Rammer , biblioteker |
| ||||||||||||
Mennesker | |||||||||||||
Andet |
|