Статьи

Что такое JavaScript-эквивалент Java-байт-кода?


Браузер постепенно превращается в
отличную платформу . Частью привлекательности платформы Java является то, что она имеет ядро, которое выходит за рамки «языка Java»: виртуальная машина Java (JVM). В настоящее время существует
множество языков , предназначенных для JVM, например:
Groovy ,
JRuby ,
Fantom ,
Jython ,
Scala ,
ABCL ,
Clojure и
Gosu . Файлы классов Java хранят программы JVM как байт-код Java, компактный двоичный формат, в который компилируется исходный код. Есть ли в JavaScript что-то похожее?
Краткий ответ: Нет. Ситуация следующая.

  • Компиляция в JavaScript: движки JavaScript стали настолько быстрыми, что стало возможным компилировать другие языки в исходный код JS. То есть у нас есть виртуальные машины, на которые подается исходный код! Таким образом, для целей хранения и обмена программами исходный код JavaScript соответствует байт-коду Java. Синтаксический анализ JavaScript выполняется быстро, поэтому он не представляет большой проблемы в качестве промежуточного этапа. Есть также примеры компиляции JavaScript (или чего-то очень похожего) для JavaScript: компилятор Closure , Qooxdoo , CoffeeScript . Наконец, GWT даже компилирует статический язык (Java) в динамический (JavaScript).
  • Сокращение исходного кода JavaScript. Сокращение может использоваться для уменьшения размера исходного кода. Самый простой вид минификации — это удаление комментариев. Но дальнейшее сжатие может быть достигнуто. Взять, к примеру, следующий исходный код [source: NC Zakas ].
        function sum(num1, num2) {
            return num1 + num2;
        }
    

    Это уменьшено Компрессором YUI к

        function sum(A,B){return A+B;}
    

    Закас дает больше деталей .

  • Основной JavaScript: будучи интерфейсом для движков JS, помогает понять, что JavaScript является относительно простым языком. Но что, если бы это было еще проще? Может существовать «Базовый JavaScript», подмножество JS, для которого скомпилированы все другие языки. Это будет включать более сложные функции языка JavaScript и будущие версии JS. Кроме того, компиляция на основной язык является распространенной техникой в ​​сообществе Lisp.
  • Формат двоичного обмена: я не думаю, что мы могли бы заставить движки JavaScript согласовать общий двоичный формат, потому что нет единой основы: Firefox, Safari и Internet Explorer используют разные байт-коды, Google V8 компилируется непосредственно в машинный код. Таким образом, очевидно, почему нет общего двоичного формата и почему JavaScript не имеет прямого аналога файлов классов Java. Но Core JavaScript может служить той же цели. Для более быстрой загрузки, компактности и, возможно, запутывания можно использовать абстрактное синтаксическое дерево (если хотите, крайний способ минимизации).

Подводя итог: Девиз «исходный код — это новый двоичный файл», и не обращая внимания на анализ в Интернете, является неожиданной разработкой. Минимизация исходного кода также интересна, но является логическим следствием этого девиза.

Связанное чтение:

С http://www.2ality.com/2011/01/what-is-javascript-equivalent-of-java.html