免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1665 | 回复: 0
打印 上一主题 下一主题

Java 1.5 新特性 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-28 23:33 |只看该作者 |倒序浏览

Java1.5语言特性
-------------------------------------------------------------------------------------------------------------------
1、泛型(Generic)
C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面取出对象的时候我们也不得不对他们进行强制类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

2、For-Each循环
For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理,过去使用的是iterator或者索引变量遍历集合,现在则可以使用For-Each循环。
line1 void processAll(Collection c){
line2 for (MyClass myObject :c)
line3 myObject.process();
line4 }
3、自动装包/拆包(Autoboxing/unboxing)
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer);
自动拆包:包装类自动转为基本类型.(Integer >> int);

4、类型安全的枚举类(Typesafe Enums)
在Java1.5中将enum作为关键字,允许使用任意的方法和属性来创建枚举类。

5、可变参数(Varargs)
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。在JDK1.5之前,可以用重载来实现,但是这样就需要写很多的重载函数。
line1 public void write(Object... objs) {
line2 for (Object obj: objs)
line3 System.out.println(obj);
line4 }
另外,在引入可变参数以后,Java的反射包也更加方便使用了,对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])),现在可以这样写了c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。

6、静态引用(static import)
通过静态引用可以直接访问静态类的静态方法,而不需要通过在方法前添加静态类前缀。当经常访问静态类的静态方法时,可以使用静态引用提高程序的可读性,但过度使用则会起到相反的效果。

7、元数据(Meta-data)
注释语法,有时候也称为meta-data :“描述数据的数据”。一般来说它们可以被用来生成文档,检查代码间依赖关系,帮助编译器作语法检查,时下比较流行的工具有Xdoclet等。
J2SE 1.5 中的元数据特性提供了一个连接附加数据到Java Class、Interface、Method和Field中的能力。这些附加的数据或者注解能被javac编译器或者其他的工具识别,并且可以根据配置保存在class文件中,并且能在运行时通过Java的reflection API来发现。给Java平台添加元数据的一个主要原因是使得开发和运行工具能得到一个基础框架,使得可以减少在编码和发布的时候需要的额外的努力。其它工具能使用这些元数据信息来产生一些额外的代码或者在调试的时候提供额外的信息。


Java1.5 虚拟机
-------------------------------------------------------------------------------------------------------------------
1、类数据共享(Class Data Sharing)
要减少应用程序的启动时间和内存占用量, Java SE 5.0 引入了一个称作“类数据共享(Class Data Sharing,CDS)”的功能。在 32 位平台上,这种机制按如下方式工作: Sun 提供了一个安装程序,从系统 jar(jar 文件包含所有 Java 类库,称作 rt.jar)文件中加载类集合到一个专有内部表示法,并将该表示法转储到一个称作“共享归档”的文件中。关于后续的 JVM 调用,共享归档是内存映射输入的,从而节省了加载这些类的开销,并允许许多 Java 虚拟机的元数据用于在被多个 JVM 进程之间共享的这些类。

2、垃圾收集策略(Garbage Collector Ergonomics)
增强了对并行收集器的监控,以满足应用程序对内存使用的需求。程序员可以为应用程序指定一些性能指标,java虚拟机会根据这些性能指标来调整堆内存的大小,以最小的应用程序内存占用量来满足这些性能指标。这种动态调整策略是为了消除使用命令行参数来达到最优性能的必要。

3、服务类机器探测(Server-class Machine Detection)
在应用程序启动时,类装载器会尝试探测应用程序是否运行在服务类机器上。

4、线程优先级的改变(Thread Priority Changes)
改变了线程优先级的映射策略:在没有显示指定优先级的情况下,允许java线程和本地线程进行平等地竞争。

5、处理致命的错误(Fatal Error Handling)
增强致命错误的报告机制,提供改进的诊断报告输出和可靠性。

6、支持高精度计时(High-Precision Timing Support)
增加了System.nanoTime()方法,为了相关的时间测量程序提供了访问纳秒级时间源的功能。通过函数返回的时间值的实际精度是独立于平台的。


基本库
-------------------------------------------------------------------------------------------------------------------
改进了java.lang and java.util、Networking、Security、Internationalization等基本库。
1、Sercurity
Java1.5对安全做出了重大改进。对安全标记提供更好的支持,支持更多安全标准(SASL, OCSP, TSP),改进SSLEngine的可测量性和性能,并在加密和Java GSS areas进行了许多改进。

2、Internationalization
现在对字符的处理基于Unicode 4.0标准。影响了java.lang、java.text、java.util.regex等包中的功能。添加对32位的补充字符支持,作为过渡到Unicode 4.0支持的一个部分。补充的字符被编码成特殊的一对对UTF16的值来生成一个个不同的字符,或者从代码的角度来看,被代替的一对值是由一个高位的UTF16值紧随一个低位的UTF16值,而这个高位和低位的值都是从一个特殊的UTF16值范围内取出来的。
增强DecimalFormat类,无精度损失地格式化和解析BigDecimal 和 BigInteger值。
在java.util 和java.text包中,对locale敏感的功能增加了越南语的支持。

