`

Java7新特性 (转)

    博客分类:
  • j2se
 
阅读更多
在最近举行的Devoxx大会上,Java SE首席工程师Mark Reinhol,针对新版的Java7做了一个最新发展方向的演讲。Mark称这次演讲的内容只是暂时的计划,并不表示Java7一定会跟着这个方向走。虽然如此,但是仍然在Java社区中引起了很多反响,特别是针对闭 包特性(Closures)的遗漏。
Hamlet D’Arcy提供了一个Mark演讲中有关Java7特性的总结。其中一些比较重要的变化包括:
1.JVM对动态语言的支持
2.更多新的I/O API已基本完成,包括真正同步的I/O(不仅仅是非阻塞I/O)和一个真正的文件系统API。
3. 安全重抛出——允许一个广泛的catch语句,编译器可以更加智能的基于try语句块中抛出的异常管理重新抛出。(我以前没有见过,不过看起来不错)
4.Null通过’?’语法检查,类似于Groovy...使开发人员避免一连串null检查。
5.与泛型实例化有关,但目前还不清楚这种推断会达到什么程度(我觉得越多越好)。
6.允许在catch语句中用逗号分割一系列异常类型。
7.Swing应用框架——仍然需要更简化以方便Swing应用开发。
8.特性的向前兼容(Java Kernal、QUickstarter、新Plug-in等)。
 
他同时提到了曾经考虑过但可能不会引入到Java 7的特性:
1.具体化泛型(Reified generics)
2.第一类属性(1st class properties)
3.操作符重载
4.BigDecimal语法
5.Bean绑定



下面看看代码吧:

1.对collections的支持

List<String> list = new ArrayList<String>();     
 list.add("item");     
String item = list.get(0);     
      
 Set<String> set = new HashSet<String>();     
 set.add("item");     
      
 Map<String, Integer> map = new HashMap<String, Integer>();     
 map.put("key", 1);     
 int value = map.get("key");    
 现在你还可以:

List<String> list = ["item"];     
String item = list[0];     
     
Set<String> set = {"item"};     
      
Map<String, Integer> map = {"key" : 1};     
int value = map["key"];   

2.自动资源管理

BufferedReader br = new BufferedReader(new FileReader(path));     
 try {     
   return br.readLine();     
 } finally {     
    br.close();     
 }    现在:

try (BufferedReader br = new BufferedReader(new FileReader(path)) {     
     return br.readLine();     
  }     
       
  //You can declare more than one resource to close:     
       
  try (     
    InputStream in = new FileInputStream(src);     
     OutputStream out = new FileOutputStream(dest))     
 {     
  // code     
 }    

3.对通用实例创建(diamond)的type引用进行了改进

Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); 
现在:

Map<String, List<String>> anagrams = new HashMap<>();  

4.数值可加下划线

int one_million = 1_000_000;

5.在switch中可使用string

String s = ...     
  switch(s) {     
    case "quux":     
     processQuux(s);     
      // fall-through     
       
    case "foo":     
    case "bar":     
      processFooOrBar(s);     
     break;     
      
   case "baz":     
      processBaz(s);     
     // fall-through     
      
   default:     
     processDefault(s);     
     break;     
 }    

6.二进制文字

int binary = 0b1001_1001;   

7.简化了可变参数方法的调用





当程序员试图使用一个不可具体化的可变参数并调用一个*varargs* (可变)方法时,编辑器会生成一个“非安全操作”的警告





时隔一段时间,我看了Java7的相关文档发现,Java7拥有如下的一些新的特性。

首先是模块化特性:如果您安装和使用过NetBeans6.7的话,是不是会有一个很大的感觉,就是NetBeans6.7的启动速度比以前快了很多,当然并不是NetBeans已经使用了Java7,而是NetBeans将以前一启动就加载的功能划分成了很多的模块,第一次安装启动的时候,很多模块都没有加载,只是加载了一些最基本的功能模块,在随后的使用过程中,如果用到了某一种功能,就启用相应的模块,这样形成了一个按需加载的特点,当然随着加载的模块数量增加,启动的速度也会随之变慢。不过除非你要用其中的所有模块,否则总是比之前的版本速度要快。现在的 Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安装,因此在使用全新的Java7的虚拟机的时候会发现真的很快,当虚拟机需要用到某些功能的时候,再下载和启用相应的模块,这样使得最初需要下载的虚拟机大小得到了有效的控制。同时对启动速度也有了很大的改善。如果你对 OpenJDK的架构比较熟悉,你甚至可以定制JDK的模块。

其次是多语言支持:这里的多语言不是指中文英文之类的语言,而是说Java7的虚拟机对多种动态程序语言增加了支持,比如:Rubby、 Python等等。对这些动态语言的支持极大地扩展了Java虚拟机的能力。对于那些熟悉这些动态语言的程序员而言,在使用Java虚拟机的过程中同样可以使用它们熟悉的语言进行功能的编写,而这些语言是跑在功能强大的JVM之上的。

第三是开发者的开发效率得到了改善:Java7通过多种特性来增强开发效率。比如对语言本身做了一些细小的改变来简化程序的编写,在多线程并发与控制方面:轻量级的分离与合并框架,一个支持并发访问的HashMap等等。通过注解增强程序的静态检查。提供了一些新的API用于文件系统的访问、异步的输入输出操作、Socket通道的配置与绑定、多点数据包的传送等等。

最后是执行效率的提高,也是给人感觉最真切体验的特性:压缩了64位的对象指针,Java7通过对对象指针由64位压缩到与32位指针相匹配的技术使得内存和内存带块的消耗得到了很大的降低因而提高了执行效率。此外还提供了新的垃圾回收机制(G1)来降低垃圾回收的负载和增强垃圾回收的效果。G1垃圾回收机制拥有更低的暂停率和更好的可预测性。

其实如上的这些特性是在告诉我们,Java7改善了什么,速度为什么快了,当然这些特性将随着Java7的正式版发布而继续凸显其优势。



最后让我们对c语言佩服的同时, 也支持以下java吧. 还是有前途的,至少我们这一代java不会没落的. 现在很多系统都是用java写的。



分享到:
评论

相关推荐

    使用 RSA 展UML 到 Java 5 的转换

    IBM Rational Software Architect 包括许多预定义的转换,一些将 UML 模型转换为源...V7 引入了包括 Java 5 特性的转换。像其前辈一样,该转换可以扩展。本文带您经历了创建示范该功能的核心能力的简单实例的必要步骤。

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。  《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、...

    动力节点_Java基础视频教程170_JDK7新特性

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...

    Java虚拟机规范.Java SE 8版.zip

    同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,还讲述了为支持类型注解及方法参数注解而对class文件格式所做的扩展,并阐明了class文件中各属性的含义,以及...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    3.5 java虚拟机中内置的安全特性 3.6 安全管理器和java api 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10 保护域 3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3...

    JAVA SE 开发手册.CHM

    7、JAVA面向对象之三大特性 8、JAVA面向对象之函数、堆和栈、访问修饰符 9、JAVA面向对象关键字 10、JAVA面向对象抽象类abstract 11、JAVA面向对象接口interface 12、JAVA面向对象之内部类、匿名内部类 13、...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题54.Spring事务的传播特性和隔离级别.mp4 │ Java面试题55.ORM是什么?ORM框架是什么?.mp4 │ Java面试题56.ibatis和hibernate有什么不同.mp4 │ Java面试题57.hibernate对象状态及其转换.mp4 │ Java...

    java常用代码

    让初学者更好的了解java这门语言的特性。 1.StringAndInt.java 字符与整型的相互转换 2.WriteFile.java 简单的IO读写文件 3.CurrentMethod.java 获取当前调用方法名 4.StringAndDate.java 字符串与时间对象的相互...

    全国计算机二级java题库

    掌握Java语言中面向对象的特性。 3. 掌握Java语言提供的数据类型和结构。 4. 掌握Java语言编程的基本技术。 5. 会编写Java用户界面程序。 6. 会编写Java简单应用程序。 7. 会编写Java小应用程序(Applet)。 8. ...

    JAVA上百实例源码以及开源项目

    7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java...

    JAVA上百实例源码以及开源项目源代码

    7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java...

    java7hashmap源码-java:Java

    java7 hashmap源码 Table Of Contents day01_JAVA语言概述与基本语法:标识符、变量也变量分类、源码_反码_补码、进制转换、编码与字符集 day02_基本语法.运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、...

    java编程宝典

    4.4 如何使用jdk8的新特性LocalDate和LocalDateTime 31 4.5 时间戳 32 6网络 33 Jsoup介绍: 34 Jsoup主要有以下功能: 34 Demo1:抓取校园网首页的新闻标题 35 //从目标页面下载所有图片到本地 36 7异常 45 2.Java...

    java开源包7

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    Java虚拟机规范 Java SE 8版

    同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,还讲述了为支持类型注解及方法参数注解而对class文件格式所做的扩展,并阐明了class文件中各属性的含义,以及...

    java虚拟机规范 jdk8.

    同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,还讲述了为支持类型注解及方法参数注解而对class文件格式所做的扩展,并阐明了class文件中各属性的含义,以及...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics