Какие есть альтернативы Java VM? - PullRequest
8 голосов
/ 30 августа 2010

Когда Oracle подает в суд на Google за виртуальную машину Dalvik, становится ясно, что вы не можете внедрить виртуальную машину Java без лицензии от Oracle (РЕДАКТИРОВАТЬ: Мэтью Флэшен указывает, что претензии Oracle могут быть недействительными. В любом случае, у нас есть ситуациягде Oracle угрожает ВМ-реализациям.).Это может стать смертью для реализаций Java с открытым исходным кодом (например, Apache Harmony ).

Я не хочу обсуждать влияние или легитимность этого судебного процесса.но, как Java-программист, я хочу более глубоко изучить альтернативы, чтобы быть готовым к каждому случаю.Поскольку я вижу создание компилятора как незначительную проблему, мой основной интерес представляют альтернативные виртуальные реализации, которые служат той же цели, что и JVM.

Виртуальная машина, которую я ищу, должна удовлетворять некоторым условиям:

  • без патентных вопросов
  • существует реализация с открытым исходным кодом
  • потенциал для оптимизации / хорошей производительности
  • независимость от платформы (ВМможно переносить на разные платформы без больших препятствий)

Пожалуйста, добавьте несколько рекомендаций для меня.

Ответы [ 3 ]

6 голосов
/ 30 августа 2010

LLVM - это действительно хорошая оптимизирующая виртуальная машина низкого уровня.Он может поддерживать такие языки, как C и C ++, и не имеет встроенной поддержки функций высокого уровня, таких как сборка мусора.

VMKit представляет собой реализацию виртуальных машин Java и CLI поверхLLVM.Поскольку он использует байт-код Java, это, вероятно, не помогло бы с патентными проблемами.

HLVM - еще одна интересная виртуальная машина высокого уровня, построенная на основе LLVM.Вероятно, он достаточно отличается, чтобы избежать большинства известных патентов, но в основном он предназначен для численных вычислений и функционального программирования.

На стороне с динамической типизацией есть Parrot .

Я работаю над компилятором и виртуальной машиной для языка собственного дизайна, но не рассчитываю, что он когда-нибудь будет закончен.; -)

Имейте в виду, что любая большая часть программного обеспечения будет нарушать многочисленные патенты, важно то, насколько они известны (и насколько владельцы патентов активно разыскивают нарушителей).Конечно, вся патентная система абсурдна, и нам было бы намного лучше избавиться от нее.

4 голосов
/ 30 августа 2010

Я не думаю, что есть какое-либо существенное программное обеспечение, которое не имеет патентных вопросов.

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

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

3 голосов
/ 08 апреля 2019

GraalVM - это исследовательский проект, разработанный Oracle Labs и уже работающий в Twitter. Я не могу поверить своим глазам, что никто ничего не упоминает об этом, это так странно. В любом случае, GraalVM - это многообещающее расширение виртуальной машины Java для поддержки большего количества языков и режимов выполнения для запуска приложений, таких как JavaScript, Python, Ruby, R, JVM-языки, такие как Java, Scala, Kotlin, Clojure. и языки на основе LLVM, такие как C и C ++. Проект GraalVM включает в себя новый высокопроизводительный компилятор Java, который называется Graal, и который можно использовать для своевременной настройки на виртуальной машине HotSpot. или в заблаговременной конфигурации на SubstrateVM. Основная цель этого проекта - повысить производительность базового языка виртуальных машин Java, чтобы он соответствовал производительности родных языков. Давайте подведем итог новым возможностям этого проекта и дадим краткое объяснение в соответствии с документами, почему вы должны его принять

  • Polyglot: Все языки (даже основанные на LLVM) используют одну и ту же виртуальную машину и ее возможности. Нулевая совместимость между языками программирования позволяет вам писать приложения полиглотов и выбирать лучший язык для вашей задачи
  • Собственный: Собственные образы, скомпилированные с GraalVM раньше времени, сокращают время запуска и уменьшают объем памяти приложений на основе JVM.
  • Возможность встраивания: GraalVM может быть встроен как в управляемые, так и в собственные приложения. Существуют интеграции в OpenJDK, Node.js, Oracle Database и MySQL GraalVM, которые устраняют изоляцию между языками программирования и обеспечивают совместимость в общей среде выполнения. Он может работать как автономно, так и в контексте OpenJDK, Node.js, Oracle Database или MySQL.

  • Производительность: Отчеты о тестах Graal показывают значительное улучшение производительности почти во всех своих реализациях благодаря тому, как GraalVM выполняет распределение объектов

Если кого-то сейчас не убедить, что это хороший выбор, и это действительно потрясающий проект, вы можете увидеть этот доклад Кристиана Талингера на “о том, почему Грааль подходит хорошо для Твиттера »

...