“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

SCALA 2.12 路线图

  • 2014-07-05
  • 本文字数:1630 字

    阅读完需:约 5 分钟

Scala 官方网站于 6 月 30 日发布了 Scala 2.12 路线图,新版本需要 Java 8 的支持。以下是该路线图的详细内容,英文原文请点击这里

目标

  • 最小化用户和类库维护者的迁移成本。
  • 在一段时间内继续支持 Java 6(仅针对 Scala 2.11)。
  • 跟踪 Java 平台的进展。

如何实现

  • 即将发布的 2.11.x 版本将会引入以下实验特性:Java 8 风格的闭包编译、 Miguel 的新后端和优化器
  • 通过完全向后兼容的源码轻松地实现 2.11 和 2.12 版本之间的交叉构建,Scala 团队并不会移除废弃的方法,但是会支持可选的废弃错误(译者注:根据用户的选择决定是否告诉用户他们使用了废弃的方法)。
  • 官方构建的 Scala 2.12 将会以 Java 8 为目标平台(因此运行也需要 Java 8)。在默认情况下将会使用新的后端和优化器。

背景

  • 在没有对 artifactId 做进一步命名调整之前无法让一个 Scala 二进制版本以两个不同的 Java 版本为目标。即使确实能够通过 maven 指定所需的 Java 版本,这个分支对于生态系统而言也会是一个巨大的负担。因此,所需 Java 版本与 Scala(二进制)版本必须匹配。
  • 通过在这两个版本上运行同样的社区构建(Community Build)检查 2.11/2.12 的交叉构建。为了提升源码的向后兼容性,Scala 2.12 不会移除废弃的成员。但是如果用户在代码中使用了 2.11.0 版本或者更早版本中的废弃成员,那么默认情况下 2.12 的编译器将会发出废弃错误。原则上,如果针对 Java 6 平台编译 2.12 的类库,那么它应该与 2.11 向后兼容。
  • 紧跟平台的发展是非常重要的,即使 Java 8 中基于 MethodHandle 实现的闭包可能不会马上产生显著的性能收益。对于那些并不支持 Java 8 字节码的平台而言,有两个项目( retrolambda Forax’s JSR292 backport )能够将 Java 8 的 invokedynamic 字节码重写为 Java 6 的字节码。

Scala 2.11 和 2.12 共享的特性

  • 使用 MethodHandle 有效地编译 Lambda(在 2.11 上需要单独的兼容模块)。
  • Java 8 互操作(双向):
    • 改善了 Java 8 字节码的读取支持(已经在 2.11 中实现)
    • 提升并默认打开 SAM 支持。Scala 能够通过它无缝地调用 Java 8 高阶方法(2.11 已经实现,使用 -Xexperimental)
    • 兼容模块让 Java 8 能够调用 Scala 的高阶方法
  • 完全集成 Miguel 的新后端和优化器(重构代码、深入的测试和文档、移除旧的后端)。
  • 风格检查器:一个有效的、社区驱动的平台,它可以实现精确的代码风格检查(在编译器之上构建)。
  • 集合:提升测试覆盖范围、性能和文档。
  • 改善文档:关注于内容(如果想要做贡献,这是一个非常好的起点,也包括工具方面的文档)。
  • 继续改善基础设施(sbt 构建,提升拉请求验证和发布自动化、bug 跟踪器清理和自动化)。

Scala 2.12 专有的特性:更多的 Java 8 特性

以下特性的开发将于 2015 年开始。因为这些特性是二进制不兼容的,所以它们无法移植到 2.11 上。

  • 将 FunctionN 转变成函数式接口( Functional Interface ),这样 Java 8 代码不需要包装器就能调用 Scala 中的高阶方法。
  • 支持 @interface 特征,确保编译成 Java 接口(有助于互操作、性能和二进制兼容性)。
  • Streams:集成进 Scala 集合?
  • 使用 JDK 提供的 forkjoin 类库而不是嵌入自己的。
  • SIP-20 改善了惰性 val 初始化。

时间

Scala 2.10.5 (Q4 2014) 将会是 2.10 的最后一个版本。Scala 团队打算在 2014 年发布 5 个 2.11.x 版本,在 2015 年还会发布几个版本。2.12 将会从 2014 Q4 开始开发,2015 年团队的开发重心将会转移到 2.12。

