openjdk源码目录结构

1.整个目录结构

1.1 openjdk9

tree -L 2 -d

├── build
│   └── linux-x86_64-normal-server-slowdebug
├── common
│   ├── autoconf
│   ├── bin
│   ├── conf
│   ├── doc
│   ├── nb_native
│   └── src
├── corba           Common Object Request Broker Architecture,通用对象请求代理架构
                    是基于“对象-服务”机制设计,与 JavaBean、COM 等是同种范畴。
│   ├── make
│   └── src
├── hotspot
│   ├── make
│   ├── src
│   └── test
├── jaxp            全称 Java API for XML Processing,处理 XML 的Java API,是 Java XML 
                    程序设计的应用程序接口之一,它提供解析和验证XML文档的能力。 
│   ├── nbproject
│   ├── src
│   └── test
├── jaxws           全称 Java API for Web Services,JAX-WS 允许开发者选择 RPC-oriented
                   (面向 RPC) 或者 message-oriented(消息通信,erlang 使用的就是消息通信,
                    不过 Java 内存模型是内存共享)来实现自己的web services。通过 Web Services 
                    提供的环境,可以实现 Java 与其他编程语言的交互(事实上就是 thrift 所做的,
                    任何一种语言都可以通过 Web Services 实现与其他语言的通信,客户端用一种语言,
                    服务器端可以用其他语言)。
│   ├── nbproject
│   └── src
├── jdk             Java Development Kit
│   ├── make
│   ├── src
│   └── test
├── langtools       Java 语言工具。包含 javac、javap 等实用程序的源码。
│   ├── make
│   ├── src
│   └── test
├── make
│   ├── common
│   ├── devkit
│   ├── idea
│   ├── scripts
│   ├── templates
│   └── test
├── nashorn          Nashorn 项目的目的是基于 Java 在 JVM 上实现一个轻量级高性能的 JavaScript 
                     运行环境。基于 JSR-223 协议,Java 程序员可在 Java 程序中嵌入 JavaScript 代码。 
                     该项目使用了 JSR-229 里描述的新连接机制(从 Java 7 起开始使用的连接机制):
                     新的字节码(invokedynamic)以及新的基于方法句柄(method handle)的连接机制。
                     通过接口注入(interface injection)在运行时修改类也是 JSR-229 里的内容。
│   ├── bin
│   ├── buildtools
│   ├── docs
│   ├── exclude
│   ├── make
│   ├── samples
│   ├── src
│   └── test
└── test
    ├── failure_handler
    ├── fmw
    ├── jtreg-ext
    ├── lib
    ├── lib-test
    └── make

1.2 openjdk8

