BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Project Coin发布语言变化最终列表

| 作者 Charles Humble 关注 794 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2009年9月9日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

近日Joseph Darcy发布了Project Coin的最终列表,宣布了即将发布的JDK 7中对Java语言所做的改进。这些改进是:

  1. 自动化的资源管理。提供一种处理资源回收的机制:类似于C# using声明的ARM(Automatic Resource Management)块,但形式上却是基于try声明。这样,using声明只能处理单一资源,而ARM却能在块的范围内处理多种资源。
  2. 更好的整型字面值。为数字增加二进制字面值以及下划线分隔符支持以增加可读性,例如:
    long creditCardNumber = 1234_5678_9012_3456L
    如果能及时找到解决方案还会提供对无符号字面值处理方式的改进。
  3. 集合字面值。通过类似于数组初始化器的语法为不变的list、set以及map字面值提供支持,同时还会为list与map的索引访问提供支持。
  4. 改进的用于泛型实例创建的类型推断。使用有限的类型推断进行类实例创建需要为构造方法显式声明参数化类型,然而这些类型却可以从上下文中推断出来,然后它们就会被一个空的类型参数集合替换掉。这样,相对于:
    Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
    我们可以这样写:
    Map<String, List<String>> anagrams = new HashMap<>();
  5. 对JSR 292的语言支持。包括invokeDynamic指令、方法句柄调用、某些不严格的约定以及外来的标识符。
  6. 简化的可变参数方法调用。当方法将可变参数与非具化的数组类型组合在一起时就会产生警告,现在将该警告由调用处转移到了方法声明处。
  7. 可以在switch语句中使用String

以上大部分提案都将于今年10月底反映到JDK 7的Mercurial仓库中。

还有三个提案尚未最终发布,它们是:改进的Java异常处理Elvis与其他Null-Safe操作符以及大数组
Joseph Darcy说到

“对于Java语言来说,改进的异常处理很值得我们期待,然而它对于类型系统来说是个风险,我们尚未评估是否有足够的资源以在JDK 7中实现该特性。我倒是期望能在未来重新考虑该特性以促进语言的不断发展。虽然Elvis与其他相关的操作符在Groovy中很有用,但由于Groovy与Java的差别,比如原生类型的存在以及与装箱/拆箱的交互使得这些操作符对Java意义不大了。JDK 7将提供其他方式来简化空操作(null-handling)的烦恼,如JSR 308的空检查。毫无疑问,天生支持32位以上条目的集合一直是大家所梦寐以求的。对集合的语言支持会开发一个程序库来实现这一点,这样平台就可以直接处理大的数据结构了。”

查看英文原文:Project Coin Announces Final List of Small Language Changes

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

即将发布的JDK 7 by tam Aaron

JDK 7看来真的不错,期待啊;这里怎么没有提到JKD7中增加的并行啊

Re: 即将发布的JDK 7 by Jeffrey Zhao

这里谈的是语言。

Java的委员会模式挺不错的 by Jeffrey Zhao

终于搞出一些稀奇古怪的东西,这个类型推演地真是不论不类……是怕被说是在模仿C#所以避嫌么?

还有闭包,闭包,闭包……唉。

Re: Java的委员会模式挺不错的 by 龙 张

我感觉很多东西都是在模仿C#或是曲线模仿,在翻译这篇新闻时我特意到那些proposal的链接站点看了看,比如那个ARM,形式上与C#的using差不太多:

try (InputStream in = new FileInputStream(src);

OutputStream out = new FileOutputStream(dest)) {

byte[] buf = new byte[8192];

int n;

while ((n = in.read(buf)) >= 0)

out.write(buf, 0, n);

}
只不过一下子能回收多个资源。

Re: Java的委员会模式挺不错的 by 龙 张

还有第七条,在switch中使用String,其实早就该有了。

Re: Java的委员会模式挺不错的 by Lu Jin

个人认为Closure的实用价值在实际编程中是最应优先考虑的。当然,使用Java的匿名类可以部分模仿Closure;但是,只有Java从语法上支持了Closure,程序员和Java程序本身才能充分利用其带来的优雅和便利。

即将发布的JDK 7 by Leung Arbow

没closure,有个半吊子的type inference,无视...
看来只有个性能有所提高的jvm可以用用了

什么时候thread可以stop by 黄 海平

有了这些特性的支持,线程的stop方法该解放了吧!

java也开始抄袭C# by 218 spank

O(∩_∩)O~
java也开始抄袭C#了
这社会好啊

看来平台之争真是非匹夫之力而可为啊

如果C#是在Borland诞生的 by Shichao Liu

如果C#是在Borland诞生的, 想必所得到的反馈会积极得多. 单就技术讲, .net确实很优秀.

RE by yao lei

抄来抄去 最后抄得所有语言看上去都一样

直接使用scala吧 by wang metis

还是使用scala吧

Re: 直接使用scala吧 by Jeffrey Zhao

我绝对支持这个。

Re: 直接使用scala吧 by Wang Jagger

赞成!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

14 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT