下面介绍一下Java从1到5的的版本变化,其中表红色的为现在还在影响Java的重要改变。
JDK 1.1:
1997年2月19日发布。新增功能主要包括
- AWT事件模型大规模重新编制
- 加入了内部类
- JavaBeans
- JDBC
- RMI
- 能够支持自理的反射能力,在运行时不可能有修改。
- 针对 Microsoft Windows 平台上运作的版本,附带由Symantec为JavaSoft生产的JIT编译器
- 支持国际化和Unicode,该功能源自Taligent
J2SE 1.2:
1998年12月8日发布,代号为Playground。 该版本到J2SE 5.0为止的后续版本被更名为Java 2,而版本名称“J2SE”(Java 2平台,标准版)取代JDK以区别J2EE(Java 2平台,企业版) 和J2ME(Java 2 Platform,Micro Edition)基础平台。这是Java的一个非常重要的版本,它将Java平台的大小增加至原先的三倍,在59个程序包中达到了1520个类。主要增加包括:
- strictfp 关键字
- 主类别中集成了Swing图像化API
- 首次为Sun提供的JVM配备JIT编译器
- Java plug-in(即 Java Applet)
- Java IDL,一个与CORBA互通的接口描述语言实现
- Java集合框架
J2SE 1.3
代号为Kestrel。在的版本中最著名的改变包括:
- 包含了HotSpot JVM(HotSpot JVM第一次被发布是在1999年4月,名为J2SE 1.2 JVM)
- 为了支持与CORBA的选择兼容性而修改了RMI
- Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI)包含在主程序库中(先前为扩展组件的形式)
- Java Platform Debugger Architecture (JPDA)
- JavaSound
- 用于实现动态代理的类
扩展:JNDI和Log4j
J2SE 1.4
代号为Merlin。2002年2月6日发布了JSR 59,是第一个在JCP下开发的Java平台。主要的变化包括︰
- 语言上的改变
- 程序库的改善
- 仿照Perl的正则表达式
- 异常链,允许一个异常来封装原先处于较低级别的异常
- 支持Internet Protocol version 6 (IPv6)
- 非阻塞I/O(取名为 Nonblocking Input/Output,NIO)
- 日志API
- 图像 I/O API来读取和写入图片,支持JPEG、PNG等格式
- 集成了XML解析器和XSLT处理器(JAXP)和JSR 63
- 集成安全和加密扩展组件(JCE, JSSE, JAAS)
- 内置了Java Web Start (Java Web Start 在2001年3月第一次被发布,作为J2SE 1.3的可选组件)
- 首选项 API (java.util.prefs)
J2SE 5.0/Java 5.0
代号为Tiger。这个在2004年9月30日发布的版本原本以1.5编号,也就是仍然使用内部版本编号。这个数字辈改变是为了“更好地反映成熟度、稳定性、可扩展性和 J2SE 的安全水准”。
J2SE 5.0在2008年4月8日进入其即将停止公开更新的期间;2009年11月3日正式不公开开放更新。Oracle客户直到2015年5月都能透过付费的方式获取更新 。
Tiger增加了若干个重要的新语言功能。
- 泛型(Generics): 为集合提供编译期间 (静态) 类型安全,且不须为大多数类型转换 (类型转换)
- 元数据(Metadata): 也称作注解。让语言结构(像是类别和方法)能够用额外的资料标记,可以由元数据意识工具处理
- 自动封装与解封装: 在基本的资料类型(如int)和基本的的外覆类别 (如Integer) 之间能够自动转换
- 枚举(Enumerations): 以enum 关键字创造出一种类型安全,有排序值的清单(如Day.MONDAY、 Day.TUESDAY 等);以前这只能透过非类型安全的恒定整数或自行撰写的类别来达成 (类型安全的枚举模式)
- 可变参数函数(Varargs):方法的最后一个参数现在可以用一个类型名称加上三个点宣告(如:void drawtext(String... lines));在调用代码中,类型中参数里任何的数字可以被使用,而它们再放在一个数组来传递给方法,或是其它的调用代码可以传递那个类型的数组
- 强化 foreach 循环:for 循环的语法被用特别的语法扩展了,适用于数组或 Iterable,用于迭代每个成员,如基本的Collection 类别
- 改进多线程 Java 程序的执行语义;新的 Java 存储器模型改善了复杂性、 有效性和以前的规格性
- 静态导入
另外也有以下这些对于基本程序库的改善:
Java 5是Java的最后一个正式支持Microsoft Windows 98和Windows ME的版本,而Windows Vista是J2SE 5在2009年10月的Java 5生命周期之前支持的Windows的最新版本。
Java 5 Update 5(1.5.0_05)是Java在Windows 95(装了Internet Explorer 5.5 的)和Windows NT 4.0上运行的最后一个版本。
Java 5 最初出现在 Mac OS X 10.4 (Tiger),到了 Mac OS X 10.5 (Leopard)时成为了默认的 Java 版本。
版本控制系统的改变
此版本推出了JAVA语言中,一个新的版本控制系统,而旧版本控制系统仍然可以在开发者资源库中继续使用。
这种对应关系持续维持到以后的版本 (Java 6 = JDK 1.6, Java 7 = JDK 1.7, 以此类推).