什么危害Scala在JVM上运行?

Łuk*_*Lew 21 jvm scala language-design jvm-languages scala-2.8

Scala是一种很棒的语言,但是我想知道如果它有自己的运行时怎么可以改进?
即因为JVM选择而做出的设计选择是什么?

Von*_*onC 26

我所知道的两个最重要的妥协是:

  • 类型擦除(" 反映在类型上 "):为了向后兼容的原因,它必须管理一个清单来绕过Java编译(独立于JVM).
  • 原始类型的集合:例如:数组

    在Scala 2.8中处理数组的新方案.该方案不依赖于装箱/拆箱和其他编译器魔术,而是依赖于隐式转换和清单来集成阵列

当涉及到管理泛型类型(带有边界)时,这些是JVM的两个主要限制:Java JVM不保留通用对象中的确切类型,并且它具有"原始"类型.


但你也可以考虑:

为了涵盖尽可能多的可能性,Scala提供:

  • 传统的班级类型,
  • 值类类型,
  • 不可侵犯的类型,
  • Monad类型,
  • 特质类型,
  • 单例对象类型(过程模块,实用程序类等),
  • 复合类型,
  • 功能类型,
  • 案例类,
  • 路径依赖类型,
  • 匿名类型,
  • 自我类型,
  • 输入别名,
  • 通用类型,
  • 协变泛型类型,
  • 逆变通用类型,
  • 有界泛型类型,
  • 抽象类型,
  • 存在类型,
  • 隐含类型,
  • 增强类型,
  • 查看有界类型,和
  • 结构类型,当其他所有方法都失败时,允许进行鸭子打字


Ben*_*ngs 20

本文是与Martin Odersky(Scala的创建者)的讨论,包括在Scala中与Java兼容的妥协.文章提到:

  1. 静态重载方法
  2. 有特质和阶级
  3. 包含null指针.