A Javascript programozási nyelv

Fordítók

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.

ECMAScript motorok

DMDScript Digital Mars ECMAScript motorja
FESIJava nyelven implementált ingyenes ECMAScript Interpreter
InScript
JavaScriptCoreJavaScript 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ő
JScriptMicrosoft motorja, ez van például az Internet Explorer-ben, a Trident egyik komponense
JSDBJavascript 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_b7.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
NJSaz NGS utóda
phpjsJavascript Interpreter PHP-hoz
QtScript
Rhinoopen source JavaScript motor a Mozilla-tól, Java nyelven implementálták
ScriptEasea Nombas által fejlesztett ECMAScript motor, melyet az Openwave átvett
Simple ECMAScript motor C nyelyen írt programkönyvtár és JavaScript interpreter
SpiderMonkeyJavaScript motor a Mozilla Gecko alkalmazásaiban, például a Firefox-ban, C-ben írták
Tamarinaz ECMAScript egy open source implementációja, Mozilla fejleszti, cél az ECMAScript 4.0 interpreter megvalósítása
wxJavaScriptJavascript GUI programozáshoz, valamint kliens- és szerveroldali alkalmazások készítéséhez, a SpiderMonkey-on alapul

Rhino JavaScript Compiler

A Rhino JavaScript fordító segítségével JavaScript kódból Java class fájlokat tudunk generálni. Az eredményként kapott class fájlok később is felhasználhatóak lesznek, megspóroljuk a kód újbóli értelmezésének költségét, lehetőség van a kódoptimalizálásra.

Tipikus felhasználási területe: Java alkalmazások szkriptelése

Használat

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

$ cat test.js java.lang.System.out.println("42!"); $ java org.mozilla.javascript.tools.jsc.Main test.js $ ls *.class test.class $ java test 42! $ java org.mozilla.javascript.tools.jsc.Main -extends java.applet.Applet -implements java.lang.Runnable NervousText.js
Rhino Kódoptimalizáló

-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