Sun Microsystems 于 1996 年发布 Java 1.0。重要的兼容性里程碑包括 J2SE 1.2(1998 年)、Java 5(2004 年,引入泛型和注解)、Java 8(2014 年,引入 lambda)以及 Java 9(2017 年,引入模块)。Oracle 于 2010 年收购 Sun。OpenJDK 是 Java SE 的开源参考实现,HotSpot 是其主要 JVM 实现;Oracle JDK 和许多厂商发行版都是 OpenJDK 的构建版本,但支持和打包策略各不相同。自 Java 10 起,特性版本按六个月的节奏发布,而选定版本会获得厂商提供的更长期支持。
规范与治理 #
Java 社区进程(JCP)通过 Java 规范请求(JSR)对 Java SE 进行标准化。每个 JSR 都有规范负责人和专家组;执行委员会批准既定里程碑,项目管理办公室负责管理流程。JCP 与 OpenJDK 开发彼此独立。
OpenJDK 的 JDK 增强提案(JEP)流程记录并引导重要的 JDK 工作。JEP 不会自动成为 Java SE 标准。当 OpenJDK 更改修改标准化 API 时,相关的 JSR 流程负责规范工作。JEP 1 定义了这种关系。
平台边界 #
Java 语言由 JLS 规范。JVM 指令集、类文件格式和执行模型由 JVMS 规范。Java SE API 规范定义库契约。JDK 是包含 JVM、标准库以及 javac、jar、jlink 和 javadoc 等开发工具的发行版;它是实现和工具链,而不是语言或 JVM 的同义词。
部署细节 #
启动器会将以 * 结尾的类路径元素展开为该目录中的 JAR 文件。通配符不会递归匹配,只匹配归档文件而不是任意类目录,并且顺序取决于平台;当顺序很重要时,必须使用显式路径。
多版本 JAR 在清单中包含 Multi-Release: true,并可以将特定版本的类文件放在 META-INF/versions/N/ 下。运行时会选择不高于自身特性版本的最高适用版本,否则使用根条目。工具必须保留清单并验证每个版本化条目,因为 MR-JAR 是一个具有多个运行时视图的工件。
在 Java 术语中,field 是在类或接口中声明的变量。“数据成员”是非正式说法,可能含混地包括字段、属性和其他状态。讨论语言构造时使用“field”;讨论设计时,应明确称呼依赖或封装状态。
评论
在 GitHub 上阅读或评论(发表评论需要登录)