На сегодняшний день мы не испытываем недостатка в прекрасных вещах, которые написаны на 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. Ну, и конечно же попробуйте демо.
Автор: DreamWalker