.
├── common
│   ├── autoconf
│   ├── bin
│   ├── nb_native
│   └── src
├── corba
│   ├── make
│   └── src
├── hotspot
│   ├── agent
│   ├── make
│   ├── src
│   └── test
├── jaxp
│   ├── make
│   ├── nbproject
│   └── src
├── jaxws
│   ├── make
│   ├── nbproject
│   └── src
├── jdk
│   ├── make
│   ├── src
│   │   ├── aix
│   │   ├── bsd
│   │   ├── linux
│   │   ├── macosx
│   │   ├── share
│   │   │   ├── back
│   │   │   ├── bin
│   │   │   ├── classes
│   │   │   │   ├── com
│   │   │   │   │   ├── oracle
│   │   │   │   │   └── sun
│   │   │   │   ├── java
│   │   │   │   │   ├── applet
│   │   │   │   │   ├── awt
│   │   │   │   │   ├── beans
│   │   │   │   │   ├── io
│   │   │   │   │   ├── lang
│   │   │   │   │   ├── math
│   │   │   │   │   ├── net
│   │   │   │   │   ├── nio
│   │   │   │   │   ├── rmi
│   │   │   │   │   ├── security
│   │   │   │   │   ├── sql
│   │   │   │   │   ├── text
│   │   │   │   │   ├── time
│   │   │   │   │   └── util
│   │   │   │   ├── javax
│   │   │   │   │   ├── accessibility
│   │   │   │   │   ├── crypto
│   │   │   │   │   ├── imageio
│   │   │   │   │   ├── management
│   │   │   │   │   ├── naming
│   │   │   │   │   ├── net
│   │   │   │   │   ├── print
│   │   │   │   │   ├── rmi
│   │   │   │   │   ├── script
│   │   │   │   │   ├── security
│   │   │   │   │   ├── smartcardio
│   │   │   │   │   ├── sound
│   │   │   │   │   ├── sql
│   │   │   │   │   ├── swing
│   │   │   │   │   └── xml
│   │   │   │   ├── jdk
│   │   │   │   │   ├── internal
│   │   │   │   │   └── net
│   │   │   │   ├── org
│   │   │   │   │   ├── ietf
│   │   │   │   │   └── jcp
│   │   │   │   └── sun
│   │   │   │       ├── applet
│   │   │   │       ├── audio
│   │   │   │       ├── awt
│   │   │   │       ├── dc
│   │   │   │       ├── font
│   │   │   │       ├── instrument
│   │   │   │       ├── invoke
│   │   │   │       ├── java2d
│   │   │   │       ├── jvmstat
│   │   │   │       ├── launcher
│   │   │   │       ├── management
│   │   │   │       ├── misc
│   │   │   │       ├── net
│   │   │   │       ├── nio
│   │   │   │       ├── print
│   │   │   │       ├── reflect
│   │   │   │       ├── rmi
│   │   │   │       ├── security
│   │   │   │       ├── swing
│   │   │   │       ├── text
│   │   │   │       ├── tools
│   │   │   │       ├── tracing
│   │   │   │       └── util
│   │   │   ├── demo
│   │   │   ├── doc
│   │   │   ├── instrument
│   │   │   ├── javavm
│   │   │   ├── lib
│   │   │   ├── native
│   │   │   │   ├── com
│   │   │   │   │   └── sun
│   │   │   │   ├── common
│   │   │   │   ├── java
│   │   │   │   │   ├── io
│   │   │   │   │   ├── lang
│   │   │   │   │   ├── net
│   │   │   │   │   ├── nio
│   │   │   │   │   ├── security
│   │   │   │   │   └── util
│   │   │   │   └── sun
│   │   │   │       ├── awt
│   │   │   │       ├── font
│   │   │   │       ├── java2d
│   │   │   │       ├── management
│   │   │   │       ├── misc
│   │   │   │       ├── nio
│   │   │   │       ├── reflect
│   │   │   │       ├── security
│   │   │   │       └── tracing
│   │   │   ├── npt
│   │   │   ├── sample
│   │   │   └── transport
│   │   ├── solaris
│   │   └── windows
│   └── test
├── langtools
│   ├── make
│   ├── src
│   └── test
├── make
│   ├── common
│   ├── devkit
│   ├── scripts
│   └── templates
├── nashorn
│   ├── bin
│   ├── buildtools
│   ├── docs
│   ├── exclude
│   ├── make
│   ├── samples
│   ├── src
│   ├── test
│   └── tools
└── test
    └── projects

classes 目录里的是 Java 的实现,native 目录里的是 C++ 的实现,两部分基本对应。这两个目录里的结构与 java 的包也是对应。

classes/
├── com
│   ├── oracle
│   └── sun
├── java
│   ├── applet
│   ├── awt
│   ├── beans
│   ├── io
│   ├── lang
│   ├── math
│   ├── net
│   ├── nio
│   ├── rmi
│   ├── security
│   ├── sql
│   ├── text
│   ├── time
│   └── util
├── javax
│   ├── accessibility
│   ├── crypto
│   ├── imageio
│   ├── management
│   ├── naming
│   ├── net
│   ├── print
│   ├── rmi
│   ├── script
│   ├── security
│   ├── smartcardio
│   ├── sound
│   ├── sql
│   ├── swing
│   └── xml
├── jdk
│   ├── internal
│   └── net
├── org
│   ├── ietf
│   └── jcp
└── sun
    ├── applet
    ├── audio
    ├── awt
    ├── dc
    ├── font
    ├── instrument
    ├── invoke
    ├── java2d
    ├── jvmstat
    ├── launcher
    ├── management
    ├── misc
    ├── net
    ├── nio
    ├── print
    ├── reflect
    ├── rmi
    ├── security
    ├── swing
    ├── text
    ├── tools
    ├── tracing
    └── util
