j2se 有哪些新特性?

来源:互联网 发布:国际足球数据库 编辑:程序博客网 时间:2024/04/24 01:23

易于开发性

您也许已经见过这样的报告,即一些新的Java语言变化包含易于开发性主题。这些变化包括泛型、元数据、autoboxing、增强的 for 循环、枚举类型、静态导入、C 风格的格式化 I/O、可变参数、并发实用程序以及更简单的 RMI 接口生成。
JSR 201 包括如下四个语言变化:增强的 for 循环、枚举类型、静态导入和 autoboxing;JSR175 指定了新的元数据功能,而 JSR 14 则详细说明了泛型。
javac编译器执行的默认语言规范是版本 1.4(并非最新版本)。这意味着要利用以下语言变化的任何好处,需要向javac命令传递参数 -source 1.5。

元数据

J2SE 1.5 (并非最新版本)中的元数据特性提供这样的能力,即向 Java 类、接口、方法和字段关联附加的数据。这些附加的数据或者注释,可以被javac编译器或其他工具读取,并且根据配置不同,可以被保存在类文件中,也可以在运行时使用 Java 反射API被发现。
向 Java 平台增加元数据的一个主要原因是,使得开发工具和运行工具有一个通用的基础结构,以减少开发和部署所需的成本。工具可以使用元数据信息生成附加的源代码,或者在调试时提供附加信息。
下面的例子用元数据工具创建了一个调试元数据注释,这些元数据注释然后又简单地在运行时显示出来。可以想像,大部分的元数据标签形成一个标准,即一个良好规范的集合。利用一个元数据处理工具,许多重复的代码编写步骤可以减少成一个简练的元数据标签。

泛型

泛型一直是 Java 社团所广泛期待的,现在已经是 J2SE 1.5 的一部分了。最先见到使用泛型的地方是在 Collections API 中。CollectionsAPI提供可以被多个 Java 类型使用的公共功能性,比如LinkedLists、ArrayLists 和 HashMaps。下一个例子使用 1.4.2 库和默认的javac编译模式。
泛型化 API 的用户必须使用 <> 符号简单地声明在编译类型中使用的类型。不需要任何类型转换,在本例中试图向一个 Integer 类型的集合中添加 String 对象将会在编译时被捕获。
因此,泛型允许 API 设计者提供这样的公共功能性:可以与多种数据类型一起使用,也可以在编译时出于类型安全对它进行检查。
设计自己的 Generic API 比起只是使用它们来说要稍微复杂一些。请从查看java.util.Collection源代码和API指南开始。

并发实用程序

并发实用程序库由 Doug Lea 定义在 JSR-166 中,是 J2SE 1.5 平台中流行的并发软件包的一个特殊版本。它提供强大的、高级别的线程构造,包括 executors(这是一个线程任务框架)、线程安全队列、Timers、锁(包括原子锁)和其他同步原语。
著名的旗语(semaphore)是这样一个锁。旗语与现在使用的 wait 的使用方式相同,用于限制对一块代码的访问。旗语更加灵活,并且也允许许多并发的线程访问,同时允许您在获得一个锁之前对它进行测试。

可扩展性和性能

1.5 版本承诺在可扩展性和性能方面的改进,新的重点在于启动时间和内存占用,使它更加易于以最大的速度部署应用程序。
最重大的一个更新是引入了 Hotspot JVM 中的类数据共享。该技术不仅在多个正在运行的 JVM 之间共享只读数据,而且改进了启动时间,因为核心的JVM类都是预先打包的。
性能工效是 J2SE 1.5 中的一个新特性,这意味着如果您一直使用的是以前版本中专门的 JVM 运行时选项, 那么可能值得不用选项或者用很少的选项重新验证您的性能。

监控和可管理性

监控和可管理性是 Java 平台中的RAS(Reliability, Availability, Serviceability,即可靠性、可用性、可服务性) 的一个关键组件。
JVM Monitoring & ManagementAPI(JSR-174) 指定一组全面的可以从正在运行的JVM进行监控的 JVM internals。 该信息可通过 JMX (JSR-003) MBeans 访问到,也可以使用JMX远程接口 (JSR-160) 和行业标准SNMP工具而远程访问得到。

桌面客户端

Java桌面客户端保留有 Java 平台的一个关键组件,并且这一点成了 J2SE 1.5 中许多改进的焦点。
这个 Beta 版本包含启动时间和内存占用方面的一些早期改进。该版本不仅更快,并且Swing工具集采用了一个崭新的叫做Ocean的主题。
通过建立 J2SE 1.4.2 中的更新,GTK和 Windows XP 外观方面有了更进一步的改进。
具有最新OpenGL驱动程序并且选择了图形卡的Linux和Solaris用户,可以使用下面的运行时属性从 Java2D 获得本机硬件加速。

核心 XML 支持

J2SE 1.5 引入了核心XML平台的几个修订,包括 XML 1.1 和Namespace、XML Schema、SAX2.0.1、XSLT和快速 XLSTC 编译器,以及最后的 DOM 第 3 层支持。
除了支持核心 XML 之外,未来版本的 Java Web Services Developer Pack 将交付最新的 Web 服务标准:JAX-RPC &SAAJ(WSDL/SOAP)、JAXB、XML Encryption and Digital Signature,以及用于注册的JAXR。

辅助字符支持

32 位的辅助字符支持作为传输到Unicode4.0 支持的一部分,已经慎重地添加到该平台。辅助字符被编码为一对特殊的UTF16值,以生成一个不同的字符或者码点(codepoint)。一个代理对(surrogate pair)是一个高 UTF16 值和后面的一个低 UTF16 值的组合。这些高值和低值来自一个特殊范围的 UTF16 值。
一般来说,当使用 String 或者字符序列时,核心 API 库将透明地为您处理新的辅助字符。但是因为 Java “char” 仍然保留为 16 位,所以非常少的一些使用 char 作为参数的方法,现在有了足够的可以接受 int 值的方法,其中 int 值可以代表新的更大的值。特别是 Character 类,具有附加的方法来检索当前的字符和接下来的字符,以便检索辅助的码点值。