Pull to refresh

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

Reading time 2 min
Views 8.9K
Original author: Devon Govett
На сегодняшний день мы не испытываем недостатка в прекрасных вещах, которые написаны на JavaScript. Да и реализации JVM в JavaScript мы уже видели. Теме не менее, Doppio представляет собой наиболее полную и активно развивающуюся JVM.



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

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


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

Но почему Java?


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

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

Вы можете найти информацию о проекте Doppio тут, посмотреть задокументированные примеры или страничку на GitHub. Ну, и конечно же попробуйте демо.
Tags:
Hubs:
+23
Comments 23
Comments Comments 23

Articles