- PVSM.RU - https://www.pvsm.ru -

Doppio — JVM, Компилятор и дизассемблер в JavaScript

На сегодняшний день мы не испытываем недостатка в прекрасных вещах, которые написаны на JavaScript. Да и реализации JVM в JavaScript мы уже видели [1]. Теме не менее, Doppio [2]представляет собой наиболее полную и активно развивающуюся JVM.

Doppio — JVM, Компилятор и дизассемблер в JavaScript

По большому счёту Doppio — это проект, который позволяет выполнять Java-код прямо в браузере без плагинов. Он включает в себя реализацию Java Virtual Machine (JVM), заключающуюся в браузерном компиляторе и дизассемблере байт-кода. Проект находится ещё в стадии разработке, нужно ещё хорошо поработать над производительностью, прежде чем его можно было бы использовать в разработке. Но уже сегодня поддерживается:

  • Все 200 opcode-ов
  • Точная эмуляция примитивных типов Java, включая 64-битные long
  • Generics
  • Большая часть Reflection API
  • Работа с файлами и стандартный ввод/вывод
  • Основные JDK-библиотеки, такие как String, Pattern и HashMap

Вроде как демо [3] лучше всего работает в Chrome, но оно должно хорошо работать в любом браузере, который поддерживает локальное хранение и типизированные массивы.

Но почему Java?

Вы должно быть сейчас думаете: «Но зачем мне нужно писать на Java для браузера?» Но имея браузерную JVM, мы получаем намного больше чем просто Java, не забудьте что существует множество других языков, компилируемых в JVM-байткод, включая как уже существующие языки — Ruby (JRuby), Python (Jython) и JavaScript (Rhino), так и новые языки, такие как Scala, Clojure и многие другие [4].

С этой точки зрения JVM в браузере может использоваться для работы с множеством языков и существующих программ прямо в браузере без ручного перевода. Однако, прежде чем это будет возможно, предстоит много работы по оптимизации. Сейчас Doppio интерпретирует байткод на лету, но авторы напоминают, что они хотят перехода к более компилируемому подоходу. Также как и Emscripten компилирует LLVM-байткод в JavaScript, Doppio хочет делать аналогичное для JVM-кода — тогда бы это была очень мощная утилита.

Вы можете найти информацию о проекте Doppio тут [5], посмотреть задокументированные примеры [6] или страничку на GitHub [2]. Ну, и конечно же попробуйте демо [3].

Автор: DreamWalker


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/16496

Ссылки в тексте:

[1] уже видели: http://badassjs.com/post/12648021003/bicavm-a-jvm-implementation-in-javascript

[2] Doppio : https://github.com/int3/doppio

[3] демо: http://int3.github.com/doppio/

[4] многие другие: http://en.wikipedia.org/wiki/List_of_JVM_languages

[5] тут: http://int3.github.com/doppio/about.html

[6] примеры: http://int3.github.com/doppio/docs/runtime.html