Java 的前世今生
不知道有没有小伙伴和笔者一样,虽然早已学过Java这门编程语言,但是对他的历史以及版本更替情况却毫无了解。遂笔者在这里记录一下Java的诞生及发展。
起源
- 20世纪90年代,单片式计算机系统诞生,单片式计算机系统不仅价格低廉,而且功能强大,使用它可以大幅度提升消费类电子产品(电视机顶盒,面包烤箱,收音机,移动电话等)的智能化程度。
- SUN公司为了抢占市场先机,在1991年4月,成立了一个由詹姆斯·高斯林(James Gosling)领导,名为Green(绿色计划)的项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。
- 由于当时C++所具有的优势,该项目组的研发人员首先考虑采用C++来编写程序,但对于硬件资源极其匮乏的单片式系统来说,C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行也成为一个难题。
- 为了解决困难,最后项目小组决定:既不用C++编写,也不用开发全新的编程语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了 C++复杂的指针和内存管理,最终在1992年,开发了一种称为Oak的面向对象语言。
- 当他们向硬件生产商进行演示了Green操作系统,Oak的程序设计语言,类库及其硬件,以说服他们使用Oak语言生产硬件芯片时,硬件生产厂商对此并不感冒,原因是贸然生产风险太大,所以Oak语言因缺乏硬件支持而无法进入市场,从而被搁置一旁。
- 1994年6,7月间,在经历了一场历时三天的讨论,决定将该技术应用于万维网。1995年,他们用Oak语言研发了一种将小程序嵌入到网页中执行的技术——Applet,由于Applet不仅能嵌入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了Oak这门语言,与此同时,Oak正式更名为Java。从此,Java在互联网的推动下就火了。
发展
- 1996年1月,SUN公司推出了JDK1.0。在JDK1.0发布后,有很多程序员学习并运用Java来制作网页,JDK包括两大部分:开发工具和运行环境。
- 运行环境包括核心API,集成API,用户界面API,发布技术,Java虚拟机(JVM)。JDK1.0的发布,标志着Java成为一种独立的开发工具。在同年9月,约有8.3万个网页应用了Java技术来制作。JDK1.0的代表技术有:Java虚拟机,Applet,AWT等。
- 1997年2月,SUN 公司紧接着推出了JDK1.1,在推出后的3周时间里,达到了近22万次的下载量。4月2日,首届Java One大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类会议规模最高的记录。JDK1.1的代表技术有:JDBC,JavaBean,RML,JAR文件格式,Java 语法中的内部类和反射。
- 1998年12月8日,JDK1.2——第二代Java平台的企业版J2EE发布。
- 1999年6月,SUN公司把Java体系分为三个方向: J2ME (Java2 Micro Edition,Java2 平台的微型版),应用于移动,无线及有限资源的环境; J2SE (Java2 Standard Edition,Java2 平台的标准版),应用于桌面环境; J2EE (Java2 Enterprise Edition,Java2 平台的企业版),应用于基于Java的服务器开发。
- 随着供应商的不同,Java 的 API 也分为三大类: Java Core API:Java 核心类库; Java Optional API:对之前 API 的扩充 特殊 API:由特殊厂商或组织提供的 API。
- Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。JDK1.2 的代表性技术有:Swing、JavaIDL、EJB、JavaPlug-in 等,在 API 文档中,添加了 strictfp 关键字和 Collections 集合类。
- 1999 年 4 月 27 日,HotSpot 虚拟机发布。HotSpot 是由一家叫“LongviewTechnologies”的小公司开发的,后来被 SUN 公司收购。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成 为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机 。
- 2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,J2SE1.3 是对 J2SE1.2 的补充和扩展,从应 用领域的角度分析,JavaSE1.3 已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大 部分的信息技术领域。
- 2002 年 2 月 26 日,J2SE1.4 发布。与 J2SE1.3 相比,多了近 62%的类和接口。在这些新特性当中, 还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过 SSL 与 TLS 协议)、全新的 I/O API、 正则表达式、日志与断言。
- 2004 年 9 月 30 日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要 性,J2SE1.5 更名为 Java SE5.0(内部版本号 1.5.0)。Java SE5.0 包含了从 1996 年发布 1.0 版 本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化 I/O 及可变参数。
- 2005 年 6 月,在 JavaOne 大会上,Sun 公司发布了 JavaSE6。此时,Java 的各种版本已经更名, 已取消其中的数字 2,如 J2EE 更名为 JavaEE,J2SE 更名为 JavaSE,J2ME 更名为 JavaME。
- 2011 年 7 月 28 日,收购 Sun 公司的 Oracle 发布了 JavaSE7,引入了二进制整数、支持字符串的 switch 语句、棱形语法、多异常捕抓、自动关闭资源的 try 语言等新特性。
- 2014 年 3 月 18 日,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达 式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大。
- 2017 年 9 月 22 日,Oracle 公司发布 JavaSE9,这次版本升级强化了 Java 的模块化系统,让 Java 语言更轻量化,且采用了更高效、更智能的 GI 垃圾回收器,并在核心类库上进行大量更新,可进一 步简化编程。
- 2018 年 3 月 21 日,JavaSE10 发布,Java10 版本带来了很多新特性,其中最备受广大开发者 关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新 特性。
- 2018 年 9 月 26 日,JavaSE11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS 版本持续支持到2026 年9月)。 Java11 带来了 ZGC、 HttpClient 等重要特性,一共包含 17 个 JEP (JDK Enhancement Proposals,JDK 增强提案)。
- 2019 年 3 月 20 日, JavaSE12 发布。 Java12是短期支持版本,可在下一个版本发布之前获得Oracle 的商业支持。
- 2019 年 9 月 23 日,Java SE 13 发布,此版本中添加了“文本块”,文本块是一个多行字符串文字, 避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。