Oracle称Java为开源软件,为何JVM源代码未随JDK提供?
为什么JVM源码没随JDK的src.zip一同提供?
这是个非常典型的疑问,我来给你拆解清楚~
首先要明确两个核心概念的边界:
- Java作为一个平台确实是开源的(以OpenJDK为官方开源实现,Oracle JDK现在也基于OpenJDK构建),JVM(比如主流的HotSpot虚拟机)的源码同样是开源的,但它和JDK里的Java类库是完全不同的组件。
- JDK里的
src.zip有明确的定位:它只包含用Java语言编写的核心类库源码,也就是咱们日常开发中用到的java.lang、java.util、javax.*这些包下的类实现——这些是Java程序运行依赖的上层API库,和底层虚拟机不是一个层面的东西。
那JVM的源码去哪找?其实OpenJDK的完整仓库里就包含HotSpot的全部源码,比如在仓库的src/hotspot目录下,里面是用C/C++编写的虚拟机核心逻辑(包括垃圾回收、字节码解释/编译、内存管理这些底层功能)。只是这部分代码不会被打包进src.zip,原因很简单:
- 大部分Java开发者日常开发、调试只需要了解上层类库的实现,不需要直接接触虚拟机的底层C/C++代码;
src.zip的设计目标就是为Java开发者提供快速查看Java层面API实现的入口,把底层虚拟机代码放进去反而会增加不必要的复杂度。
如果你确实需要研究JVM的实现,直接去OpenJDK的代码仓库就能获取到完整的HotSpot源码,完全开源可查看、可编译。
内容的提问来源于stack exchange,提问作者Ashwani Sharma
相关产品推荐
相关产品推荐

