在2004年十月J2SE 5.0发布的时候,SUN公司这样解释这次版本名称不是J2SE 1.5而是J2SE 5.0的原因:“从Java诞生至今已有9年时间,而从有J2SE 算起也有5个年头了;在这样的背境下,将该版本号从1.5改为5.0可以更好的反映出新版的J2SE 的成熟度、稳定性、可伸缩性、安全性。”
J2SE 的这次变更之重大和意义之深远,的确也值得我们为之把版本号变换到J2SE 5.0。我们再看看Sun公司网站对J2SE 5.0的features描述:“通过增强Java平台的力量,允许开发者更容易地使用,Java编程语言的这些改进将吸引大量各种Java开发者”,这是“Java技术发展历程的一个重要里程碑” 。从这个描述我们可以看出,J2SE 5.0最大的目标是通过提供易用性而吸引各种开发者(当然包括以前的C/C++开发者) ,而它对以前版本的修改并不仅仅是API的升级,而且包括对Java语言层面的改进。
访问环境变量: 最初的Java语言有一个访问环境变量的方法System.getenv(),但因为Java宣称的”Write Once,Run AnyWhere”特性,所以在JDK1.0中去掉了这个能够访问平台专有信息的方法。在J2SE 5.0中,它又来了,并有所扩充。由此可见J2SE 5.0对编程方便性的重视程度。
泛型 J2SE 5.0提供了强大的泛型机制,让程序员可以减少代码重复,这个变化应该可以吸引小部分的C#开发人员吧。
增强的for循环 为了克服普通for循环的代码臃肿特点,J2SE 5.0提供了增强的for循环,我们现在可以这样写一个for循环:
- public void printAll(Collection< String> coll)
- {
- for(String str : coll)
- {
- System.out.println(str);
- }
- }
怎么样?是不是简单了很多?
自动的装箱/拆箱 我们以前手工的做装箱(Boxing)/拆箱(unBoxing)操作时,是不是很烦?放心,J2SE 5.0提供了自动的装箱/拆箱操作,我们现在可以写如下的代码:
- public void boxing(int i)
- {
- ArrayList< Integer> list=new ArrayList< Integer>();
- list.add(0,i);
- System.out.println(“i的值是”+list.get(0));
- }
可变参数数目 J2SE 5.0 开始支持Varargs(不固定自变量个数),J2SE 5.0中还加入了以前抛弃的枚举和C风格的格式化输出,这应该是为了吸引以前的C开发者吧。毕竟,在C开发中枚举和格式化输出用的是太多了。
并发 J2SE 5.0中加入了java.util.concurrent包,并向集合框架中加入了Queue接口,J2SE 5.0还为各种集合提供了并发情况下的实现。
Properties类增强 由于XML的普及性应用,J2SE 5.0为java.util.Properties类加入了从XML文件中装载属性和把属性值存储到XML文件中的方法。
Annotation功能 J2SE 5.0提供了注解(annotation)/元数据(metadata)功能,相信以后的大部分应用产品都将充分利用它的注解而实现产品的各种特性。
其它 J2SE 5.0还在多线程(并发机制)、安全、国际化、UI等方面进行了大规模的变更,使得我们能够更方便地进行Java开发。
其实,上面的这些变更,并不是我们程序员非要不可的内容。我们完全可以通过自己的办法来达到这些变更实现的功能。但J2SE 5.0的目标就是让我们程序员能够更加方便地进行开发,所以,我们在基于J2SE 5.0开发时,应该能够明显的体会到它的易用性。
【编辑推荐】