Java 5和6中最有用或最有趣的新语言功能?

时间:2010-03-04 05:21:48

标签: java language-features jdk1.6 jdk1.5

我刚才正在查看代码教程,并发现了一些有趣的东西 - JDK 5中引入的import static功能:

import static org.junit.Assert.assertEquals;

public class AdditionTest {

  private int x = 1;
  private int y = 1;

  @Test public void addition() {
    int z = x + y;
    assertEquals(2, z);
    /* ^ this is a static method, normally called by Assert.assertEquals */
  }

}

让我感到疑惑,我不知道JDK 5和6中引入了哪些其他功能?还有其他新的关键字用法吗?任何值得注意的新库类或函数?

我知道发行说明或更改日志已经存在,我不是在寻找“RTFM”的答案。我想知道一个简短的清单,在您看来,您认为JDK 5或6中哪些功能最具游戏规则。

5 个答案:

答案 0 :(得分:9)

Java 5有一个很多的语法变化:最重要的(我记得):

  • 泛型
  • 枚举
  • For-each循环
  • 自动装箱和自动装箱
  • 协变返回
  • Variadic功能

(当然,如问题中所述,静态导入和注释。)

正如Zwei的回答所提到的那样,java.util.concurrent也是一个主要的Java 5特性,同时,JSR-133及其内存模型也发生了变化(允许volatile以合理的方式工作,所以你可以如果你想安全地实施双重检查锁定。

Java 6没有任何语法更改(我记得);它的许多影响很大的变化是performance-related。在图书馆方面,我最喜欢的“Java 6新手”库是脚本支持(javax.script)。

答案 1 :(得分:4)

当然,java.util.concurrent !!!

在Java6中,ConcurrentSkipListMap被添加为此包的新数据结构,它实际上保存了我们的项目:)

答案 2 :(得分:3)

我将继续推出一个: Java Web Start小程序支持

我喜欢和JOGL一起玩,能够只使用一个简短的jnlp文件并且不必编写类加载器,下载本机库代码的代码等来处理JOGL以获得JOGL是非常好的。浏览器。 (是的,我知道JOGL的appletloader事情)

我的JNLP文件的一行行加载JOGL jar,其依赖项(gluegen,nativewindow,newt)以及当前系统的相应本机库。

<extension name="JOGL"
    href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" />

我的jnlp文件的其余部分仅用于我的应用程序的标题及其JAR文件的URL,就是它。

顺便说一句,这是在JDK 6u10中引入的。

答案 3 :(得分:3)

致Chris Jester-Young的名单添加

  • 可变参数
  • 注释

但我真正期待的是functional programming constructs.

答案 4 :(得分:0)

您可以在这里学习Java 5中引入的新功能Java 5 (J2SE 5.0/JDK 1.5) New Features with Examples