简单了解Java发展历史

来源:互联网 发布:淘宝上的拍卖靠谱吗 编辑:程序博客网 时间:2024/05/16 03:08

Java 语言

  • 1991年4月 Oak (Java前身), 作者:James Gosling

JDK 1.0

  • 1995年5月23日,Java 1.0,Oak语言改名为Java,“Write Once,Run Anywhere”

  • 1996年1月23日,JDK 1.0发布。

    • Java虚拟机实现(Sun Classic VM)
    • Applet
    • AWT
  • 1997年2月19日,JDK 1.1,

    • JAR文件格式
    • JDBC
    • JavaBeans
    • Java语法:如内部类(Inner Class)和反射(Reflection)

JDK 1.2

  • 1998年12月4日,JDK 1.2,

    • 面向桌面应用开发的J2SE(Java 2 Platform, Standard Edition)
    • 面向企业级开发的J2EE(Java 2 Platform, Enterprise Edition)
    • 面向手机等移动终端开发的J2ME(Java 2 Platform, Micro Edition)。
    • EJB
    • Java IDL
    • Swing
    • 加了strictfp关键字
    • Collections集合类
    • JIT(Just In Time)

    JDK 1.2中曾并存过3个虚拟机,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平台出现过;后面两个虚拟机都是内置JIT编译器的,而之前版本所带的Classic VM只能以外挂的形式使用JIT编译器)。

  • 1999年3月,JDK 1.2.1

  • 1999年7月,JDK 1.2.2

  • 1999年4月27日,HotSpot虚拟机发布,

    HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。
     

  • JDK 1.3

    • 2000年5月8日,JDK 1.3,

      • 数学运算
      • 新的Timer API
      • JNDI服务从JDK 1.3开始被作为一项平台级服务提供(以前JNDI仅仅是一项扩展)
      • 使用CORBA IIOP实现RMI的通信协议
      • Java 2D API
      • JavaSound

      • 2001年5月17日,JDK 1.3.1,

    JDK 1.4

    • 2002年2月13日,JDK 1.4发布,JDK 1.4是Java真正走向成熟的一个版本,

      • 正则表达式
      • 异常链
      • 日志类
      • XML解析器和XSLT转换器
    • 2002年9月16日,JDK 1.4.1

    • 2003年6月26日,JDK 1.4.2

    JDK 1.5

    • 2004年9月30日,JDK 1.5发布
      • 泛型
      • 自动装箱
      • 动态注解
      • 枚举
      • 可变长参数
      • 遍历循环(foreach循环)
      • 改进了Java的内存模型(Java Memory Model,JMM)
      • java.util.concurrent

    JDK 1.6

    • 2006年12月11日,JDK 1.6发布,

      • 动态语言支持(通过内置Mozilla Java Rhino引擎实现)
      • 编译API
      • 微型HTTP服务器API
      • JAX-WS2.0和JAXB2.0
      • JDBC4.0
      • 锁与同步
      • 垃圾收集
      • 类加载算法改进

        从JDK 1.6开始,Sun终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式

        2006年11月13日,JavaOne大会上,Sun公司宣布最终会将Java开源,并在随后的一年多时间内,陆续将JDK的各个部分在GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码大多是Sun本身也无权限进行开源处理的)外,OpenJDK几乎包括了Sun JDK的全部代码,OpenJDK的质量主管曾经表示,在JDK 1.7中,Sun JDK和OpenJDK除了代码文件头的版权注释之外,代码基本上完全一样,所以OpenJDK 7与Sun JDK 1.7本质上就是同一套代码库开发的产品。
          JDK 1.6发布以后,由于代码复杂性的增加、JDK开源、开发JavaFX、经济危机及Sun收购案等原因,Sun在JDK发展以外的事情上耗费了很多资源,JDK的更新没有再维持两年发布一个主版本的发展速度。JDK 1.6到目前为止一共发布了37个Update版本,最新的版本为Java SE 6 Update 37,于2012年10月16日发布。

    JDK 1.7

    • 2009年2月19日,JDK 1.7

      • G1收集器
      • 加强对非Java语言的调用支持(JSR-292)
      • 升级类加载架构

      工程代号为Dolphin(海豚)的JDK 1.7完成了其第一个里程碑版本。根据JDK 1.7的功能规划,一共设置了10个里程碑。最后一个里程碑版本原计划于2010年9月9日结束,但由于各种原因,JDK 1.7最终无法按计划完成。
        从JDK 1.7最开始的功能规划来看,它本应是一个包含许多重要改进的JDK版本,其中的Lambda项目(Lambda表达式、函数式编程)、Jigsaw项目(虚拟机模块化支持)、动态语言支持、GarbageFirst收集器和Coin项目(语言细节进化)等子项目对于Java业界都会产生深远的影响。在JDK 1.7开发期间,Sun公司由于相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有高峰时期的3%,已无力推动JDK 1.7的研发工作按正常计划进行。为了尽快结束JDK 1.7长期“跳票”的问题,Oracle公司收购Sun公司后不久便宣布将实行“B计划”,大幅裁剪了JDK 1.7预定目标,以便保证JDK 1.7的正式版能够于2011年7月28日准时发布。“B计划”把不能按时完成的Lambda项目、Jigsaw项目和Coin项目的部分改进延迟到JDK 1.8之中。最终,JDK 1.7的主要改进包括:提供新的G1收集器(G1在发布时依然处于Experimental状态,直至2012年4月的Update 4中才正式“转正”)、加强对非Java语言的调用支持(JSR-292,这项特性到目前为止依然没有完全实现定型)、升级类加载架构等。
        到目前为止,JDK 1.7已经发布了9个Update版本,最新的Java SE 7 Update 9于2012年10月16日发布。从Java SE 7 Update 4起,Oracle开始支持Mac OS X操作系统,并在Update 6中达到完全支持的程度,同时,在Update 6中还对ARM指令集架构提供了支持。至此,官方提供的JDK可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS平台上,支持ARM、x86、x64和Sparc指令集架构类型。

  • 2009年4月20日,Oracle公司收购Sun公司

    Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有(Java语言本身并不属于哪间公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun公司或者说Oracle公司所领导的)。由于此前Oracle公司已经收购了另外一家大型的中间件企业BEA公司,在完成对Sun公司的收购之后,Oracle公司分别从BEA和Sun中取得了目前三大商业虚拟机的其中两个:JRockit和HotSpot,Oracle公司宣布在未来1~2年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java虚拟机技术将会产生相当巨大的变化。

  • 2011年7月28日,Oracle公司发布Java SE 1.7

  • JDK 1.8

    • 2014年3月18日,Oracle公司发表Java SE 1.8
      • Lambda 表达式

    JAVA 9

    • 2017年9月21日,Java 9
      • 新模块系统
      • 支持HTTP/2.0
      • 改进的Javadoc
      • Stream改进
      • 使用新的工厂方法更容易地初始化Collections
      • 接口中的私有方法
      • 语言和语法的改进
      • 增强处理API
      • Java REPL = Jshell