CodeOne 主题演讲:Java,未来已来

阅读数:1664 2018 年 11 月 7 日

话题:语言 & 开发Java

在上一次 JavaOne 大会之后,首届 Oracle CodeOne 大会最近于美国旧金山举行。周一晚上主旨演讲的头条是“Java:未来已来(The Future of Java Is Today)”,其中包括:新的每半年发布一次的 Java/JDK 的发布节奏正按计划进行;Oracle 和许多其他组织将继续支持 Java 并为之做出贡献;有几个新的 OpenJDK 项目在探索提高生产力的语言功能,比如,原始字符串字面量(raw String literals)、纤程(fiber)和 Continuation、外部函数和数据接口。

在 Java 平台团队软件开发副总裁 Georges Saab 简短的欢迎致辞后,第一个上台演讲的是 GitHub 的现场维护和支持服务(Field Services)副总裁 Matthew McCullough。他强调了 Java 平台的开源参考实现 OpenJDK 的重要性,并讨论了“Skara 项目”,该项目是官方 OpenJDK 上游 Mercurial 存储库基于 GitHub 原型的镜像。

Skara 项目旨在研究用于 JDK 源代码的源码管理和代码审查的备选项。McCullough 还谈到,大多数“有重大影响力的软件”都是全球协作开发的,并鼓励观众参与开源软件项目。为更好地说明这一目标,他还简单演示了几个 GitHub 的新功能。

值得一提的是,Skara 项目还处在早期阶段,目前是独立的,但和社区驱动的 AdoptOpenJDK 项目松散地保持一致。AdoptOpenJDK 项目也是上游 OpenJDK 存储库的镜像,并提供所有最新的和未来的 JDK 版本的构建,目标是为 Java(包括最近发布的 Java 11)的长期支持(Long Term Support,简称 LTS)版本提供四年的构建和最好的社区支持。为 AdoptOpenJDK 项目提供商业支持的有 IBM、Azul Systems,LJC、微软、Ocado Technology 和 Packet。

Saab 重回台上后,讨论了“保留 Java 优点”的相关话题。Java 将继续免费和开源,社区致力于提供平台的完整性,并投资于开发人员生产力和兼容性。在质量和安全上也持续地进行投入,并保持开放和透明的发展。

讲到 Oracle 的贡献时,Saab 展示了最近开源的几个之前是商业 Java 平台的功能:在 Java 10 中有应用类数据共享(Application Class Data Sharing,简称 ACDS);在 Java 11 中有ZGC 项目(用于几千兆堆的低延迟 GC)、飞行记录器任务控制(用于诊断和监控)。

新的每半年一次的发布计划已经成功交付,它为 Java 平台提供逐步改进,并使开发人员能够更快地访问到新功能,“不再有破坏性的主要版本”(如果计划的功能错过了发布截止日期,那么就放到下一次的发布)。Saab 简单提了提新的 LTS 版本和 Oracle 支持模式,关于这些,在社区内目前存在很多困惑(InfoQ 最近报道了与该主题相关的“Java 还是免费的”Java Champion 声明)。

该主旨演讲部分的结尾,是向 OpenJDK 社区中很多贡献者的致谢感言,同时也提到了几个 Oracle 资助的 Java 社区支持项目,包括Java MagazineJava User GroupsJava ChampionsjDuchess 项目Oracle Academy Student Outreach以及Java Community Process(简称 JCP)

接下来演讲的是 Oracle 的 Java 平台团队首席架构师 Mark Reinhold。演讲一开始,他先提醒听众,迁移到新的 Java 模块系统(JEP 261)是个非常大的挑战,因为需要重写大量内部组件。但是,自从 Java 9 中发布该功能以来,应用效果一直不错,并且开始实现了收益。Reinhold 鼓励每个 Java 开发人员都看看这个新功能,并给大家推荐了几本入门书。

新的模块化架构改进了平台发布节奏,并回应了 Saab 早先的评论,Reinhold 提到了 Java 10 和 Java 11 成功地按时交付,也提到了 LTS 发布会带来的影响(主要是跟 Oracle 提供的商业支持有关,尽管其他供应商和 AdoptOpenJDK 计划也提供替代的构建和社区驱动以及商业支持模块)。

该部分主旨演讲的核心信息是“Java 仍然免费”,OracleJDK 和 OpenJDK 构建非常类似(尤其是首个每半年一次的 LTS 发布,尽管构建可能在此日期后会出现分歧,这取决于会发布什么安全性和错误补丁到上游 OpenJDK 存储库)。Reinhold 提到了“关于新发布模型的五大误解”,其中包括错误地认为,非 LTS 发布是实验性的,如果维护的是不经常迁移的系统,那么可以忽略非 LTS 的发布。

他还讨论了用最新的 Java 版本测试开源项目的社区工作,提到了两个推特标签:#WorksFineOnJDK9 和 #WorksLikeHeavenOnJDK11。强烈建议所有在使用 Java 9 或更高版本的开发人员升级到最新的版本,包括所有在使用的工具和依赖项。

接着,Reinhold 换了一个话题,开始展望未来。目前,Java 12 / JDK 12 有 4 个与之相关的 JEP(到目前为止),包括(启用命令行标志)新switch 表达式的预览和原始字符串字面量,以及“一个 AArch64 端口,而非两个”和默认的 CDS 存档。“面对编程范例、应用领域、部署风格和硬件的不断发展”,几个未来功能的重点放在了开发人员的生产力和程序性能上。

该主旨演讲的最后部分重点介绍了 4 个 OpenJDK 的新项目。

  • Amber:“调整语言仪式的大小”,包括局部变量类型推断、无需转义排序的原始字符串字面量。

  • Loom:“Continuations 和纤程”,包括删除旧的“无意义”或与线程有关的不良 API 方法,添加纤程,即“由 Java 虚拟机管理的轻量级高效线程、让开发人员能够使用同样简单的抽象,但具有更好的性能和占用更小的空间”。

  • Panama:非 Java 外部函数和数据接口,包括从 JVM(C、C++)调用本机函数和从 JVM 或 JVM 堆访问本机数据

  • Valhalla:Value 类型和专用的泛型。

Reinhold 展示了一系列实时编码演示,用的是最新(未发布)Java 12 build,其中的示例可以从以上链接的各个项目网站上找到。

社区对该 Java 主题演讲的反应总体上是积极的,Paul Bakker 表示“CodeOne!上的主旨演讲很棒,Java 生态系统看起来比以往更好。”Chris Hegerty 评论道:“CodeOne!上的主旨演讲很棒,尤其是 Mark Reinhold 讲解技术的那部分”。

阅读英文原文:The Future of Java is Today: CodeOne (née JavaOne) Keynote Highlights

感谢冬雨对本文的审校。