基于本文回答

播面 播面

文解图解播客视频,多维讲透八股文
0
评论

Java的发展史

Java自20世纪90年代初诞生以来,已经走过了三十多年的历程。它不仅是一门编程语言,更是一个庞大、活跃的技术生态系统。Java的发展史大致可以划分为以下几个重要阶段:


一、 孕育与诞生 (1991 - 1995)

  • Green Project 与 Oak 语言(1991年): Java的前身始于Sun Microsystems(太阳微系统公司)的一项名为“Green Project”的内部研发计划。该项目由詹姆斯·高斯林(James Gosling,被称为“Java之父”)、麦克·舍里丹(Mike Sheridan)和帕特里克·诺顿(Patrick Naughton)等人发起,旨在为家用电器、交互式电视等智能嵌入式设备开发一种通用的控制系统。高斯林为此开发了一种新型语言,起初命名为 Oak(因其窗外的一棵橡树而得名)。
  • 向互联网转型(1994年): 由于当时的交互式电视和数字有线电视市场尚未成熟,Oak并未在消费电子领域取得预期的商业成功。然而,随着万维网(World Wide Web)的爆发式增长,项目团队敏锐地意识到Oak的安全、跨平台和分布式特性非常适合互联网开发。
  • 改名 Java(1995年): 1995年,由于商标冲突,Oak正式更名为 Java(源于印度尼西亚生产咖啡的爪哇岛)。在同年5月的SunWorld大会上,Java语言及HotJava浏览器正式发布。其“一次编写,到处运行”(Write Once, Run Anywhere,简称 WORA)的口号,伴随着互联网的普及迅速传播。

二、 早期探索与“Java 2”时代的到来 (1996 - 2004)

  • JDK 1.0 的发布(1996年): 1996年1月,Sun发布了第一个正式版本JDK 1.0,标志着Java作为一门商用编程语言的正式起点。
  • JDK 1.1 的改进(1997年): 引入了内部类(Inner Classes)、JavaBeans、JDBC(数据库连接API)、RMI(远程方法调用)以及AWT事件模型的重构。
  • Java 2 的里程碑(1998年,JDK 1.2): 这是一个关键的转折点。Sun将这一代版本重新命名为“Java 2”,并首次将Java平台划分为三个定位不同的方向,以满足多样化的市场需求:
    • J2SE (Java 2 Platform, Standard Edition): 针对桌面端和标准应用。
    • J2EE (Java 2 Platform, Enterprise Edition): 针对企业级分布式应用,成为后来企业开发(如Servlet、EJB等)的行业标准。
    • J2ME (Java 2 Platform, Micro Edition): 针对移动设备和嵌入式设备(早期塞班系统手机应用的繁荣多归功于此)。
  • 性能与功能优化(2000 - 2002年,JDK 1.3 / 1.4): 引入了如今作为核心的 HotSpot JVM,并增加了强大的NIO(非阻塞I/O)、XML解析和日志API。

三、 语言的重大演进与所有权变更 (2004 - 2010)

  • JDK 5.0(Java 5,2004年): 为了简化语法并提高开发效率,Java在此版本迎来了诞生以来最大规模的语法更新。引入了 泛型(Generics)注解(Annotations)自动装箱/拆箱(Autoboxing/Unboxing)枚举(Enums)增强型for循环(foreach) 以及可变参数。这一版本也打破了原有的“1.x”命名习惯,直接跳跃到“5.0”。
  • Java 6(2006年): 重点在虚拟机底层进行了大量优化,提升了运行速度,并增强了对Web服务和脚本语言(如JavaScript)的支持。
  • Oracle(甲骨文)收购 Sun(2009 - 2010年): 2009年,甲骨文宣布以高价收购Sun Microsystems。2010年,该交易正式完成。自此,Java的主导权转移到了Oracle手中。

四、 Oracle 时代的稳步推进 (2011 - 2017)

  • Java 7(2011年): Oracle接手后的首个主版本。引入了Try-with-resources(自动资源管理)、在switch语句中使用String、钻石操作符(泛型类型推导)以及用于多核并发的Fork/Join框架。
  • Java 8(2014年): 这是Java历史上生命周期最长的经典版本之一。它为Java引入了函数式编程的特性,极大地改变了Java的编写方式。其核心特性包括:
    • Lambda 表达式: 简化了匿名内部类的编写。
    • Stream API: 提供了声明式的数据流处理方式。
    • Optional 类: 优雅地应对空指针异常(NullPointerException)。
    • 全新的 Date and Time API: 解决了旧版日期时间类设计混乱和线程不安全的问题。
  • Java 9(2017年): 引入了长达数年研发的 Project Jigsaw(模块化系统),将庞大的JDK拆分为多个相互依赖的模块。与此同时,这也是传统长周期功能驱动发布模式的终结。

五、 快速迭代与长期支持(LTS)时代 (2018 至今)

自Java 9之后,Oracle改变了Java的发布策略,由原先的“功能驱动”(数年发布一次)转变为“时间驱动”(每6个月发布一个新版本)
在此机制下,版本被分为:

  • LTS(Long-Term Support,长期支持)版本: 每隔几年发布一个(最初为每三年,后调整为每两年发布一个),享有长期的官方支持和维护,适合生产环境。
  • 非LTS版本(功能过渡版): 每半年发布一个,生命周期仅有6个月。

在这一阶段,关键的LTS版本包括:

  • Java 11 LTS(2018年): 移除了Java EE和JavaFX模块,使核心JDK更加精简;引入了局部变量类型推断(var)的增强,并重构了HttpClient。
  • Java 17 LTS(2021年): 引入了密封类(Sealed Classes)、Switch模式匹配(预览),并全面禁用了安全管理器。
  • Java 21 LTS(2023年): 带来了重磅的 虚拟线程(Virtual Threads,即 Project Loom),这极大提升了Java在处理高并发、高I/O密集型任务时的吞吐量和开发效率。
  • Java 25 LTS(2025年9月): 紧随Java 21之后的长期支持版本。Java 25进一步优化了现代Java的性能与开发体验,在稳定值(Stable Values)、简化模块导入语法(import module)、PEM编码支持 以及底层Project Panama(外部函数和内存API)的性能调优上带来了重要更新。

结语

Java的发展史是一部在“保持向后兼容(Backward Compatibility)”与“追求现代特性”之间寻找平衡的历史。凭借在企业级后端开发、大规模分布式系统、大数据技术(如Hadoop、Spark等)以及安卓生态中的深厚积淀,加之如今规范而敏捷的半年更迭机制,Java依然在现代软件开发领域占据着至关重要的地位。