Java小史:从1到5

简介: 介绍Java从1到5的版本变化

下面介绍一下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平台。主要的变化包括︰

  • 语言上的改变
  • assert关键字
  • 程序库的改善
  • 仿照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 存储器模型改善了复杂性、 有效性和以前的规格性
  • 静态导入

另外也有以下这些对于基本程序库的改善:

  • 自动给RMI产生桩模块
  • Swing:新的接口外观,叫做synth
  • 异步实用工具在java.util.concurrent
  • Scanner 类别来解析来自各式各样的输入和缓冲

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, 以此类推).


相关文章
|
4月前
|
存储 算法 Java
认识java
认识java
14 0
|
9月前
|
IDE 小程序 Java
初识Java 2
初识Java
42 0
|
9月前
|
Java C# 数据安全/隐私保护
带你了解java
本章我们将一起进入丰富多彩的编程世界。平时熟悉的网络游戏(传奇、魔兽世界)、聊天工具(QQ、MSN)、播放器(RealPlayer、WindowsMediaPlayer)、杀毒软件(诺顿、瑞星)等都被称为计算机程序。
46 0
|
Oracle Java 大数据
初识Java
初识Java
95 0
初识Java
|
设计模式 缓存 Dubbo
JAVA问答9
JAVA问答9
96 0
|
算法 Java
移动零(java)
移动零(java)
55 0
1105 链表合并(JAVA)
给定两个单链表 L1​=a1​→a2​→⋯→an−1​→an​ 和 L2​=b1​→b2​→⋯→bm−1​→bm​。如果 n≥2m,你的任务是将比较短的那个链表逆序,然后将之并入比较长的那个链表,得到一个形如 a1​→a2​→bm​→a3​→a4​→bm−1​⋯ 的结果。例如给定两个链表分别为 6→7 和 1→2→3→4→5,你应该输出 1→2→7→3→4→6→5。
1105 链表合并(JAVA)
1088 三人行(JAVA)
子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”
1088 三人行(JAVA)
|
缓存 算法 安全
关于 Java 18 你想知道的一切(下)
关于 Java 18 你想知道的一切(下)
关于 Java 18 你想知道的一切(下)