Java发展史

Java发展史

Java历史的几个重要节点:

  • 1990,Sun公司启动了一个名为"绿色计划"的项目,由James Gosling等领导,目标是开发一种可以在机顶盒等消费性电子产品上运行的程序架构。这个计划产生了Java的前身:Oak,随着1995年互联网的兴起,Oak找到了适合自己的发展方向并最终蜕变成Java。
  • 1995年5月23日,Oak正式改名为Java,Java也第一次提出来**"一次编译,到处运行"(Write Once, Run Anywhere)**的口号。
  • 1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。
  • 1998年12月4日,Sun公司将Java技术体系分为三个方向:面向桌面应用开发的J2SE (Java 2 Platform, Standard Edition)、面向企业级开发的J2EE (Java 2 Platform, Enterprise Edition)、面向机顶盒等移动终端开发的J2ME(Java 2 Platform, Micro Edition)。
  • 2004年9月30日,Sun公司放弃了"JDK 1.x"的命名方式,将版本号修改为"JDK x",并且发布了JDK 5。
  • 2006年11月13日,Sun公司在Java One大会上宣布要将Java开源。在随后的一年多里,Sun公司陆续将JDK各个部分的源码在GPL v2协议下公开,并建立了OpenJDK组织独立管理这些源码。
  • 2006年12月11日,JDK 6发布,从这个版本开始,J2SE、J2EE、J2EE的命名方式被Java EE、 Java SE、 Java ME代替。
  • 2009年4月20日,Oracle正式收购Sun公司,Java商标也随之归Oracle所有(Java语言本身由JCP组织进行管理,并不属于某家公司所有)。
  • 2017年,JDK 9发布。并且,Oracle宣布以后将会在每年的3月和9月各发布一个JDK的大版本,另外,每六个大版本中才会被划分出一个长期支持(Long Term Support)版本。只有LTS版的JDK才可以获得长期的支持和更新,普通版本的JDK只有六个月的生命周期。目前,有4个LTS版本:JDK 8、 JDK 11、 JDK 17、 JDK21。
  • 2018年3月,Oracle宣布"按计划报废"Java EE(包含JDBC、Servlet等基础组件),将所有权赠送给Eclipse基金会,且Java EE不准再使用Java的商标,取而代之的是Jakarta EE。
  • 2018年9月25日,JDK 11发布,同时Oracle宣布以后将会同时发行两个JDK:一个是在GPL v2+CE协议下由Oracle发行的OpenJDK,一个是在OTN协议下发行的OracleJDK 。这两个JDK共享绝大部分代码,在功能上几乎一样。OpenJDK可以免费在开发、测试以及生产环境下使用,但只有半年时间的更新支持;OracleJDK仅允许少数的免费使用场景,若在生产环境中商用就必须收费,且有长期的更新支持。一些公司会在OpenJDK的基础上开发自己的JDK,如阿里巴巴的Dragonwell,OpenJDK的管理以及维护目前由RetHat负责。

注:

  • JavaSE、JaveEE、JavaME三者之间的关系

    • JavaSE是基础,面向桌面级应用(如Windows应用),提供了核心库和语言特性
    • JavaEE扩展了JavaSE,面向服务端的Web应用,针对企业级应用开发提供了更多的功能和组件,如javax.servlet.*等
    • JavaME专注于嵌入式设备和移动设备的应用开发,提供了轻量级的运行时环境和API,如javax.microedition.io.*等

    (Android APP开发也使用了Java,但并不是Java ME开发)

  • 4个LTS版本更新支持结束时间分别为
LTS版本 支持结束时间
JDK 8 2030年12月
JDK 11 2032年1月
JDK 17 2024年9月
JDK 21 2026年9月
  • OpenJDK

    OpenJDK以及OracleJDK之间具体的历史关系,可以参考博客。

相关推荐
杨杨杨大侠16 分钟前
DeepSeek Harness:连 Agent Loop 都能替换的插件架构
java·人工智能·agent
SL_staff16 分钟前
私有化低代码运维三重雷区:JVS开源栈中的Kafka/ES/RabbitMQ治理实践
java·低代码·全栈
yuniko-n17 分钟前
【算法】约瑟夫环问题
java·算法
郝亚军27 分钟前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
譕痕41 分钟前
stripe 实例
java·开发语言·stripe·checksession
墨子夕1 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
骇客野人1 小时前
Linux 全套实操方案(含目录详解、文件传输、日志、文件规范、环境变量、Java 应用部署运维)
java·linux·运维
.Bryce.1 小时前
MCP+A2A+ANP,Agent通信协议的完整知识地图
java·人工智能·后端·agent·通信协议
SL_staff1 小时前
规则引擎选型陷阱:为什么QPS不是JVS-Rules对比Drools的核心指标
java·开源·全栈
LMT流氓兔1 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain