前言
世界上没有完美的编程语言,只有最适合的编程语言。
正如 Elizarov 在文章中所说的。Java 带来的贡献远多于它的糟粕。并为开发者提供了在多平台上一致的体验,而无需担心编译错误。有的语言试图复制 Java 的成功,比如微软 C#,继承了 Java 的所有优势。然而,它最初将用户锁定在 Microsoft 平台上,却没有认识到跨平台性的重要性。
现如今 Kotlin 站在巨人的肩膀上,提供了更流畅的开发体验。有关于此,请查看本博客的 Tag。
所以,底层的 JVM 仍然是不可忽视的一部分。
技术体系
广泛而言,Kotlin、Clojure、JRuby、Jython、Groovy、Scala(当然也包括 Java)等一大票编程语言都主要运行于 JVM 上,都属于 Java 生态的一部分。
狭义的说,Java 主要就是由:
- JDK(Java Development Kit),Java 开发工具,用于开发、编译、调试 Java 程序。
- JRE(Java Runtime Environment),Java 运行时环境,用于运行 Java 程序。
- JVM(Java Virtual Machine),Java 虚拟机,是 Java 对 native 系统的抽象,便于程序在多平台上运行。
所组成的。它们的包含关系可以见下图:
JVM 是 Java 的核心,实现了一次编译处处运行的目标。通过采用一致的标准,为开发者屏蔽了繁琐的底层实现。任何系统只要有对应的 JVM 实现,就无需重新编译,直接运行。
发展历程
本文不是讲 Java 语言特性的,有关 Java 语法的发展内容,可以参阅这个网站。
- 1995年:Java 1.0 Release
- 1997年:JDK 1.1 Release
- 1999年:HotSpot VM 发布,成为 JDK 1.3 及以后的默认 JVM
- 2000年:JDK 1.3 Release,Sun 预定维持大概 2 年发一个主版本的节奏
- 2002年:JDK 1.4 Release
- 2004年:JDK 5 Release,Java 从此将版本号修改为「JDK XX」而非 1.X。同时,泛型、注解等重要语法特性被加入。
- 2006年:JDK 6 Release,Sun 公司宣布将 Java 以 GPLv2
开源。OpenJDK 出现。
- JDK 6 维持了数十年之久,最后一个版本 JDK 7 Update 211 于 2018 年发布
- 2009年,JDK 7 Milestone 1 Release,Sun 被 Oracle 收购。
- 2014年:JDK 8 Release,Lambda 等特性加入。
- 2017年:JDK 9 Release
- Oracle 决定从 JDK 9 开始刷版本,每年 3 月和 9 月各发一个大版本,同时每 6 个大版本选择一个 LTS(Long Term Support,长期支持)版本。
- 于是乎 2022 年的 LTS 版主要有 3 个:8、11、17
- 2018年:开发者之间闹得沸沸扬扬的:Wikipedia
- 甲骨文诉谷歌Java侵权案(Google LLC v. Oracle America,
Inc.)
- 该案最终在 2021 年由美国最高法重新审理判决 Google 属于合理使用。
- 2018年9月:JDK 11 Release,ZGC 出现。
- 同时,Oracle 修改了 JDK 的许可证。OpenJDK 以 GPLv2 + Classpath Exception 授权。Oracle 对 OpenJDK 的维护时长仅有 6 个月。历史分支转由 Red Hat 主要维护。更多信息可以参见:Wikipedia - OpenJDK
- 2021年:JDK 17 Release,Oracle 宣布 JDK 17 可以免费商用持续 3 年。具体的讨论可以看这里:知乎 - Oracle JDK17及以后的版本真的都免费么?同时,从 JDK 17 开始是每 4 个版本一个 LTS,所以下一个 LTS 是 JDK 21。
本文就到这里了。只先介绍一下 Java 的历史和基本组成,后续更新有关 JVM 细节的文章。