software - ¿Qué tan fuerte es scala atado a JVM?
scala vs java (1)
Me he estado preguntando si Scala tiene propiedades particulares que lo hacen inherentemente dependiente de la JVM, o si podría ser viable por encima de otra cosa. Puedo ver cómo la ubicuidad y las mejoras continuas de la JVM, y la interoperabilidad entre Java y Scala, son argumentos sólidos para esta elección estratégica. Sin embargo, entiendo que por esta razón, se hicieron compromises en el diseño del lenguaje.
Si llegasen los días de declive para la JVM, ¿Scala se hundiría con la nave o podría haber vida después de la JVM?
Hubo proyectos para hacer que Scala se ejecute en tiempo de ejecución .NET (descontinuado, la persona que trabajó en él está mejorando el backend del compilador para futuras versiones de Scala ) y LLVM (atascado). Además, hay varios backends para Scala -> Javascript (por ejemplo, scala js ), por lo que diría que es posible desatar Scala de la JVM en algún sentido.
Al mismo tiempo, muchas API de Scala dependen de las API de Java, muchas optimizaciones y el funcionamiento interno se implementan con respecto a la JVM. Existe una serie de discusiones sobre listas de correo en Scala sin JVM , Scala con su propia máquina virtual, etc., por ejemplo, esta , pero por lo que sé, la declaración oficial también es compatible con JVM no convencionales ( Avian para Ejemplo), en lugar de tener un tiempo de ejecución propio. De esta manera, Scala puede ejecutarse en iOS y Android (y, por supuesto, en PC).
Como señaló Simon Ochsen, Avian no es solo otra JVM , sino que tiene algunas ventajas distintas en comparación con HotSpot:
- Capacidad para crear binarios nativos, autocontenidos e integrables
- Se ejecuta en iPhone, Android y otros objetivos ARM
- La compilación de AOT y JIT son totalmente compatibles
- Soporte para llamadas de cola y continuaciones.
- Una base de código inteligible
- Mantenedores receptivos
- Abierto para mejoras (clases de valor, especialización, etc.)