Lo que pone en peligro Scala hecho para funcionar en JVM?
-
30-09-2019 - |
Pregunta
Scala es un lenguaje maravilloso, pero me pregunto cómo podría mejorarse si tenía su propio tiempo de ejecución?
Es decir. lo que las opciones de diseño se realizaron debido a la elección de JVM?
Solución
Este artículo es una discusión con Martin Odersky (creador de Scala) e incluye los compromisos que se hicieron en Scala para la compatibilidad con Java. El artículo menciona:
- sobrecarga estática de métodos
- Tener ambos rasgos y clases
- La inclusión de punteros
null
.
Otros consejos
Los dos compromisos más importantes que conozco son:
- escriba borrado ( " Tipo reflexionar sobre "): tiene a Administrar un manifiesto a moverse por la compilación de Java (JVM independiente de la, por razones de compatibilidad con versiones anteriores).
- colección de tipo primitivo: ej .: matrices
nuevo esquema de manejo de matrices en Scala 2.8. En lugar de boxeo / unboxing magia compilador y otra el esquema se basa en las conversiones implícitas y manifiestos para integrar las matrices
Estos son los dos principales limitaciones de JVM, cuando se trata de administrar tipo genérico (con límites): El Java JVM no mantiene el uso tipo exacto de un objeto genérico, y tiene tipos "primitivos"
.Pero también se podría considerar:
- optimización de llamada es apoyaron completa por la JVM , era duro para hacer de todos modos ( y sin embargo, Scala 2.8 introduce la anotación
@tailrec
) - UAP (Acceso Universal Principio) necesidades a ser emulado no ( con el apoyo de Java), y será pronto completado para Valor Holder (
@proxy
) - el todo mezclar-en el mecanismo necesita también ser emulado
- manera más general, la enorme cantidad de tipos estáticos introducido por Scala necesidad (para la mayoría de ellos) que se genere en Java:
A fin de cubrir tantas posibilidades como sea posible, Scala proporciona:
- los tipos de clases convencionales,
- Tipos de clase de valor,
- tipos Nonnullable,
- tipos Monad,
- tipos rasgo,
- tipos Singleton de objetos (módulos de procedimiento, clases de servicios públicos, etc.),
- tipos compuestos,
- Tipos funcionales,
- clases de casos,
- tipos en función del recorrido,
- Los tipos anónimos,
- Tipos de uno mismo,
- Tipo alias,
- tipos genéricos,
- tipos genéricos Covariantes,
- tipos genéricos contravariant,
- acotados tipos genéricos,
- Extracto tipos,
- tipos existenciales,
- tipos implícitos,
- tipos Aumentada,
- Ver tipos limitada, y
- Los tipos estructurales que permiten una forma de tipificación de pato cuando todo lo demás falla
Menos un problema con el tiempo de ejecución de una resaca cultural. Igualdad universal, algoritmos hash toString
Más profundamente ligada a la máquina virtual:. Estricta evaluación por defecto, las funciones impuras, excepciones