阿熊
阿熊
元老
发贴: 5644
|
于 2014-08-14 17:49
根据近期Scala路线图所公布的信息来看,Scala从版本2.12开始,只能运行在Java 8及之后的版本上。 对lambda表达式的原生支持使得Java 8的虚拟机成为了Scala更好的宿主。 动时,你认为最大的挑战可能是什么?
迁移到Java 8是一个很自然的演进。例如,Scala 2.11已经有一个试验性的特性,这个特性是在Java 6上尽可能多地模仿Java 8提供的一些功能。 根据以往的实现,一个Scala的函数体会被提取到外部所在类的一个私有方法中。为了在运行时表示这个函数,会实例化一个匿名类。而这个类会包含一个方法,用于调用上述私有方法。通过迁移到Java 8,我们不再需要在编译期生成这个匿名类,而是在运行时使用LambdaMetaFactory取而代之。类似地,2.11的类型检查器支持从Scala的函数代码中合成单一抽象方法(Single Abstract Method)类(当使用参数-Xexperimental运行)。 这些是这个挑战的技术层面的亮点。正如你对一个平台变动的期望,社会层面也是一个非常重要的因素。2.12的每一点的计划都围绕如何使升级变得容易。并且我们对社区抱有热切的期望。是否能快速采用Scala 2.12取决于围绕它的核心类库、测试框架、IDE支持和其他工具的可用性。另外,我们意识到不是所有人都能立即升级到Java 8。为了解决这个问题,我们计划把2.11和2.12在语言和类库上的差别控制在有限的范围内。我们想要开源作者们能够非常容易地交叉编译这两个版本。 这也是在更长一段时期内,要将2.11作为一个可用版本的一部分重要原因。关于我们打算如何执行这个策略,2.12的路线图包含了更多的细节。
|