The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

BicaVM - написанная на JavaScript виртуальная машина для запуска программ на языке Java

21.11.2011 11:09

Представлен новый проект BicaVM, в рамках которого создана реализация Java VM (JVM), написанная на JavaScript и способная выполняться в любом современном браузере.

Мотивом создания проекта послужило желание интегрировать в браузер виртуальную машину, в которой мог бы выполняться универсальный байткод. Суть идеи в том, что вместо поддержки какого определённого языка программирования в браузер предлагается добавить абстрактную виртуальную машину, которая позволяла бы организовать выполнение кода на различных языках программирования, не ограниченных одним JavaScript. В качестве достоинств такого подхода называется автоматическая изоляция кода и возможность сохранения среза состояния JVM на сервере, что позволит обеспечить независимую от браузера персистентность. Другим плюсом является обеспечение выполнения Java-программ на платформах, изначально не поддерживающих Java, например, BicaVM успешно выполняется на iPad/iPhone.

В отличие от инструментов GWT (Google Web Toolkit) и Java2Script (Eclipse-плагин), которые транслируют исходные тексты на языке Java в JavaScript, или j2js и Orto (копия на GitHub, которые преобразуют Java-байткод в JavaScript, проект BicaVM занимается непосредственно выполнением байткода JVM. По заявлению разработчиков ещё совсем недавно написание интерпретатора байткода на языке JavaScript трудно было себе представить, но бурное развитие JavaScript-движков в направлении увеличения производительности, сделали казавшееся невозможным явью. Несмотря на то, что BicaVM в настоящее время выполняет байткод значительно медленнее нативного JVM, разработчики не видят преград, чтобы довести скорость работы до терпимой, реализовав поддержку оптимизации на этапе инициализации и JIT-компиляции в JavaScript.

В настоящее время разработка носит главным образом концептуальный характер, но с некоторыми ограничениями уже может выполнять Java-код. В частности, поддерживается интерпретация примерно 60% байткода JVM и подготовлен интерфейс JNI для трансляции вызова Java-функций в JavaScript. Для обеспечения запуска полноценных Java-проектов предстоит ещё проделать много работы, например, подготовить полноценное runtime-окружение и провести дополнительные оптимизации производительности.

  1. Главная ссылка к новости (http://www.i-programmer.info/n...)
  2. OpenNews: GPG4Browsers - открытая реализация OpenPGP на языке JavaScript
  3. OpenNews: Представлен декодировщик видео H.264, оформленный на языке JavaScript
  4. OpenNews: В написанном на JavaScript эмуляторе ПК появилась поддержка постоянного хранилища
  5. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
  6. OpenNews: Проекты по компиляции кода на языках Clojure и Pascal в JavaScript-представление
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/32354-java
Ключевые слова: java, jvm, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.4, добрый дядя (?), 12:47, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    ну почему надо лепить нечто на "js, который есть у всех"?
    почему нельзя некую легковесную виртуальную машину пропихнуть на уровне стандартов HTML5 или может быть HTML6?

    давно назрела необходимость того чтобы браузер быстро выполнял байт код какой либо

     
     
  • 2.20, Crazy Alex (??), 14:50, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что это прототип. Но идея хороша - JS так и так уже не читаем со своими минификациями/оптимизациями - так лучше уж вменяемій байткод, в который хотя бы компилировать удобно. А JVM - штука распространённая, языков под неё много - хоть на Эрланге пиши. Если нативно в браузер засунуть - всяко хуже джаваскрипта не будет, если научить память возвращать.
     
     
  • 3.40, Xasd (ok), 18:45, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А JVM - штука распространённая, языков под неё много - хоть на Эрланге пиши.

    допустим языков *много*... но каковО *качество* реализации этих языков?

    ....где мне найти НЕ УСТАРЕВШУЮ версию реализации языка Python на JVM?

    ..да да, я говорю про тот самый ОБЫЧНЫЙ Python который например поддерживает "Class Decorators" (PEP 3129)
    ..или например поддерживает коллекцию сортированных словарей (collections.OrderedDict ... PEP 372)

     
  • 2.30, Аноним (-), 16:07, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Google Dart?
     

  • 1.5, Анон (?), 12:54, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ждем компилятор ассемблера на html5.
     
     
  • 2.10, Аноним (-), 13:17, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ассемблер - и есть программа, преобразующая мнемоники в машинный код.
    Словосочетание "компилятор ассемблера" так же безграмотно, как, например, "программирование на языке Borland C++ Builder".
    Есть программы: ассемблер и линковщик, и есть язык ассемблера (язык программмы, преобразующей исходный код в мнемониках в объектный файл или сразу в исполняемый бинарник).
     
     
  • 3.15, Ваня (?), 13:31, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Употребление термина "ассемблер" в качестве "программы-компилятора программ на ассеблере" в последний раз видел в начале 90-х.

    Ассемблер - язык программирования. Компилятор преобразует текст на языке ассемблера в бинарный машинный код. Линковщик может быть частью компилятора (fasm) или внешней программой (masm, tasm, wasm, ..).

     
     
  • 4.25, Вася (??), 15:03, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ассемблер - это программа-сборщик, компилятор исходного текста. Исходный текст на языке ассемблера
     
     
  • 5.31, Daemontux (ok), 16:12, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не компилятор, а транслятор. В ассемблере нечему компилироваться это уже машинный код. Только человеко читаемый.
     
     
  • 6.36, Xasd (ok), 18:23, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Не компилятор, а транслятор.

    "не бегемот а гиппопотам"

     
  • 6.51, anonymous (??), 03:50, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Не компилятор, а транслятор

    Не яблоко, а фрукт, ага.

    > В ассемблере нечему компилироваться это уже машинный код

    Да что Вы? :-D

    "mov eax,1" -- это 'машинный' код, который "нечего компилировать"? И процессор в Ваших кислотных фантазиях прямо так вот и берет это строку на английском языке и выполняет? Вот умора.

    А вообще, если быть предельно точным и последовательным, то замечание было сделано верное: ассемблер -- это программа, транслирующая листинги на языке ассемблера в машинный код. Другое дело, что очень часто под ассемблером понимают именно язык ассемблера, что обычно понятно по контексту. Естественно, если человек не свято верит в то, что процессор способен напрямую ассемблерные текстовые листинги переварить:)

     
  • 3.26, Мужик32 (ok), 15:33, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну что за придирки? Да, он выразился неграмотно, а вы умный. Детский сад, ей-богу.
     
  • 3.27, Andrew Kolchoogin (?), 15:34, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Есть программы: ассемблер и линковщик

    Ассемблер и редактор связей. :)

     
     
  • 4.44, Аноним (-), 21:15, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Переводишь - так переводи полностью. Сборщик и редактор связей. Assembly это не русское слово.
     
  • 3.49, Michael Shigorin (ok), 00:39, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Словосочетание "компилятор ассемблера" так же безграмотно, как, например,
    > "программирование на языке Borland C++ Builder".

    Ну здрасьте, у меня даже диагноз когда-то был в запаснике -- "программист на дельфи пять"... :) (только это к другому случаю -- примерно как "пользователь word 2007")

     

  • 1.6, анон (?), 12:55, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Кто нибудь удивлен? Только честно
     
     
  • 2.7, Ваня (?), 13:03, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +25 +/
    Я всё жду когда в браузере на JavaScript напишут браузер на JavaScript с возможностью выполнения JavaScript.
     
     
  • 3.12, Lain_13 (?), 13:19, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ведро Linux в виртуальной машине написанной на JS запустить смогли. Заведи там иксы, а дальше можешь хоть фокс, хоть хромиум запускать.
     
  • 3.14, fiskus (?), 13:23, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Давно есть во всяких облачных веб-осях
     
     
  • 4.28, oWeRQ (ok), 15:58, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    С iframe каждый может.
     
  • 3.21, Crazy Alex (??), 14:51, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У мозилловцев есть такой движок, предназначен для экспериментирования и прототипирования
     
  • 3.29, анон (?), 16:01, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +4 +/
    We need to go deeper...
     
  • 3.61, Ytch (?), 22:54, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >Я всё жду когда в браузере на JavaScript напишут браузер на JavaScript с возможностью выполнения JavaScript

    На котором напишут браузер на JavaScript с возможностью выполнения JavaScript, на котором напишут браузер на JavaScript с возможностью выполнения JavaScript, на котором напишут браузер на JavaScript с возможностью выполнения JavaScript, на котором...

     

  • 1.8, Клыкастый (ok), 13:09, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    так и до рекурсии недалеко...
     
     
  • 2.50, Аноним (-), 03:13, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    PyPy уже есть :) И работает быстрее
     
     
  • 3.64, Клыкастый (ok), 15:32, 25/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > PyPy уже есть :) И работает быстрее

    PyPy это первый виток. Это неполная рекурсия! Реквестирую больше витков! :)


     

  • 1.9, Просто прохожий (?), 13:15, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ещё один день - ещё одна поделка на JS. Мне это напоминает не решение само по себе а workaround исполнения JVM-кода без Java-плагина. Не скажу что задумка бесполезна - если где-то есть enterprise-решение с Java-апплетами, то это реальный способ предоставить доступ к ним пользователям без Java-плагина. Однако костыль как и всё остальное (pdfjs, mad... ну и другие).

    IMHO
    Стоило бы задуматься над интеграцией легковесной VM (например типа фреймворка LLVM) на уровне стандартов HTML. Эта мысль уже звучала. Тогда бы можно было и на С++/Ada/... весь WEB-проект написать (в том числе и клиентскую часть).

     
     
  • 2.11, добрый дядя (?), 13:18, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Стоило бы задуматься над интеграцией легковесной VM (например типа фреймворка LLVM) на уровне стандартов HTML. Эта мысль уже звучала. Тогда бы можно было и на С++/Ada/... весь WEB-проект написать (в том числе и клиентскую часть).

    во, я там выше то же самое написал
    лучше бы разработчики этого чуда что в новости - сделали бы нечто как библиотеку с открытым кодом и предложили на включение в HTML5+

     
  • 2.23, Crazy Alex (??), 14:53, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да джава-машина, в общем-то, сравнительно неплоха в этом качестве - и оптимизирована всерьёз, и языков под неё куча. Но если вам LLVM - NaCl в помощь.
     
     
  • 3.37, Xasd (ok), 18:27, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да джава-машина, в общем-то, сравнительно неплоха в этом качестве - и оптимизирована
    > всерьёз, и языков под неё куча. Но если вам LLVM -
    > NaCl в помощь.

    наверно вы имели ввиду не NaCl а PNaCL?? :-) ..но до релиза PNaCL вродебы ещё далеко... щаз он кажется только теоретический :-)

    ...а вот что есть на практике (связанного с LLVM и Web) -- это "Emscripten"

     

  • 1.19, Аноним (-), 14:32, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Во любопытно будет посмотреть как они сертифицироваться у оракакла будут... Пожалуй стоит пополнить запасы попкорна))

    И да по поводу легковесной VM - идея прекрасная! Я как питонячий разраб только за!

     
     
  • 2.32, Аноним (-), 16:23, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >И да по поводу легковесной VM - идея прекрасная! Я как питонячий разраб только за!

    Не нужны все ваши vm, пидоны и JScript. В бровзер нужен Perl и открытые сертифицированные компоненты для связи с внешними ресурсами. Сертификация на предмет того что компоненты (связь только через них) не может нанести как прямой так и косвенный вред данным пользователя, не содержит ошибок и бэкдоров. И, конечено же, все это должно быть свободным от корпорации кодом.

    (с) Свободно от корпорации.

     
     
  • 3.38, Xasd (ok), 18:30, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>И да по поводу легковесной VM - идея прекрасная! Я как питонячий разраб только за!
    > Не нужны все ваши vm, пидоны и JScript. В бровзер нужен Perl
    > и открытые сертифицированные компоненты для связи с внешними ресурсами. Сертификация на
    > предмет того что компоненты (связь только через них) не может нанести
    > как прямой так и косвенный вред данным пользователя, не содержит ошибок
    > и бэкдоров. И, конечено же, все это должно быть свободным от
    > корпорации кодом.
    > (с) Свободно от корпорации.

    чемже этот ваш Perl принципиально лучше чем Javascript? с такимже успехом я щаз буду говорить что Perl и Javascript не нужен в браузере, а нужен только Python :-D :-D :-D

     
     
  • 4.48, Аноним (-), 21:16, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > чемже этот ваш Perl принципиально лучше чем Javascript?

    Большим количеством фич. Именно поэтому как раз в браузере ему и не месте. Ни к чему отяжеловешивать и без того не лёгкие браузеры.

     
  • 2.59, arisu (ok), 21:44, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > питонячий разраб

    а вот тут я резко передумал. НЕ НАДО. пусть будет JS.

     

  • 1.33, fork (??), 16:28, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Наконец-то что-то полезное сделали...
     
  • 1.34, loader (??), 16:51, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Опять не тем занимаются. Конечно это повышает их опыт написания
    на js, но бесполезно все это. Когда выпустят Windows под js, вроде линукс
    кернел уже запустили.
     
  • 1.39, Аноним (-), 18:39, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Идиотизм, есть же Java-плагин. А minecraft взлетит?
     
     
  • 2.41, Xasd (ok), 18:50, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Идиотизм, есть же Java-плагин. А minecraft взлетит?

    идея плугинов внутри Www-страниц -- давно изжила себя. непойму почему разработчикам браузеров (хотябы Chromium и Firefox) не хватает силы-воли чтобы объедениться и вместе исключить эту технологию %) %)

    запускать Java-игрушки внутри браузерного окна -- ничем не лучше, чем еслибы просто открывать эти игрушки в Standalone-виде

    ...ну или хотябы сделать чтобы при загрузки Www-страницы плугины не показывалисьбы сразу, а всплывал бы вопрос типа:
    "внимание! данная страница содержит код активирования сторонних плугинов, этот код может быть опасным для вашего компьютера. разрешить использование этого кода? [Да], [Скрыть это сообщение]"

     

  • 1.42, Xasd (ok), 19:03, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    интересно то что репозиторий исходного кода (https://github.com/nurv/BicaVM) также содержит и бинарные (*.class, *.jar) файлы :-) :-)

    ...проприетарность технологии Java -- так и лезет из всех щелей :-)

     
  • 1.43, Аноним (-), 20:41, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А Форт-меньше памяти займет!-)
     
     
  • 2.46, Аноним (-), 21:16, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А Форт-меньше памяти займет!-)

    Йода на нем программирует.

     
     
  • 3.47, Аноним (-), 21:16, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> А Форт-меньше памяти займет!-)
    > Йода на нем программирует.

    Форт меньше памяти займет а.

    Вот как надо было написать правильно :ROFL:

     
     
  • 4.55, Frank (ok), 18:21, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    С точностью до наоборот:
    А займёт памяти меньше Форт!
     
     
  • 5.62, Аноним (-), 23:06, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А займёт памяти меньше Форт!

    Форт займет меньше А памяти!

     

  • 1.52, yurkis (ok), 12:08, 22/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Серебраной пули нет! Но все равно с упорством достойным лучшего применения серебряную пулю уже в который раз пытаются сделать из говна :(

    JS во все поля уже поднадоел.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру