jdk8和hotspot
在本文中,我们将从虚拟机(VM)的角度以及与之交互的角度研究如何开始在HotSpot Java虚拟机上工作以及如何在OpenJDK开源项目中实现它。 Java类库。
HotSpot来源简介
让我们看一下JDK源代码以及其中包含的Java概念的实现。 检查源代码有两种主要方法:
- 现代IDE可以附加src.zip(来自$ JAVA_HOME),以允许从IDE进行访问,或者
- 使用OpenJDK源代码并浏览文件系统。
两种方法都很有用,但重要的是要同时适应第二种方法和第一种方法。 OpenJDK源代码存储在Mercurial(类似于无处不在的Git版本控制系统的分布式版本控制系统。)中,如果您不熟悉Mercurial,则可以免费获得一本名为“ 版本控制示例 ”的书,其中涵盖了基础知识。
要检出OpenJDK 7源代码,请安装Mercurial命令行工具,然后:
汞克隆http://hg.openjdk.java.net/jdk7/jdk7 jdk7_tl
这将生成OpenJDK存储库的本地副本。 此仓库具有项目的基本布局,但尚未包含所有文件-因为OpenJDK项目分布在多个子存储库中。
初始克隆后,本地存储库将如下所示:
ariel-2:jdk7_tl boxcat$ ls -l
total 664
-rw-r--r-- 1 boxcat staff 1503 14 May 12:54 ASSEMBLY_EXCEPTION
-rw-r--r-- 1 boxcat staff 19263 14 May 12:54 LICENSE
-rw-r--r-- 1 boxcat staff 16341 14 May 12:54 Makefile
-rw-r--r-- 1 boxcat staff 1808 14 May 12:54 README
-rw-r--r-- 1 boxcat staff 110836 14 May 12:54 README-builds.html
-rw-r--r-- 1 boxcat staff 172135 14 May 12:54 THIRD_PARTY_README
drwxr-xr-x 12 boxcat staff 408 14 May 12:54 corba
-rwxr-xr-x 1 boxcat staff 1367 14 May 12:54 get_source.sh
drwxr-xr-x 14 boxcat staff 476 14 May 12:55 hotspot
drwxr-xr-x 19 boxcat staff 646 14 May 12:54 jaxp
drwxr-xr-x 19 boxcat staff 646 14 May 12:55 jaxws
drwxr-xr-x 13 boxcat staff 442 16 May 16:01 jdk
drwxr-xr-x 13 boxcat staff 442 14 May 12:55 langtools
drwxr-xr-x 18 boxcat staff 612 14 May 12:54 make
drwxr-xr-x 3 boxcat staff 102 14 May 12:54 test
接下来,您应该运行get_source.sh脚本,该脚本在初始克隆的一部分中已被下拉。 这将填充项目的其余部分,并克隆实际构建OpenJDK所需的所有文件。
在深入讨论源代码之前,重要的是要说:“不要害怕平台源代码”。 开发人员经常认为JDK源代码必须令人敬畏且难以理解。 毕竟,它是平台的核心。
JDK源代码是可靠的,经过全面审查和测试的; 但非常平易近人。 特别是,该源代码并不一定总是始终采用最新的Java语言功能。 因此,很常见的是在内部中找到仍未生成的类,这些类始终使用原始类型。
您应该熟悉JDK源代码的几个主要存储库:
杰克
这是类库所在的位置。 这些大多是Java(带有一些用于本机方法的C代码&#x