Ответ 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 полностью поддерживается
- Поддержка хвостовых вызовов и продолжений
- Внятная кодовая база
- Отзывчивые сопровождающие
- Открыть для улучшений (классы значений, специализация и т.д.)