native/
├── com
│   └── sun
├── common
├── java
│   ├── io
│   ├── lang
│   ├── net
│   ├── nio
│   ├── security
│   └── util
└── sun
    ├── awt
    ├── font
    ├── java2d
    ├── management
    ├── misc
    ├── nio
    ├── reflect
    ├── security
    └── tracing

2.hotspot目录结构

2.1 openjdk9

tree -L 2 -d hotspot

hotspot/
├── make
│   ├── copy
│   ├── gensrc
│   ├── ide
│   ├── lib
│   ├── mapfiles
│   ├── src
│   ├── symbols
│   └── test
├── src
│   ├── cpu
│   ├── jdk.aot
│   ├── jdk.hotspot.agent
│   ├── jdk.internal.vm.ci
│   ├── jdk.internal.vm.compiler
│   ├── os
│   ├── os_cpu
│   └── share
└── test
    ├── compiler
    ├── gc
    ├── native
    ├── native_sanity
    ├── runtime
    ├── sanity
    ├── serviceability
    ├── testlibrary
    └── testlibrary_tests

tree -L 3 -d hotspot/src

src
├── cpu
│   ├── aarch64
│   │   └── vm
│   ├── arm
│   │   └── vm
│   ├── ppc
│   │   └── vm
│   ├── s390
│   │   └── vm
│   ├── sparc
│   │   └── vm
│   ├── x86
│   │   └── vm
│   └── zero
│       └── vm
├── jdk.aot
│   ├── share
│   │   └── classes
│   └── unix
│       └── native
├── jdk.hotspot.agent
│   ├── doc
│   ├── linux
│   │   └── native
│   ├── macosx
│   │   └── native
│   ├── scripts
│   ├── share
│   │   ├── classes
│   │   └── native
│   ├── solaris
│   │   └── native
│   ├── test
│   │   └── libproc
│   └── windows
│       └── native
├── jdk.internal.vm.ci
│   └── share
│       └── classes
├── jdk.internal.vm.compiler
│   └── share
│       └── classes
├── os
│   ├── aix
│   │   └── vm
│   ├── bsd
│   │   ├── dtrace
│   │   ├── launcher
│   │   └── vm
│   ├── linux
│   │   └── vm
│   ├── posix
│   │   ├── dtrace
│   │   └── vm
│   ├── solaris
│   │   ├── dtrace
│   │   └── vm
│   └── windows
│       └── vm
├── os_cpu
│   ├── aix_ppc
│   │   └── vm
│   ├── bsd_x86
│   │   └── vm
│   ├── bsd_zero
│   │   └── vm
│   ├── linux_aarch64
│   │   └── vm
│   ├── linux_arm
│   │   └── vm
│   ├── linux_ppc
│   │   └── vm
│   ├── linux_s390
│   │   └── vm
│   ├── linux_sparc
│   │   └── vm
│   ├── linux_x86
│   │   └── vm
│   ├── linux_zero
│   │   └── vm
│   ├── solaris_sparc
│   │   └── vm
│   ├── solaris_x86
│   │   └── vm
│   └── windows_x86
│       └── vm
└── share
    ├── tools
    │   ├── hsdis
    │   ├── IdealGraphVisualizer
    │   └── LogCompilation
    └── vm
        ├── adlc
        ├── aot
        ├── asm
        ├── c1
        ├── ci
        ├── classfile
        ├── code
        ├── compiler
        ├── gc
        ├── interpreter
        ├── jvmci
        ├── libadt
        ├── logging
        ├── memory
        ├── oops
        ├── opto
        ├── precompiled
        ├── prims
        ├── runtime
        ├── services
        ├── shark
        ├── trace
        └── utilities

