Hlavní navigace

Všudypřítomná harmonie

11. 1. 2012 18:15 zboj

K nejrozšířenějším jazykům dneška patří JavaScript (JS). Navzdory svému jméno se od Javy dost liší, sdílí s ní v podstatě jen céčkovou syntax. Byl kodifikován pod názvem ECMAScript a nedávno jsme se dočkali verze 5,1.

Verze 5,1 je jen mírným pokrokem, daleko větším měl být JS 4,0, jejž ovšem Microsoft jako normu zablokoval (nelíbilo se mu, že by se Adobe prosadilo se svým ActionScriptem). Nakonec se všichni velcí hráči shodli (a podle této shody novou verzi pojmenovali Harmony), nicméně oficiální posvěcení ve formě kodifikace stále chybí a implementace v prohlížečích je v nedohlednu.

Harmony přináší třídy (a odpovídající „neprototypovou“ dědičnost), jmenné prostory, typovou kontrolu atd. To vše už tu jako návrh (JS4) nějakou dobu bylo, takže existuje pár více či méně tuto specifikaci naplňujících implementací.

Flash

Adobe se Harmony inspirovalo při návrhu ActionScriptu. Ve Flashi tak máte k dispozici plnohodnotný jazyk založený na virtuálním stroji s mnoha knihovnami.

.NET

Microsoft pro svůj .NET vytvořil překladač JScript.NET pro JS se syntaxí podobnou Harmony. Tento překladač generuje bajtkód (MSIL), takže v něm napíšete téměř vše, co v C#. Především lze využívat BCL. Bohužel vývoj se zastavil u verze .NET 2,0.

Prohlížeč

Prohlížeče Harmony nativně nepodporují, existují ale nástroje pro překlad do „prostého“ JS. Jedním z nich je Google Traceur, dalším například Mascara. Celé to funguje jako GWT (které překládá z Javy) a podobné transpilery. Narozdíl od JScript.NET není k dispozici standardní knihovna, jste odkázáni na API třetích stran (případně CommonJS).

Vazba na C a Javu

V céčku či Javě lze JS spouštět pomocí knihoven. Pro Javu se používá především Rhino, pro C/C++ můžete použít V8 (překládá JS do nativního kódu) nebo JavaScriptCore (podle verze interpretuje, překládá do bajtkódu nebo do kódu procesoru). Sice neumí nativně Harmony, ale „transpilovaný“ kód běží bez problémů. Tento postup využívá například Titanium pro běh aplikací na Androidu a iOS.

Sdílet