还记得当年学习编程的第一堂课,控制台出现“hello word”的情景吗?也就是从那时走进了二进制的世界。
public class HelloWord { public static void main(String[] args) { System.out.println("hello word"); }}
我们都知道Java是美国Sun(Stanford University Network)公司在1995年推出的一门计算机高级编程语言。其实在Java的背后还有很多有趣的故事,这篇文章我们就来聊聊Java的前世今生。
Java起源于20世界90年代初(1991年),在SUN MicroSystems由一个叫詹姆斯.高斯林James Gosling和同事一起实施Green Plan(绿色计划),主要开发消费类的电子产品,如机顶盒、电子辞典、控制烤面包箱家电设备等,最早考虑使用C++来修改,但C++复杂度高,开发难度大,且不具备垃圾回收,可移植性等,所以考虑重新设计一门语言,结果就产生了java语言的前生(OaK)语言。
1992年夏,Green计划已完成部分功能,同年11月成立了FirstPerson公司,主要致于高度互动设备的研发,如机顶盒。当时,FirstPerson公司参与了一个机顶盒项目的竞标,但是输给了SGI团队。祸不单行,与3DO公司的一笔关于机顶盒的交易也没能成功,此时,Green计划几乎宣告失败。1994年,互联网的兴起,引来生机,SUN团队将Oak做了修改,并更名为Java(至于为什么后来改成Java了,有许多美国人喜欢的咖啡,恰好有个名叫爪哇岛(JAVA)的国家盛产各种咖啡还有猫屎咖啡。所以就改成了Java)。1995年5月正式推出。2009年04月Oracle 收购 Sun,Java 也随之成为 Oracle 公司的产品。推出后一直霸占开发语言排名前三,前三名中必有一席。
Java之父 - 詹姆斯·高斯林
Java版本发展历程
Java语言自JDK1.0版本以来经历了许多次更新,也在基本程序库中增加了大量的类别和包。从J2SE 1.4开始,Java语言的变动由 Java Community Process(JCP)管理,JCP使用Java规范请求(Java Specification Requests,JSRs)来建议和定义对Java平台内容的新增和修改。
Java语言由Java语言规范(Java Language Specification,JLS)定义,对JLS的更改则根据JSR 901(页面存档备份,存于互联网档案馆)管理。除了语言上的变化,多年来Java标准库(JCL)发生了巨大的变化,从JDK 1.0中的几百个类暴增到J2SE 5中的三千多个类。Swing、Java2D等的全新API被加入其中,而许多原本JDK 1.0的类和方法已被弃用。当然,仍然有一些程序可以将Java程序从新版本的Java平台转换为较旧版本(例如Java 5.0降转到1.4)。Java 7发布后,Oracle承诺回到以前每两年发布一次的发布周期。但在2013年时,Oracle却宣布他们将Java 8延迟一年发表,官方表示是为了修复Java的安全漏洞。
2017年9月,Java 平台的主架构师 Mark Reinhold 发出提议,要求将 Java 的功能更新周期从之前的每两年一个新版本缩减到每六个月一个新版本。该提议获得了通过,并在提出后不久生效。Java 17, 11, 8 为目前提供支持的 LTS(长期支持)版本;Java 10 是上一个快速发布版本,且已不再被支持。2018年9月,随着 Java 11 的发布,Java 10 自当日起不再被支持。Oracle 将在 2019 年 1 月前为商业用途中的 Java 8 长期支持,而针对非商用的更新将继续提供,直至 2020 年 12 月;此外,AdoptOpenJDK 也为 Java 8 提供免费更新。针对 Java 11 的长期支持将不再由 Oracle 提供,而是改由 OpenJDK 社区提供,例如 Eclipse Adoptium(以前称之为 AdoptOpenJDK) 的 Eclipse Temurin。
版本 | 发布日期 | 最终免费公开更新时间 | 最后延伸支持日期 |
JDK Beta | 1995 | ? | ? |
JDK 1.0 | 1996 年 1 月 | ? | ? |
JDK 1.1 | 1997 年 2 月 | ? | ? |
J2SE 1.2 | 1998 年 12 月 | ? | ? |
J2SE 1.3 | 2000 年 5 月 | ? | ? |
J2SE 1.4 | 2002 年 2 月 | 2008 年 10 月 | 2013 年 2 月 |
J2SE 5.0 | 2004 年 9 月 | 2009 年 11 月 | 2015 年 4 月 |
JavaSE 6 | 2006年12 月 | 2013 年 4 月 | Oracle 于 2018 年 12 月停止更新 |
JavaSE 7 | 2011 年 7 月 | OpenJDK 于 2022 年 9 月停止更新(2015 年 5 月前由 Oracle 维护) | Oracle 于 2022 年 7 月停止更新 |
JavaSE 8(LTS) | 2014 年 3 月 | OpenJDK 目前由 Red Hat 维护 | Oracle 于 2030 年 12 月停止更新 |
JavaSE 9 | 2017 年 9 月 | OpenJDK 于 2018 年 3 月停止更新 | 不适用 |
JavaSE10 | 2018 年 3 月 | OpenJDK 于 2018 年 9 月停止更新 | 不适用 |
JavaSE 11 (LTS) | 2018 年 9 月 | OpenJDK 目前由 Red Hat 维护 | Oracle 于 2026 年 9 月停止更新 |
JavaSE 12 | 2019 年 3 月 | OpenJDK 于 2019 年 9 月停止更新 | 不适用 |
JavaSE 13 | 2019 年 9 月 | OpenJDK 目前由 Azul 维护 | 不适用 |
JavaSE 14 | 2020 年 3 月 | OpenJDK 于 2020 年 9 月停止更新 | 不适用 |
JavaSE 15 | 2020 年 9 月 | OpenJDK 目前由 Azul 维护 | 不适用 |
JavaSE 16 | 2021 年 3 月 | OpenJDK 于 2021 年 9 月停止更新 | 不适用 |
JavaSE 17(LTS) | 2021 年 9 月 | OpenJDK 目前由 SAP 维护 | Oracle 于 2029 年 9 月或之后停止更新 |
JavaSE 18 | 2022 年 3 月 | OpenJDK 于 2022 年 9 月停止更新 | 不适用 |
JavaSE 19 | 2022 年 9 月 | OpenJDK 于 2023 年 3 月停止更新 | 不适用 |
新老版本区: ●旧版本 ●旧版本,仍被支持 ●当前版本 ●未来版本 版本号支持:J2SE Java2标准版 。JavaSE(java standard edition) java标准版。LTS(Long-term support)长期支持版本 |