3、改进对环境变量的支持
函数System.getenv(String)将不再推荐使用,新的System.getenv()将允许以Map,String>方式来访问环境变量。

4、ProcessBuilder
与Runtime.exec相比,ProcessBuilder提供了更为便捷的方式来调用子进程。在修正的进程环境(基于父进程的环境,但做了少许修改)中,使用ProcessBuilder启动子进程十分容易。

5、Formatter
java.util. Formatter提供布局调整和对齐,对数字、字符串、日期/时间数据、和精确场所输出格式的支持。还支持java.math.BigDecimal和java.util.Calendar等常见的java类型。任意的用户类型的格式化定制可通过java.util.Formattabel接口进行扩展。

6、Scanner
java.util.Scanner能够把文本转换成基本数据类型或者字符串。由于Scanner基于java.util.regex包,它也能提供对流、文件数据、字符串或实现Readable接口的类进行基于正则表达式的搜索。

7、Reflection
增加对泛型、注释、枚举的支持,增加了许多有用的方法,并对java.lang.Class进行了泛型化。

8、Collections Framework
增加对泛型、增强循环、自动装包的支持;
增加了Queue, BlockingQueue, and ConcurrentMap等接口到集合框架之中;
增加了两个Queue的具体实现,还有一个框架实现;
增加了五种Queue实现,还有一个ConcurrentMap实现;
为了使用类型安全的枚举提供特殊用途的Map和Set实现;
增加了特殊用途的copy-on-write的List和Set;
提供了许多封装类来为大部分的集合接口增加多态安全性;
提供了几个新的操作集合算法;
为数组提供计算hash值和字符串表示的方法;

9、Java API for XML Processing(JAXP)
J2SE 1.5 介绍了一些对核心XML平台的修改,包括了XML 1.1,Namespace,XML Schema.还有SAX 2.0.1,XSLT和快速的XLSTC编译器,还有对DOM level 3的支持。除了对核心XML的支持特性以外,JWSDP(Java Web Services Developer Pack)将会发布最新的Web services标准:JAX-RPC & SAAJ(WSDL/SOAP),JAXB,XML加密以及数字签名和注册用的JAXR。

10、二进制位处理操作(Bit Manipulation Operations)
基本数据类型的包装类现在能够支持各种二进制位操作,包括highestOneBit, lowestOneBit, numberOfLeadingZeros, numberOfTrailingZeros, bitCount, rotateLeft, rotateRight, reverse, signum, and reverseBytes。

11、Math
库函数提供数值函数功能得到进一步扩张:
BigDecimal类增加对确定精度的浮点数运算的支持;
Math 和StrictMath库包括了双曲线计算函数(sinh,cosh,tanh)、立方根、10的对数计算等等;
十六进制浮点支持;

12、Instrumentation
Java.lang.instument包提供检测服务,允许java程序代理检测程序代码在java虚拟机中的运行情况,这种机制是通过修改方法的字节码来实现的。

13、Serialization
支持枚举类的序列化,枚举类的序列化规则与普通对象的序列化规则有所不同:序列化一个枚举实例的规则包括它的枚举常量名,还有能够识别它的基本枚举类型的信息;反序列化则是通过类信息找到合适的枚举类,然后通过Enum.valueOf方法调用来获取枚举常量名所对应的值。

14、并行工具类(Concurrency Utilities)
并行工具包
java.util.concurrent

java.util.concurrent.atomic

and java.util.concurrent.locks
是由Doug Lea在带领的JSR-166中提出要添加到J2SE 1.5中去的,这是一个非常流行的并行工具包.他提供了功能强大的,高层次的线程构造器,包含了执行器,例如一个线程任务框架,线程安全的队列,计时器,锁(包含了原子级别的锁)和其他一些同步的基本类型。

15、Threads
线程优先级处理机制有所改变;
Thread.State枚举类和新的getState() API提供查询线程执行状态的方法;
新的线程dump API—getStackTrace和getAllStackTrace方法通过编程方式获取一个线程或者所有线程的堆栈信息;
新形式的sleep()方法允许线程休眠时间小于一毫秒;

16、监控和管理(Monitoring and Manageability)
Java.lang.management包提供监控和管理java虚拟机的接口;
java.util.logging.LoggingMXBean接口是日志工具的管理接口;
java虚拟机内建的检测机制允许程序员使用JMX进行监控和管理;
SNMP代理公布了针对java虚拟机检测机制的标准MIB库;


Integration Libraries
-------------------------------------------------------------------------------------------------------------------
1、RMI
动态产生存根类(stub class);
增加标准SSL/TLS Socket Factory类;
通过inetd/xinetd来启动rmid或者一个java RMI Server;

2、JDBC
提供5种标准的RowSet接口实现:JdbcRowSet、CachedRowSet、FilteredRowSet、JoinRowSet、WebRowSet。

3、CORBA,java IDL,和java RMI—IIOP

4、JNDI

。。。。。。。。。。

参考文章:
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxnews&Number=471991&page=0&view=collapsed&sb=7&o=&fpart=all


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8667/showart_1808609.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP