Подтвердить что ты не робот

Насколько сильно scala привязан к JVM?

Мне было интересно, есть ли Scala какие-либо конкретные свойства, которые делают его неотъемлемо зависимым от JVM, или если он может быть жизнеспособным поверх чего-то другого. Я могу видеть, насколько вездесущие и продолжительные улучшения JVM и взаимодействие между Java и Scala являются сильными аргументами для этого стратегического выбора. Однако я понимаю, что по этой причине compromises были внесены в дизайн языка.

Если дни спада должны были появиться для JVM, Scala спустится с корабля или может существовать жизнь после JVM?

4b9b3361

Ответ 1

Были проекты, в которых Scala работает на время выполнения .NET (прекращено, человек, который работал над ним улучшает бэкэнд компилятора для будущих версий Scala) и LLVM (застрял). Более того, для Scala → Javascript (например, scala js) существует несколько бэкендов, поэтому я бы сказал, что можно развязать Scala из JVM в некотором смысле.

В то же время многие API-интерфейсы Scala зависят от API Java, многие оптимизации и внутренняя работа реализованы в отношении JVM. Существует несколько обсуждений списков рассылки на Scala без JVM, scala с его собственной виртуальной машиной и т.д., Например этот, но, насколько мне известно, официальное выражение также должно поддерживать нестандартные JVM (Avian, например), а не иметь собственную среду выполнения. Таким образом, Scala можно запускать на iOS и Android (и ПК, конечно).

Как отметил Симон Оксенвитер, Avian еще не совсем другой JVM, но имеет некоторые отличительные преимущества по сравнению с HotSpot:

  • Возможность создавать собственные, автономные, встраиваемые двоичные файлы
  • Работает на iPhone, Android и других объектах ARM.
  • Компиляция AOT и JIT полностью поддерживается
  • Поддержка хвостовых вызовов и продолжений
  • Внятная кодовая база
  • Отзывчивые сопровождающие
  • Открыть для улучшений (классы значений, специализация и т.д.)