2.2 openjdk8

hotspot/
├── agent         Serviceability Agent的实现
│   ├── doc
│   ├── make
│   ├── src
│   └── test
├── make         用来build出HotSpot的各种配置文件
│   ├── aix
│   ├── bsd
│   ├── linux
│   ├── solaris
│   ├── templates
│   └── windows
├── src          HotSpot VM的源代码
│   ├── cpu    CPU相关代码(汇编器、模板解释器、ad文件、部分runtime函数在这里实现)
│   ├── os      操作系相关代码
│   ├── os_cpu  操作系统+CPU的组合相关的代码
│   └── share   平台无关的公共代码
└── test
    ├── compiler
    ├── gc
    ├── gc_implementation
    ├── runtime
    ├── sanity
    ├── serviceability
    ├── stress
    ├── testlibrary
    └── testlibrary_tests

tree -L 3 -d src

src/
├── cpu
│   ├── ppc
│   │   └── vm
│   ├── sparc
│   │   └── vm
│   ├── x86
│   │   └── vm
│   └── zero
│       └── vm
├── os
│   ├── aix
│   │   └── vm
│   ├── bsd
│   │   ├── dtrace
│   │   ├── launcher
│   │   └── vm
│   ├── linux
│   │   └── vm
│   ├── posix
│   │   └── vm
│   ├── solaris
│   │   ├── dtrace
│   │   └── vm
│   └── windows
│       └── vm
├── os_cpu
│   ├── aix_ppc
│   │   └── vm
│   ├── bsd_x86
│   │   └── vm
│   ├── bsd_zero
│   │   └── vm
│   ├── linux_ppc
│   │   └── vm
│   ├── linux_sparc
│   │   └── vm
│   ├── linux_x86
│   │   └── vm
│   ├── linux_zero
│   │   └── vm
│   ├── solaris_sparc
│   │   └── vm
│   ├── solaris_x86
│   │   └── vm
│   └── windows_x86
│       └── vm
└── share
    ├── tools
    │   ├── hsdis                  反汇编插件
    │   ├── IdealGraphVisualizer   将server编译器的中间代码可视化的工具
    │   ├── LogCompilation         将-XX:+LogCompilation输出的日志(hotspot.log)整理成更容易阅读的格式的工具
    │   └── ProjectCreator         生成Visual Studio的project文件的工具
    └── vm              HotSpot VM的核心代码
        ├── adlc          平台描述文件(上面的cpu或os_cpu里的*.ad文件)的编译器
        ├── asm           汇编器接口
        ├── c1            client编译器(又称“C1”)
        ├── ci            动态编译器的公共服务/从动态编译器到VM的接口
        ├── classfile     类文件的处理(包括类加载和系统符号表等)
        ├── code          动态生成的代码的管理
        ├── compiler      从VM调用动态编译器的接口
        ├── gc_implementation    GC的实现
        │   ├── concurrentMarkSweep 
        │   ├── g1
        │   ├── parallelScavenge
        │   ├── parNew
        │   └── shared      GC的通用实现
        ├── gc_interface    GC接口
        ├── interpreter     解释器,包括“模板解释器”(官方版在用)和“C++解释器”(官方版不在用)
        ├── libadt          一些抽象数据结构
        ├── memory          内存管理相关(老的分代式GC框架也在这里)
        ├── oops            HotSpot VM的对象系统的实现
        ├── opto            server编译器(又称“C2”或“Opto”)
        ├── precompiled
        ├── prims           HotSpot VM的对外接口,包括部分标准库的native部分和JVMTI实现
        ├── runtime         运行时支持库(包括线程管理、编译器调度、锁、反射等)
        ├── services        主要是用来支持JMX之类的管理功能的接口
        ├── shark           基于LLVM的JIT编译器(官方版里没有使用)
        ├── trace
        └── utilities       一些基本的工具类

你可能感兴趣的:(openjdk源码目录结构)