2.10.0

04/01/2013

第一个 2.10.x 版本

2.11.0

16/04/2014

第一个 2.11.x 版本

2.11.1

19/05/2014

复制代码
2.11.2

21/07/2014

复制代码
2.11.3

29/09/2014

复制代码
2.10.5

Q4 2014

最后一个 2.10.x 版本

2.12.0-M1

24/11/2014

复制代码
2.11.4

Dec 2014

复制代码
2.12.0-M{2,3,4}

Q{1,2,3} 2015

按季度发布 2.12.0-Mx 版本

2.12.0-M5

Oct 2015

复制代码
2.12.0-RC1

Nov 2015

M1 发布一年之后

2.12.0

Jan 2016


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-07-05 00:343801
用户头像

发布了 321 篇内容, 共 115.6 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

优质的双机热备软件厂家是哪家?咨询电话多少?

行云管家

高可用 双机热备 双机热备软件

React源码分析6-hooks源码

goClient1992

React

面试官:请实现Javascript发布-订阅模式

helloworld1024fd

JavaScript

美团前端常考手写面试题总结

helloworld1024fd

JavaScript

React源码分析7-state计算流程和优先级

goClient1992

React

别错过!4C首发直播,上届全国总冠军带你入门赛题

飞桨PaddlePaddle

计算机 飞桨 PaddlePaddle

即刻报名!飞桨黑客马拉松第四期如约而至,等你挑战

飞桨PaddlePaddle

深度学习 paddle 开源 大赛 飞桨

有哪些值得推荐的敏捷开发工具❓

没有用户名丶

听说 ChatGPT 推荐了一场技术活动,就在本周六的北京?

Daocloud 道客

北京 技术活动

一图读懂阿里云RDS架构与选型

NineData

数据库 阿里云 Serverless RDS arm

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

混沌工程之 ChaosBlade 故障注入百宝箱

柠檬汁Code(binbin0325)

源码分析 混沌工程 故障注入 ChaosBlade Chaos

镇江有具有资质的等保测评机构吗?在哪里?

行云管家

等保 等级保护 等保测评 镇江

滴滴前端一面常考手写面试题合集

helloworld1024fd

JavaScript

ChatGPT 入门案例|商务智能对话客服(四)| 社区征文

TiAmo

AI ChatGPT

云业务成本的组成与管理趋势

SEAL安全

云服务 云成本 FinOps 企业号 2 月 PK 榜

高级前端二面必会vue面试题合集

bb_xiaxia1998

Vue

预告| 2月24日不见不散!开源治理专场约定你

OpenI启智社区

人工智能 开源社区 开发者大会 开源治理 OpenI启智社区

React源码分析5-commit

goClient1992

React

每日一题之Vue数据劫持原理是什么?

bb_xiaxia1998

Vue

社招前端一面必会vue面试题

bb_xiaxia1998

Vue

Hadoop 及Spark 分布式HA运行环境搭建

京东科技开发者

大数据 hadoop spark 后端 企业号 2 月 PK 榜

火山引擎数智平台ByteHouse入围稀土掘金《Top10年度创新产品》

字节跳动数据平台

大数据 云原生 Clickhouse

预告| 亮点抢先看!第四届OpenI/O启智开发者大会主论坛24日启幕!

OpenI启智社区

人工智能 开发者大会 算力网络 OpenI启智社区

软件测试/测试开发 | App常见bug解析

测试人

软件测试 自动化测试 测试开发 app测试

基金行业,镭速文件传输系统方案

镭速

一台不容错过的Java单元测试代码“永动机”

京东科技开发者

Java 单元测试 京东云 京东技术

云原生观测性--OpenTelemetry 之实战篇

Daocloud 道客

云原生 可观测性 OpenTelemetry

百度工程师浅谈分布式日志

百度Geek说

分布式 运维 日志 百度文库 企业号 2 月 PK 榜

面试官:能用JavaScript手写一个bind函数吗

helloworld1024fd

JavaScript

NFT链游开发实现DAPP系统落地

薇電13242772558

NFT 链游

SCALA 2.12路线图_Scala_孙镜涛_InfoQ精选文章