Почему JVM считается такой замечательной разработкой программного обеспечения?
JVM широко используется: Scala, Groovy, Jython и т. Д. Я слышал, что его описывают как "замечательный", "блестящий" и "недооцененный". Зачем?
В частности, что делает JVM уникальной? Несмотря на то, что все деньги были вложены в.NET, или сколько времени занимал C, или все современные языки программирования и виртуальные машины, созданные недавно, почему / JVM стоит одна?
3 ответа
ИМХО, это просто было некоторое время и было время, чтобы встряхнуть. (Я сравниваю стабильность JVM сегодня и 15 лет назад). В частности, хорошо реализована реализация JIT/hotspot, сборщик мусора, обработка потоков. Я не думаю, что jvm должен был быть многоязычной платформой, но он хорошо работает с не-Java языками.
imho, нет ничего блестящего в том, что вы можете запускать другие языки на jvm. вы также можете использовать много разных языков в вашей ОС. но я думаю, что использование простого байт-кода в качестве родного языка JVM очень помогло. легче переводить / компилировать языки в простой байт-код, чем в другой язык высокого уровня. совсем недавно спецификация jvm заметила существование других языков и добавила invoke-dynamic, которая в настоящее время доступна только из байт-кода (для этого нет конструкции java). но JVM также накладывает множество ограничений. например, вы не можете извлечь выгоду из оптимизации хвостового вызова; время запуска - это катастрофа, поэтому вам нужны читы (всегда работающий демон), чтобы эффективно использовать их для языка сценариев; отладка стековых трасс не-Java языков - это кошмар; haskell до сих пор не портирован на jvm из-за технических трудностей и совершенно разных моделей оценки
Я думаю, что JVM великолепен, потому что (спустя годы) он действительно быстрый (GC, JIT), стабильный, переносимый, с огромным проникновением на рынок и миллионами библиотек. поэтому вы пишете один раз, а потом запускаете на своем компьютере, сервере, телефоне, телевизоре и стиральной машине.
почему нет.NET или C? я думаю: мобильность, цена, удача. большинство серверов не являются окнами. дешевле начать с Java, чем.NET. C не переносимый, не имеет GC
Со всеми деньгами вылил в.NET
.NET не является открытым исходным кодом, связан с Microsoft и Windows. Пока OpenJDk открыт и доступен на всех платформах.
продолжительность времени C была вокруг
C/C++ намного сложнее работать с java. Пока результат примерно одинаков. Проще освоить - меньше тратить. Вот почему Ява является бизнес-выбором.
почему / JVM стоит одна
Java получает большую поддержку от Oracle(SUN прежде) и сообщества. Удалось собрать отличную аудиторию.