9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

Java 7 路线图更新:反响强烈

  • 2009-01-05
  • 本文字数:2283 字

    阅读完需:约 7 分钟

在 Devoxx 大会上,Java SE 首席工程师 Mark Reinhol,做了一个关于 Java 7(2010 年初发布)最新发展方向的演讲。虽然,Mark 称这次演讲的内容只是暂时的计划、不具约束力,但是仍然在社区中引起了很多反响,特别是针对闭 包特性(Closures)的遗漏。

出席会议的 Hamlet D’Arcy 提供了一个 Mark 演讲中有关 Java 7 特性的总结。其中一些比较重要的变化包括:

模块化——294 和 Jigsaw 项目

292——JVM 对动态语言的支持

JSR 203——更多新的 I/O API 已基本完成,包括真正异步的 I/O(不仅仅是非阻塞 I/O)和一个真正的文件系统 API。

JSR TBD:小的语言变化(见下)

安全重抛出——允许一个广泛的 catch 语句,编译器可以更加智能的基于 try 语句块中抛出的异常管理重新抛出。(我以前没有见过,不过看起来不错)

Nulll 解引用(dereference)表达式——Null 通过’?'语法检查,类似于 Groovy…使开发人员避免一连串 null 检查。

更好的类型推断(type inference)——与泛型实例化有关,但目前还不清楚这种推断会达到什么程度(我觉得越多越好)。

多捕捉(Multi-catch)——(是的!)允许在 catch 语句中用逗号分割一系列异常类型。

Joe Darcy 正在领导 Open JDK 开发,他的博客地址是 http://blogs.sun.com/darcy

JSR 296——Swing 应用框架——仍然需要更简化以方便 Swing 应用开发。

6u10 特性的向前兼容(Java Kernal、QUickstarter、新 Plug-in 等)。

他同时提到了曾经考虑过但可能不会引入到 Java 7 的特性:

闭包——围绕提议没有形成一致意见 具体化泛型(Reified generics)

第一类属性(1st class properties)

操作符重载

BigDecimal 语法

JSR 295——Bean 绑定

Java.net 开展了一次有关“哪些 Java 7 未采纳的特性是你最感兴趣的”的调查,其中闭包明显处于其他特性之前

闭包 47.4% (734 Votes)

具体化泛型 17.2% (266 Votes)

第一类属性 10.4% (162 Votes)

操作符重载 4.3% (67 Votes)

BigDecimal 语法 3.4% (54 Votes)

JSR-295 Bean 绑定 7.3% (113 Votes)

我对任何特性都不感兴趣 9.7% (150 Votes)

Ricky Clarkson 认为没有闭包 Java 将灭亡

果然被证实了。虽然 James Gosling 想要闭包,虽然已经有了 3 个闭包原型编译器,虽然其他 JVM 语言支持闭包,Java 7 还是没有闭包。

Martin Kneissl 也认为 Java 7 中没有闭包是个坏消息

应该增加闭包而不是 Java 5 中的“for”循环新形式。在 Java 6 中就应该有闭包。现在似乎 Java 7 中也不会有了。

闭包并不难以理解。至少当你把它们与 Java 中的匿名内部类作比较时是这样的。有的人不赞同。他们觉得总有一些愚蠢的程序员,所以应该限制语言以防止他们引起太多破坏,我不认同这个理由。这是不可能的。不称职的程序员在任何语言中都会搬起石头砸自己的脚

幸运的是,JVM 上还有其他语言可以使用 Java 的优点:库、可移植性和工具(某种程度上)。

Dustin Marx 在关于 Java 7 中最期待的特性的帖子中对闭包有一些矛盾的看法

就在我写这篇帖子的时候,已经有 160 票投完(不过很快就会出现新的投票),其中 Java SE 7 中最期待的落选特性是闭包。目前,闭包特性已经得到了总票数的几乎一半。从某种意义上说,这并不奇怪。闭包似乎主宰了 Java SE 7 的讨论直到被宣布不会在 Java SE 7 中引入。但是讨论是围绕着闭包的概念和如何实现闭包进行的争论。虽然闭包是 Java SE 7 最期待的落选特性之一,但是我个人对此非常矛盾。我有时会偶然的在工作中意识到闭包是多么有用,但是多数情况下没有它我也可以应付。也就是说,我不介意它被引入,但是当我听到没有被包含在 Java SE 7 中时这并没有困扰我。但是,如果我们相信目前的投票结果,那么接近一半的 Java 开发人员最想要这个特性。这与 Java.net 有关开发人员最想要 Java SE 7 引入闭包的问卷调查是一致的。

Osvaldo Doederlein对新特性感到兴奋,不过仍然很期望闭包

