Был изобретен в Natscape под названием Mocha(кофе мокко). В это время ява оказывала огромное влияние на мир програмной разработки, не обошло это влияние и Mocha. Впервые реализация появилась в браузере Netscape Navigator 2.0 под названием LiveScript в 1995, а через два месяца, совместно с Sun, Нетскейп обьявило, что теперь технология будет называться JavaScript, под этим названием технология появляется в барузере Netscape Navigator 2.0B3.
Время переименования языка совпадает с временем встраивания плагина для выполнения Java Applets в Netscape Navigator, вся эта игра имен была явно маркетинговым ходом двух компаний.
Через год после этого события(1996) Нетскейп подали спецификацию в Европейскую Ассоциацию производителей ЕВМ(ECMA International), как претенедента на индустриальный стандарт. Так была рождения спецификация ECMAScript.
В это время Microsoft, чтобы избежать судовой тягомотины, отказываются от своего VBScript, и создают в сответсвии со стандартом JScript.
Сначала язык был закидан шапками, а с рожденим AJAX технологии, был признан в мире разработки.
Движки JavaScript
Rhino
Еще интересный факт в том, что Netscape планировали реализовать версию браузера написанную на Java, есть предположение, что этот факт тоже внес не малую лепту в переименование LiveScript.
По причине "браузера на яве" нужно было еще и реализовать движок для выполнения JavaScript в JVM, для этого нужно было научиться компилировать скрипты в байткод, а если проще написать реализацию движка на Java, так родился в 1997 проект Rhino.
Сразу решили скрипты именно компилировать в байт-код, это дало прекрасный факт, что скрипты байткодом были намного быстрее си-шной реализации яваскрипта, но одновременно с этим был тот факт, что время еще существовало время на компиляцию этих скриптов, а с этим фактом в сумме компиляция+выполнения JavaScript в JVM, значительно уступала по времени си-шной реализации. Кроме того, все реализации JVM не чистят память от загруженных *.class-файлов, только от созданных инстанций классами из этих файлов. Что в случае работы браузера, который работает с многими страницами, на которых есть сприпты, которые компилируются, загружаются *.class-файлами и потом выполняются, и при этом процесс может продолжаться часами в виде навигации по паутине(с тем фактом, что все подгруженные класс-файлы с памяти не чистяться), означает колосальные утечки памяти.
По этой причине JavaScript, решили интерпритировать, это дало прирост производительности и убрало факт утечек, но всетаки не дало возможность обойти сишную реализацю(SpiderMonkey).
1998 Netscape становится Mozilla, меняет свою политику и поэтому сорскод Rhino открывают. Сейчас эту библиотеку используют для среды выполнения явасприпта в яваприложениях. Яваскрипт комплилируется в классы ява, при этом нет реализации ДОМ, которая есть в браузере, Rhino стал чисто десктопной средой явасприпта.
Пример применения яваскриптового кода в ява коде:
А вот пример приложения на яваскрипте, которое может выполниться в Rhino Shell:
А вот так можно запустить Rhino Shell и интерпритировать в ней прямым вводом яваскрипт-код. Второй способ лучше тем, что не нужно определять classpath, чтобы запустить оболочку:
SpiderMonkey
Это, как и было сказано, более старый движок яваскрипта, а если быть точным - первый, но именно он продолжил свое существование, как движок для среды яваскрипта в браузере Mozilla Foundatioin (FireFox). Он написан на Си. Для него характерны внесения следующих оптимизаций: TraceMonkey (Firefox 3.5), JägerMonkey (Firefox 4) и IonMonkey. Последняя оптимизация это реализация JIT компиляции для яваскприта.
Этот движок находится на стадии соответсвия стандарту ECMA-262 Edition 5.
При этом движок Rhino остается соответсвовать ECMA-262 Edition 3, и используется только в приложениях Java, где исть необходимость выполнить JavaScript код.
Движки в других браузерах:
Время переименования языка совпадает с временем встраивания плагина для выполнения Java Applets в Netscape Navigator, вся эта игра имен была явно маркетинговым ходом двух компаний.
Через год после этого события(1996) Нетскейп подали спецификацию в Европейскую Ассоциацию производителей ЕВМ(ECMA International), как претенедента на индустриальный стандарт. Так была рождения спецификация ECMAScript.
В это время Microsoft, чтобы избежать судовой тягомотины, отказываются от своего VBScript, и создают в сответсвии со стандартом JScript.
Сначала язык был закидан шапками, а с рожденим AJAX технологии, был признан в мире разработки.
Движки JavaScript
Rhino
Еще интересный факт в том, что Netscape планировали реализовать версию браузера написанную на Java, есть предположение, что этот факт тоже внес не малую лепту в переименование LiveScript.
По причине "браузера на яве" нужно было еще и реализовать движок для выполнения JavaScript в JVM, для этого нужно было научиться компилировать скрипты в байткод, а если проще написать реализацию движка на Java, так родился в 1997 проект Rhino.
Сразу решили скрипты именно компилировать в байт-код, это дало прекрасный факт, что скрипты байткодом были намного быстрее си-шной реализации яваскрипта, но одновременно с этим был тот факт, что время еще существовало время на компиляцию этих скриптов, а с этим фактом в сумме компиляция+выполнения JavaScript в JVM, значительно уступала по времени си-шной реализации. Кроме того, все реализации JVM не чистят память от загруженных *.class-файлов, только от созданных инстанций классами из этих файлов. Что в случае работы браузера, который работает с многими страницами, на которых есть сприпты, которые компилируются, загружаются *.class-файлами и потом выполняются, и при этом процесс может продолжаться часами в виде навигации по паутине(с тем фактом, что все подгруженные класс-файлы с памяти не чистяться), означает колосальные утечки памяти.
По этой причине JavaScript, решили интерпритировать, это дало прирост производительности и убрало факт утечек, но всетаки не дало возможность обойти сишную реализацю(SpiderMonkey).
1998 Netscape становится Mozilla, меняет свою политику и поэтому сорскод Rhino открывают. Сейчас эту библиотеку используют для среды выполнения явасприпта в яваприложениях. Яваскрипт комплилируется в классы ява, при этом нет реализации ДОМ, которая есть в браузере, Rhino стал чисто десктопной средой явасприпта.
Пример применения яваскриптового кода в ява коде:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class RhinoEngine {
public static void main(String[] args) {
ScriptEngineManager mgr = new ScriptEngineManager();
// Now we can go and get a script engine we want.
// This can be done either by finding a factory that supports
// our required scripting language
// (engine = factory.getScriptEngine();)
// or by requesting a script engine that supports a
// given language by name from the script engine manager.
ScriptEngine engine = mgr.getEngineByName("JavaScript");
// Now we have a script engine instance that
// can execute some JavaScript
try {
engine.put("name", args[0]);
engine.eval("print('Hello ' + name + '!')");
} catch (ScriptException ex) {
ex.printStackTrace();
}
}
}
А вот пример приложения на яваскрипте, которое может выполниться в Rhino Shell:
// Equivalent in effect to the Java declaration import java.io.*;
importPackage(java.io);
importPackage(java.lang);
// "in" is a keyword in JavaScript.
// In JavaScript you could query for an attribute using [] syntax:
var reader = new BufferedReader( new InputStreamReader(System['in']) );
// We use JavaScript's dynamic typing here to let s be a boolean first, and later on a string...
var s = true;
while (s) {
s = reader.readLine();
if (s) {
System.out.println(s.toUpperCase());
}
}
А вот так можно запустить Rhino Shell и интерпритировать в ней прямым вводом яваскрипт-код. Второй способ лучше тем, что не нужно определять classpath, чтобы запустить оболочку:
$ java org.mozilla.javascript.tools.shell.Main
$ java -jar js.jar
SpiderMonkey
Это, как и было сказано, более старый движок яваскрипта, а если быть точным - первый, но именно он продолжил свое существование, как движок для среды яваскрипта в браузере Mozilla Foundatioin (FireFox). Он написан на Си. Для него характерны внесения следующих оптимизаций: TraceMonkey (Firefox 3.5), JägerMonkey (Firefox 4) и IonMonkey. Последняя оптимизация это реализация JIT компиляции для яваскприта.
Этот движок находится на стадии соответсвия стандарту ECMA-262 Edition 5.
При этом движок Rhino остается соответсвовать ECMA-262 Edition 3, и используется только в приложениях Java, где исть необходимость выполнить JavaScript код.
Движки в других браузерах:
- Google's V8 - используется Google Chrome, реализация JIT компиляции.
- JavaScriptCore(SquirrelFish/Nitro) испольсуется в некоторых WebKit-основанных браузерах, например Apple Safari( Google Chrome имеет в ядре тоже WebKit, но движок JS у него свой).
- Carakan - движок в Opera.
- Chakra движок, который используется в Internet Explorer, но технически это JScript движок, а не JavaScript.
Комментариев нет:
Отправить комментарий