John Jiang

a cup of Java, cheers!
https://github.com/johnshajiang/blog

   :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  131 随笔 :: 1 文章 :: 530 评论 :: 0 Trackbacks
Java SE 7发布:2006年12月以来的首个主版本升级
在经过漫长地等待之后,Java SE 7终于发布了。Info的这篇文章总结了JDK 7的关键新特性,希望对大家了解JDK有帮助。(2011.07.30最后更新)

    从今天开始就可以使用Java 7了,这是Oracle收购Sun之后Java平台发布的第一个版本。该版本包含一系列很小但很受欢迎的语言变化,含有一个新的文件API及Fork/Join框架,改进了JVM对动态语言的支持。
    Java 7的语言级变化已成为Coin项目(JSR 334)的一部分,该项目是JSR 201的后继者,它被设计成使用一组能改善生产率的细小变化来提升Java语言。特别值得注意地是对"try-with-resources"的介绍。这是对C#的using语句的模仿,但是基于try语句的形式。结果,using语句只能处理单一资源,而try-with-resources能够在给定语句块的范围内处理多个资源。
    有两个针对异常处理的变化。第一,多个异常类型能够由单个try语句块处理。扩展了try语句中catch子句的语法,使它能处理一系列的异常类型,这些异常类型由"OR"操作符"|"分隔开,这将用于异常参数的声明处。第二,如果一个异常参数未被修改,且未在cactch语句块中被重新抛出,就不必把该异常加到方法签名中。
其它的语言级变化还包括:
1. String类型可用于switch语句
2. 支持二进制常量,且能在数字中使用下划线进行分隔,例如,long creditCardNumber = 1234_5678_9012_3456L
3. 简化的可变长参数方法的调用:当包含可变长参数的方法使用了不确定的数组类型时,编译器会报出警告。现在将该警告从方法调用处移到了方法声明处。
4. 改进了泛型实例创建时的类型推导(< >,即钻石符):在创建类实例时使用受限制的类型推导,以便显式地为构造器声明参数类型,但从上下文可以确定这些类型,那么可用一个空的类型参数设置去替代这一声明。所以,为了替代如下写法:
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
可以写成:
Map<String, List<String>> anagrams = new HashMap<>();

    已经介绍过两个主要的新API。第一个是JSR 203,这个API的加入是为了文件系统的访问,可伸缩的异步I/O操作,Socket-Channel绑定与配置,以及多播数据报。特别能引起企业级开发者兴趣的是真实的异步I/O API。对于那些会跨许多连接且要求低延时、高吞吐的高级服务器端应用,该API显得尤为重要。作为加入Java的最后一个文件系统API,JSR 203还支持某些操作系统的特殊功能。例如,你可以为那些支持符合链接的系统创建这种链接。因此,JSR 203有些争议,它并不严格遵循"编写一次,随处运行"这一原则,尽管它提供了一组能运行在所有平台上的通用API,但它也提供了某些平台的某些特定功能。
    第二个新API就是Fork/Join框架(它是JSR 166的一部分),原计划是放到Java 5中的。它为开发者提供了一种将问题分解成任务的机制。这些任务可在任意数量的多核处理器中并发执行。
    在其它方面,平台寻求新的网络与安全特性,并扩展了对国际化的支持,包括对Unicde 6.0的支持。
    最后,Java SE 7还引入自Java起始以来最新的字节码结构,InvokeDynamic关键字。InvokeDynamic加入了多于一个的调用模式,以及多于一个的链接模式,这样就能基于用户定义的规范进行编程。它的本意是在缺少静态类型信息时能高效且灵活地执行方法调用,这就使得运行在JVM上的动态语言,如JRuby和Jython,的性能得到实质性地提升。
    在欢迎这些特性的同时,从许多方面看来,对于该版本最重要的事情,是它真的终于发出来了。在Sun和Apache软件基金会之间长期存在的分歧,可能还有Sun在它最后的日子中的领导力与资源分配方面的问题,导致了这次版本间不同寻常的长期断层。就如Mark Reinhold在最近的一次访谈中所评论的:   
由于商业与政治方面的原因,Java在一段时间内进行了冬眠模式。但我们又回来了,并且将要发布版本7。它不是一个革命性的版本,只是一个改进的版本,但它里面确实有一些好东西。
    开发者们对JDK 7版入门的兴趣,就会撬动对NetBeans 7.0IntelliJ IEDA 10.5的应用,它们都支持Java SE 7平台的最新特性。Eclipse Indigobeta版也已支持Java 7,Oracle的JDeveloper计划在今年晚些时候发布一个版本去支持JDK 7。
posted on 2011-07-30 22:23 John Jiang 阅读(1991) 评论(1)  编辑  收藏 所属分类: JavaSEJava翻译

评论

# re: Java SE 7发布:2006年12月以来的首个主版本升级(译) 2011-08-03 21:02 Sha Jiang
2011.07.31,InfoQ China也发布了"Java SE 7 Released: First Major Update Since December 2006"的中文版(比我的译文晚了约一天*_*)。从译文的内容来看,和我翻译的差不多。我觉得不太好翻译的地方,Info China也翻译地差强人意;-)  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: