A JavaScript, mint neve is mutatja, szkript nyelv. Olyannak tervezték, hogy segítségével a nyelvet kiszolgáló környezetet módosítani lehessen.
Az ECMAScript-et (az ECMA-262 által szabványosított JavaScript-et) számos programozási nyelven implementálták.
A forráskód értelmezését és végrehajtását a JavaScript motorok biztosítják.
DMDScript | Digital Mars ECMAScript motorja |
FESI | Java nyelven implementált ingyenes ECMAScript Interpreter |
InScript | |
JavaScriptCore | JavaScript interpreter, a KJS-ből származik, a WebKit project-ben használják, valamint olyan alkalmazásokban, mint például a Safari böngésző |
JScript | Microsoft motorja, ez van például az Internet Explorer-ben, a Trident egyik komponense |
JSDB | Javascript adatbázisokhoz |
Jsext | Javascript interpreter szerveroldali alkalmazásokhoz, a SpiderMonkey az alapja/td> |
KJS | a Konqueror motorja, a KHTML egyik komponense |
futhark | 9.50 vagy magasabb verziószámú Opera böngészők ECMAScript motorja |
linear_b | 7.0 és 9.50 közötti verziószámú Opera böngészők ECMAScript motorja |
Narcissus | metacirkurális JavaScript interpreter (egyes részeit JavaScript-ben írták) |
NGS | |
NJS | az NGS utóda |
phpjs | Javascript Interpreter PHP-hoz |
QtScript | |
Rhino | open source JavaScript motor a Mozilla-tól, Java nyelven implementálták |
ScriptEase | a Nombas által fejlesztett ECMAScript motor, melyet az Openwave átvett |
Simple ECMAScript motor | C nyelyen írt programkönyvtár és JavaScript interpreter |
SpiderMonkey | JavaScript motor a Mozilla Gecko alkalmazásaiban, például a Firefox-ban, C-ben írták |
Tamarin | az ECMAScript egy open source implementációja, Mozilla fejleszti, cél az ECMAScript 4.0 interpreter megvalósítása |
wxJavaScript | Javascript GUI programozáshoz, valamint kliens- és szerveroldali alkalmazások készítéséhez, a SpiderMonkey-on alapul |
Tipikus felhasználási területe: Java alkalmazások szkriptelése
java org.mozilla.javascript.tools.jsc.Main [opciók] file1.js [file2.js...]
ahol az opciók az alábbiak lehetnek
-extends java-osztaly-nev
meghatározza, hogy a generálandó osztály kinek legyen a leszármazottja, a JS kód minden egyes globális függvényéhez generálódik egy azonos nevű metódus, így lehetőségünk nyílik az ősosztályban definiált függvények felüldefiniálására.
-implements java-intf-name
meghatározza, hogy a generálandó osztály mely interfész(eke)t valósítja meg, a JS kód minden egyes globális függvényéhez generálódik egy azonos nevű metódus, az interfészben definiált függvények megvalósítására így lehetőség nyílik
-debug
-g
debugolási információk generálása, nem használható, ha a kódoptimalizálás szintje nullától nagyobb érték
-main-method-class className
meghatározza, hogy a public static void main(Script sc, String[] args) szignatúra
-nosource
nem mentjük a forrást a classfájlba, elkerülve a kód visszafejtésének lehetőségét, a generált class fájl mérete kisebb lesz
-o kimenetiFájl
a generálandó class fájl nevet lehet megadni vele, .class-ra vegződik, érvényes fájlnevet kell megadni
-opt optimalizacioSzint
az kódoptimalizálás szintjenek megadása, -1 es 9 közé kell esnie, -debug nem használható, ha az érték nullától nagyobb
-package csomagNev
megadja, hogy melyik package-be generálódjon az osztály
-version verzioSzam
a fordításhoz használt JavaScript verzióját határozza meg
Példa
-1   interpreter mód, fordítási idő minimális, nem generálódik class fájl
0 nincs optimalizálás, a fordítás gyors, de a generált bájtkód nem túl hatékony
1..9 optimalizálás történik, minél nagyobb az érték, annál radikálisabb