Java 7 是多年基础设施智能化的最好版本:294/Jigsaw,并发类加载——我认为这会提高大应用程序的启动时间,特别是类似于 JavaEE 服务器和 IDE 等基于微内核的应用,XRender——将最终使 Java 成为 Linux 桌面应用的一等公民,G1,全 64 位支持(将在 6u12 中首次亮相,获取 beta 版),ForkJoin。

这么多的好特性,我几乎都快忘了失去闭包的悲伤了。我猜是时候转移到 Scala、JavaFX 或者其他现代 JVM 语言上了(只要不是类似于 Ruby 或者 Python 的动态类型语言)。我认为从现在开始五年,如果我编写某种低层次的运行时,我会只写“标准”Java 代码。多亏社区的保护,Java 语言 正在慢慢转为一种遗产和低层次的角色。

另一方面,Matt Grommes关注于 BigDecimal 语法

我致力于一个金融系统有一年多时间了,BigDecimal 语法简直太痛苦了。我真的非常不满意。

Stephen Colebourne 向 Devoxx 和 JavaEdge 的与会者展示了 JDK7 语言的 10 种可能变化,并请他们投票:

绝对的胜者是——null 处理。Null 处理获得了 50 张最优先支持票,是排在第二位的字符串切换(string switch)特性票数的两倍,几乎是全部最优先支持票数的三分之一。而且,几乎有三分之二的与会者把它放在了前四位优先支持的特性里。

其他受欢迎的特性包括字符串切换、异常的多捕捉、对 Map 的增强型 for-each 循环(能够删除或者查找索引)和 ARM 风格的资源管理。

不受欢迎的特性(特别认为是糟糕建议的)是通过 [] 访问 List/Map 和字符串插值(字符串中的 ${variable} )。

泛型推断和多行字符串处于相对较低优先级但与会者不是特别反感。

值得一提的是,在 Devoxx 上对闭包特性的投票结果是 50:50。

您可以从 infoQ 中找到下一代Java SE 平台的更多信息

查看英文原文: Java 7 Roadmap Updated: Reactions

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2009-01-05 04:343092
用户头像

发布了 501 篇内容, 共 241.6 次阅读, 收获喜欢 57 次。

关注

评论

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

数据中台的最后一公里:数据服务

元年技术洞察

数据中台 中台 DaaS

chrome调试工具之Console

格斗家不爱在外太空沉思

浏览器 浏览器测试 11月月更

说说前端经常考的手写题

helloworld1024fd

JavaScript

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript

高频js笔试题看这一篇就够了

helloworld1024fd

JavaScript

这可能是你需要的React实战技巧

夏天的味道123

React

Istio Ambient Mesh七层服务治理图文详解

华为云开发者联盟

云原生 后端 华为云 企业号十月 PK 榜

React源码分析2-深入理解fiber

goClient1992

React

vue组件通信6种方式总结(常问知识点)

bb_xiaxia1998

Vue

React Context源码是怎么实现的呢

flyzz177

React

chrome调试工具之Sources

格斗家不爱在外太空沉思

浏览器 浏览器测试 11月月更

读懂React原理之调和与Fiber

xiaofeng

React

技术分享 | 如何确保API 的稳定性与正确性?你只需要这一招

霍格沃兹测试开发学社

计算机网络:数据链路层功能

timerring

计算机网络 11月月更 数据链路层

华为云从入门到实战 | 云速建站服务与企业主机安全服务

TiAmo

华为 华为云 11月月更

【愚公系列】2022年11月 微信小程序-日期时间组件封装

愚公搬代码

11月月更

从纯函数讲起,一窥最深刻的函子 Monad

掘金安东尼

前端 11月月更

通俗易懂的React事件系统工作原理

夏天的味道123

React

详解React的Transition工作原理原理

夏天的味道123

React

chrome调试工具之Elements

格斗家不爱在外太空沉思

浏览器 11月月更 elements

Spring Boot 实现接口幂等性的 4 种方案

小小怪下士

Java spring springboot

React-Hook最佳实践

xiaofeng

React

从零到一手写迷你版Vue

helloworld1024fd

JavaScript

知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例

汀丶人工智能

nlp 知识蒸馏 11月月更

细说React组件性能优化

xiaofeng

React

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

【LeetCode】二叉树最大宽度Java题解

Albert

算法 LeetCode 11月月更

ElasticSearch这些坑记得避开

知了一笑

Java 架构

vue组件通信方式有哪些?

bb_xiaxia1998

Vue

一大波vue面试题及答案精心整理

bb_xiaxia1998

Vue

React源码解读之React Fiber

flyzz177

React

  • 扫码添加小助手
    领取最新资料包
Java 7 路线图更新:反响强烈_Java_Dio Synodinos_InfoQ精选文章