JDK7.0和JDK6.0有什么区别?
jdk7是模块化程序,模块间的依赖性变小了.jdk的好多功能间有相互依赖性,导致一个配置不对,好多不能用.举例来说:假设你正使用Logging API(java.util.logging)),Logging需要NIO和JMX,JMX需要JavaBeans, JNDI, RMI和CORBA,JNDI需要java.applet.Applet而且JavaBeans依赖AWT.
JDK7 新特性:
JSR203:JDK中会更多的IO API(“NIO.2”)访问文件系统与之前的JDK中通过java.io.File访问文件的方式不同,JDK7将通过java.nio.file包中的类完成。JDK7会使用java.nio.file.Path类来操作任何文件系统中的文件。(这里说的任何文件系统指的是可以使用任何文件存储方式的文件系统)
示例:
Java7之前
File file = new File(“some_file”);
使用Java7
Path path = Paths.get(“some_file”);
在File类中加入了新的方法toPath(),可以方便的转换File到Path
Path path = new File(“some_file”).toPath();
Socket通道绑定和配置 在JDK7中面向通道的网络编程也得以更新!JDK7中可以直接绑定通道的socket和直接操作socket属性。JDK7提供了平台socket属性和指定实现的socket属性。- JDK7加入了一个新的字节通道类,SeekableByteChannel
- NetworkChannel是面向网络通道编程模块中的又一个新的超接口。利用它可以方便的绑定通道socket,并且方便设置和获取socket的属性。
- MulticastChannel接口方便创建IP协议多播。多播实现直接绑定到本地的多播设备。
- AsynchronousFileChannel:异步文件通道可以完成对文件的异步读写操作。
- AsynchronouseSocketChannel:Socket中的一个简单异步通道,方法是异步的并且支持超时。
- AsynchronousServerSocketChannel:异步的ServerSocket
- AsynchronousDatagramChannel:基于数据包的异步socket
- Switch语句允许使用String类型
- 支持二进制常量和数字常量中可以使用下划线
- 使用一个catch语言来处理多种异常类型
- 对通用类型实例的创建提供类型推理
- Try-with-resources语句来自动关闭资源
- 对编译器和其它工具的调用
- 对结构化的编译信息进行访问
- 对文件输入输出定制化处理的能力
JAXP1.3的主要特性包括:
- DOM3
- 内建通过XML Schema进行文档校验的处理器
- 对XML Schema中的数据类型的实现,在javax.xml.datatype包中。
- XSLTC,最快的转换器,也是XSLT处理中的默认引擎。
- 提供对XInclude的实现。这将会方便我们使用文本和其它已有的XML来创建新的文档,这样可以对文档片段进行重用。
- JDK7中会包含JAXP1.3,这个是JAXP的最新实现。
JAXB2的主要特性:
- 支持全部的W3C XML Schema特性。(JAXB1.0说明了对于W3C XML Schema中某些特性的不支持)
- 支持绑定Java到XML文档,通过添加javax.xml.bind.annotation包来控制绑定。
- 大量减少了对于schema衍生出来的类。
- 通过JAXP1.3的校验API来提供额外的校验能力。
- JDK7中将包括JAXB2.2
JAX-WS2的主要特性包括:
- 对JAXB2.1 API的支持(JSR222)
- 对Web Services Addressing 1.0的支持
- EndpointReference(EPR)的API:创建(BindingProvider.getEndpointReference(),Endpoint.getEndpointReference(),MessageContext.getEndpointReference())
事务处理(使用JAXB2.1绑定W3C EPR到W3CEndpointReference类,使用JAXB Marshall/Unmarshall W3CendpointReference类)
- 提供友好的API来启用和停止某些特性,例如MTOM特性和Addressing特性
- JDK7将包含JAX-WS2.2
- 从JDK5开始,Annotation标注就成了强大的机制用来标注我们的类、属性和方法。通常Annotation标注是在创建阶段或者运行阶段进行处理的,并获取语义结果。JSR269主要用来定义一套API,允许通过可插拔的API来进行标注处理器的创建。
- 规范包括一部分的API用来对Java编程语言进行构建,还有就对标注处理器声明和控制运行的部分。
- 有了程序中的Annotation标注,就需要有标注处理器框架来反射程序的结构。
- Annotation处理器会指定他们处理的标注并且更多的处理器可以合作运行。
- 标注处理器和程序结构的API可以在构建阶段访问。
Cryptography (ECC)椭圆曲线加密
从JDK7开始,Java提供对标准的ECC算法的灵活实现(基于椭圆曲线的公钥加密算法) Swing中的Nimbus外观 Nimbus是JDS(Java Desktop System)中的新外观。这个也是Solaris11的GTK主题 Java2D中的XRender Pipeline JDK7中加入了基于X11 XRender扩展的Java2D图形管道。这将提供更多的对于当前先进的GPUs访问的功能。 TLS1.2 TLS (Transport Layer Security)是一个用在Internet上的数据传输安全协议,用来避免监听、引诱和消息伪造。TLS的主要目的是提供两个应用间通信的隐私和数据完整。TLS是RFC5246标准,在JDK7中提供1.2 JDBC4.0/4.1 JDBC4.1特性只在JDK7或者更高版本中存在。JDBC4.1只是对JDBC4.0进行较小的改动。关于一些JDBC4.0/4.1的特性:- 数据源—Derby包括了对于javax.sql.DataSource的新的实现
- JDBC驱动自动加载—应用不必在通过Class.forName()方法来加载数据库驱动了。取而代之的是DriverManager会根据应用请求连接的情况,自动查找到合适的JDBC驱动。
- 包装—这是JDBC4.0中的新的概念,主要是通过这种机制可以让应用获取的厂商提供的标准JDBC对象实现,例如Connections,Statements和ResultSets。
- Statement事件—连接池可以监听Statement的关闭和错误时间。addStatementEventListener和removeStatementEventListener被加入到了javax.sql.PooledConnection
- JDK7提供了JDBC4.1全部的支持
JDK7已经更新到对Unicode6.0的支持。
要来关闭URLClassLoader的方法对JMX代理和MBeans的改进
通过URLClassLoader,应用可以通过URL搜索路径来加载类和资源。JKD7提供了close()新方法来帮助URLClassLoader清理资源。这个改进来至于JRockit,可以方便连接平台。MBean服务器可以通过防火墙提供一套MBeans,这些暴露了VM中的一些内部操作的信息
新的垃圾回收器 JDK7提供了新的垃圾回收器,针对目前的CMS垃圾回收器,这将会让垃圾回收器有更少的停顿时间和更高的语言效果。 改进的JSRJSR901:Java Language Specification(JLS)Java语言计划- JSR901包括了从第一版Java规范到现在为止的所有的变化、说明和补充。Java语言通过JLS规范。
- 对于JLS的改变通过JSR901进行管理
- JDK7将会包括最新的JSR901
- JSR924目的是维护Java虚拟机规范的变化,其中第二版是为了J2SE1.5的。
- JavaSE APIs保持着对例行维护和小范围改进的加入计划的记录
- JSR294:Java语言和虚拟机对模块编程技术的支持—当前JSR主要的目的是提供在编译期和运行期的模块编程支持
- JSR308:对于Java类型的Annotation注释—这将是对于当前注释符号系统的扩展,将允许我们在类型中出现注释符号。
- JSR296:Swing应用框架—主旨是消除Swing编程中的模板代码并且提供Swing程序更加简单的结构。
- 模块化—提供一个明确的、简单的、低级别的模块系统,主要目的是将JDK模块化。
- JSR TBD:Lambda项目—Lambda表达式(通俗的也称为“闭包“)和对Java编程语言的保护方法
- JSR TBD:对于集合支持的语言—常量表达式对于lists、sets和maps的迭代以及通过索引符号对lists和maps的访问。
- Swing JDatePicker组件—添加SwingLabs JXDatePicker组件到平台。
JDK7手册参考卡片英文原版下载:http://www.javalord.com/download/7721_JDK7RefCard.pdf
JDK7手册参考卡片中文翻译下载:http://www.javalord.com/download/JDK7 Ref Card_cn.pdf