开发者社区> 安顿偶然浓汤> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java - 内部类
Java - 内部类
13 0
学了一天java,我总结了这些知识点(上)
学了一天java,我总结了这些知识点(上)
29 0
java内部类
内部类 内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了 成员内部类 静态内部类 局部内部类 匿名内部类 public class Outer { private int id=10; public void out()
37 0
java中的堆内存和栈内存
Java把内存分成两种: 一种叫做栈内存 一种叫做堆内存 栈内存 : 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
484 0
java内部类
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变量 3 private int x=1; 4 //定义外部类函数 5 public void methodOut(){ 6 System.
599 0
Java内部类
基本概念 内部类:是指把一个类的声明放到另一个类的声明中,甚至是放到一个方法内部,这样的类称为 内部类。 内部类分为 命名内部类和匿名内部类: 命名内部类:就像平时声明一个类一样,有个名字。
689 0
java中的集合类 以及 迭代器
  /* java中的集合类   实现了 Connection接口 ArrayList这个集合类  java.util.*这个包的类  toArray()方法可以返回一个 Object类型的对象数组     我们部队 ArratList进行泛型规范那么就会警告 但是还是可以运行的 这是因为JDK1.5中引进了泛型,但是你的ArrayList却没有采用,所有会有安全问题,比如你可以把一个别的对象放入al里面去,但是取出来的时候可能就会出错了,所以为了安全,在JDK1.5中引进了泛型这个概念。
861 0
+关注
安顿偶然浓汤
从事多年SOC/SIEM开发工作; 一个有趣的人;
61
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载