内容目录
Java SE 5于2004年09月29日正式发布,这是一个功能改进非常之多的关键版本。以下是根据官方文档整理出来的Java SE 5的新特性以及其它增强内容。
性能增强
垃圾回收策略 - 提供客户端或服务器运行时编译器的自动检测或手动选择,从而提高服务器(Server-Class Machine)的性能。详情参考Java 虚拟机。
StringBuilder类 - 添加一个新的类StringBuilder,它是StringBuffer的非线程安全版本。你应该使用StringBuilder替换所有的StringBuffer,除非你需要同步(当然,多数时候你是不需要的)。StringBuilder几乎总是比StringBuffer要快。
Java 2D 技术 - 改进Java 2D 图形渲染的性能,并有益于Swing/JSC等功能领域。例如:改进BufferdImage对象的加速,支持使用OpenGL进行硬件加速渲染,改进文本渲染性能。详情参考Java 2D 新特性。
Image I/O - 改进读写JPEG图像时的性能和内存占用。详情请参考Image I/O 特性。
Java 语言新特性
- 泛型
- 增强for循环
- 自动装箱/拆箱
- 类型安全枚举
- 可变参数
- 静态导入
- 元数据(注解)
虚拟机
类数据共享
类数据共享(Class Data Sharing)是J2SE 5.0的一项新特性,旨在减少应用程序的启动时间和内存占用。安装进程会从系统jar文件中加载一系列的类到一个私有的内部表示,并将其转储到一个叫做"shared archive"的文件中。在随后的JVM调用期间,"shared archive"将被映射到内存中,从而节省这些类的加载开销,并允许在多个JVM进程之间共享这些类的许多JVM元数据。
注意:Microsoft Window 95/98/ME 不支持类数据共享。在J2SE 5.0中,只有Java HotSpot 客户端虚拟机,并且在使用串行垃圾回收器(Serial GC)的情况下,才支持类数据共享。
垃圾回收策略
增强并行垃圾回收器(Parallel GC)以监测并适应应用程序的内存需求。你可以指定应用程序的性能目标,JVM将调整Java堆的大小,并以与目标一致的最小应用程序占用来满足性能目标。
这种自适应策略的目标是无需调整命令行选项,即可获得最佳的性能。
服务器类机器探测
当启动应用程序时,运行程序将会试图检测当前是否运行在一台服务器类的机器("server-class" machine)上。
线程优先级更改
线程的优先级已做了些许改变,以允许Java线程和本地线程没有显式地设置优先级,从而平等地竞争。
致命错误处理
高精度时间支持
添加System.nanoTime()方法,用于返回最准确的可用系统计时器的当前值,以毫微秒(十亿分之一秒)为单位。其实际精度取决于当前系统平台。该方法一般用于测量已过的精确时间(两次调用之间的时间差)。
基础类库
lang和util包
网络
本次发布提供对Windows XP(SP1) 和 2003 服务器上IPv6的完全支持。
网络API为协议处理程序提供一种方式,以便在连接或读取操作时设置超时时间。这将有利于任何HTTP客户端应用程序在服务器发生故障时表现稳健。
新的API提供一种用途,可以通过 inetd 来运行Java应用程序(包括RMI应用程序)。
InetAddress 类现在提供一个API,以允许测试主机的可到达性。该特性为Java提供了一种类似 ping 命令的能力。
改进 Cookie 支持。应用程序或 web 容器可以通过实现新的 CookieHandler API 来进行 Cookie 管理。
改进代理服务器配置。Web 容器或应用程序借助 ProxySelector API,代理服务器的配置现已成为动态的,并且可操控的,甚至还可以处理连接代理服务器的失败。
一个新的框架为协议处理程序提供了一种方式,以访问由系统平台或第三方实现的文件缓存机制。
URL 类规范现在托管了当前 J2SE 授权的一组最小的协议处理程序。它们是http,https,file,jar,ftp。
对 JSSE(SSL/TLS) 进行了一系列的增强。详情查看:Security Enhancement。
安全
J2SE 5.0在安全方面进行了显著的增强。它提供了更好的安全token支持,支持更多的安全标准(SASL, OCSP, TSP),改进了可量测性(SSLEngine)和性能,在加密(crypto)和Java GSS方面加上了许多的功能增强。详情参考Security。
国际化
字符处理基于Unicode 4.0 标准。
DecimalFormat 类现已被增强,以用于格式化或解析BigDecimal或BigInteger的值,而不会丢失精度。格式化这些值将会自动进行增强,解析为BigDecimal需要通过调用setParseBigDecimal方法来启用。
java.util和java.text包中所有对本地区域设置敏感的功能现已支持越南。详情查看支持的区域设置。
改进环境变量的支持
System.getenv(String) 方法已不再过时。新的System.getenv()方法允许访问进程环境并返回一个Map<String, String>。
ProcessBuilder
新的ProcessBuilder类提供了一个比 Runtime.exec 更便捷的方式来调用子进程。尤其是,ProcessBuilder 使得在一个被修改的进程环境(意即基于父进程的环境,但稍作修改)中启动一个子进程更加容易。
Formatter
一个用于printf风格的格式化字符串的解析器,Formatter 类为布局排版对齐,常见的数字、字符串和日期/时间数据,以及指定区域设置的输出,提供支持。也支持诸如 byte、 java.math.BigDecimal、 java.util.Calendar 等公共Java类型。通过java.util.Formattable 接口,还可以为任意用户类型提供有限的格式化定制。
Scanner
java.util.Scanner 类可用于将文本转换为原始数据类型或字符串。由于它基于java.util.regex 包,因此它也提供一种方式在流、文件数据、字符串或 Readable 接口的实现中执行基于正则表达式的搜索。
反射
添加对泛型、注解和枚举的支持,并添加一些便捷方法。这也使得类java.lang.Class泛型化。
JavaBean组件体系结构
添加PropertyChangeEvent的子类IndexedPropertyChangeEvent,用来支持绑定properties,并使用索引来标识 bean 更改的部分。此外,PropertyChangeSupport类也添加了方法来触发被索引的属性更改事件。
集合框架
添加支持针对集合的3种新的语言特性:泛型、增强for循环,以及自动装箱。
集合框架中添加3个新的接口:Queue、 BlockingQueue和ConcurrentMap(其中两个是java.util.concurrent包的一部分)。
Queue添加了3个具体(concrete)的实现,和一个骨架(skeletal)实现。
添加5个阻塞队列实现,和一个ConcurrentMap实现。
提供特殊用途的、与类型安全的枚举结合使用的Map和Set的实现。
添加特殊用途的、写入时复制(copy-on-write)的List和Set实现。
提供包裹器实现,从而为大多数集合接口添加动态的类型安全。
提供几种新的算法来操作集合。
提供计算数组的哈希码(hash code)和字符串表示的方法。
XML处理API(JAXP)
二进制操作
Math
Instrumentation
序列化
线程并发工具库
线程
监控和管理
集成类库
远程方法调用(RMI)
JDBC
CORBA, Java IDL, and Java RMI-IIOP
JNDI
用户界面(UI)
国际化
Java 声音(Sound)技术
Java 2D 技术
Image/IO
AWT
Swing
部署
常规部署
Java Web Start 部署
工具体系结构
Java虚拟机工具接口(JVMTI)
Java平台调试器体系结构(JPDA)
Java编译器(javac)
Javadoc 工具
注解处理工具(apt)
J2SE 5.0故障排除和诊断指南
操作系统&硬件平台
支持的系统配置
64位 AMD 皓龙处理器(AMD Opteron Processors)
0 条评论
撰写评论