Почему столько новых языков записано для Java VM? [закрытый]

33
задан 3 revs, 3 users 100% 13 June 2015 в 10:05
поделиться

10 ответов

Почему бы им не написать новую виртуальную машину для нового языка?

Это легко:

  • написать хорошую ВМ сложно
  • написать быструю ВМ сложно
  • заставить ВМ работать под несколькими архитектурами сложно
  • существующие библиотеки работают с существующими ВМ
  • существующие инструменты (отладчики, профилировщики, компиляторы, ...) работают с существующими ВМ. ...) работают с существующими ВМ
  • заставить людей установить новую ВМ сложно
  • мгновенная совместимость с другими языками, нацеленными на ту же ВМ
  • существующие ВМ были тщательно протестированы в производстве
54
ответ дан 27 November 2019 в 17:22
поделиться

Сначала второй вопрос: зачем изобретать велосипед? Существует несколько реализаций виртуальной машины Java, в том числе высокооптимизированные, и есть по крайней мере одна, доступная для чертовски рядом с любой платформой.

Первый вопрос второй: существует огромное количество сторонних библиотек и инструментов, поддерживающих код, скомпилированный в байт-код Java и запускаемый на виртуальной машине. Когда вы создаете новый язык, одна большая проблема заключается в том, что вам нужно создать все, что люди могут использовать с ним, или сделать его совместимым с чем-то еще (например, связывание с существующими статическими библиотеками C, или .Net, или COM, или Java ВМ). Открытая спецификация виртуальной машины Java (до сих пор), глубокая история и широкая применимость делают ее хорошей мишенью для новых языков.

4
ответ дан 27 November 2019 в 17:22
поделиться
  • за 15 лет доработки, улучшения производительности и т.д.
  • является свободным и с открытым исходным кодом
  • работает на широком спектре платформ
  • поддерживает несколько языков на одной виртуальной машине
  • основной язык (Java) является одним из самых распространенных языков, поэтому Java + JVM - относительно безопасная точка входа
  • достаточно безопасная и надежная
15
ответ дан 27 November 2019 в 17:22
поделиться

Очевидные причины:

  1. Существует огромная существующая библиотека классов
  2. Существует несколько широко используемых реализаций виртуальных машин.
  3. Эти языки семантически больше похожи на Java, чем вы думаете.
3
ответ дан 27 November 2019 в 17:22
поделиться

Производительность и библиотеки

  • JVM - одно из наиболее оптимизированных программных продуктов в мире.
  • Воспользоваться огромным массивом библиотек классов Java.
  • Тот факт, что взаимодействие между Java и языками, отличными от Java, внутри JVM работает.
26
ответ дан 27 November 2019 в 17:22
поделиться

Потому что это не технология Microsoft. Как отмечали другие, существует множество веских причин для использования JVM, но я думаю, что она была бы немного менее популярной, если бы среда CLR от Microsoft была такой же бесплатной, переносимой и открытой.

4
ответ дан 27 November 2019 в 17:22
поделиться

Потому что после почти 20 лет усилий Java VM является

  • переносимой
  • достаточно эффективной, не как C или C++, но с хорошей производительностью (учитывая, что это все еще vm)
  • легко интегрируемой
  • интенсивно поддерживаемой API или библиотеками

Я имею в виду, если я планирую выпустить новый язык, почему бы мне не использовать JVM? Хорошо, есть и другие виртуальные машины (llvm, parrot), но JVM интенсивно поддерживается, известна и протестирована.

И работает она тоже неплохо! Отсутствие invokeDynamic будет решено с переходом на Java7, так что лучше так...

5
ответ дан 27 November 2019 в 17:22
поделиться

Что делает его настолько мощным или популярным, что для него создаются новые языки программирования, которые, похоже, тоже набирают популярность?

Он свободный и открытый, зрелый (стабильный, полный), и окружающая экосистема огромна.

Почему бы им не написать новую ВМ для нового языка?

Написать ВМ, такую же хорошую, как JVM, сложно. Спецификация JVM и ее реализация совершенствовались на протяжении более десяти лет лучшими умами в отрасли.

5
ответ дан 27 November 2019 в 17:22
поделиться

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

Если вы пишете собственную ВМ, вам придется написать одну для Linux/Unix/BSD, одну для Mac и одну для Windows, и вам придется поддерживать ВМ на всех этих платформах, а также поддерживать компилятор вашего языка и библиотеки времени выполнения. Если вы используете Java VM, то о первой части за вас позаботятся Oracle, IBM и Apple.

5
ответ дан 27 November 2019 в 17:22
поделиться

JVM надежна и работает от крошечной смарт-карты Java (хорошо, крошечной виртуальной машины;) до самых больших кластерных суперкомпьютеров, которые вы можете себе представить.

Поскольку он прочен, есть целые страны, где люди имеют:

  • смарт-карту Java в своем кошельке либо в качестве национального удостоверения личности, либо в качестве карты системы медицинского обслуживания (или и того, и другого)
  • ; JVM (или виртуальная машина Dalvik, которая в основном представляет собой переименованную версию виртуальной машины Java от Google). Черт возьми, в iPhone есть процессор ARM , оптимизированный для работы с байт-кодом Java (но по коммерческим причинам Apple решила не предлагать Java на iPhone / iPad).
  • проигрыватель BluRay, который, конечно же, имеет Java (потому что это часть спецификации BluRay).

Я разрабатываю коммерческое программное обеспечение на Java: мы продаем под Windows и OS X, но все мы разрабатываем под Linux. И это просто работает. И это работает и на Solaris, и т. Д. И это потому, что мы нацелены на JVM: до свидания, проблема переносимости. Пока на платформе есть виртуальная машина, программное обеспечение должно работать.

Тогда я не могу поверить, что кто-то еще об этом упомянул: это очень хорошее начало с точки зрения безопасности.

Java VM по своей конструкции неуязвима к переполнению / переполнению буфера. Это огромное . Это на самом деле больше, чем думает большинство людей .

Единственное переполнение буфера "Java", которое я помню в Linux (которое побудило меня выполнить обновление из-за соображений безопасности), на самом деле было переполнением буфера, приводящим к выполнению произвольного кода в ...библиотека, написанная на C (zlib, если я правильно помню, в те времена, когда Java в Linux все еще использовала эту библиотеку по умолчанию).

Конечно, для веб-приложений переполнение / переполнение буфера, ведущее к выполнению произвольного кода, больше не является наиболее важным вектором атаки (теперь, когда XSS и SQL-инъекции украли все внимание). Но во всех остальных случаях переполнение / переполнение буфера является источником большинства проблем безопасности.

JVM невосприимчива к этому.

В дополнение к этому, благодаря его конструкции к нему легко подключать различные инструменты, такие как профилировщики и отладчики.

Это очень надежная и безопасная (при правильном использовании) технология. Вот почему он так широко используется как технически подкованными (Java огромна в Google, от GMail до их Android, GWT и т. Д.), Так и технически не подкованными компаниями.

На самом деле можно утверждать, что успех Java исходит от JVM и что «Java как виртуальная машина» намного важнее, чем «Java как язык».

JVM - самый большой «языковой» успех за последние 20 лет. И это заслужено. И он здесь, чтобы остаться :)

19
ответ дан 27 November 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: