零、写在前面
JVM 的学习是每一个致力于 JAVA 语言的程序员一段最特殊的经历,至少说对于博主来说是这样的,有时候总是前脚看了,后脚就忘了。要是自己写一个 JVM,大概就很难忘了吧。带着这样的想法,博主找到一本张秀宏大神编写的《自己动手写 Java 虚拟机》,好了,话不多说,开整。
ps:博主已经把代码托管到了 GitHub 上,下面是地址
https://github.com/Mor1aty/golangJVM
一、准备工作
1、JDK
jdk 安装还是必须的,具体方法这里就不赘述了,博主用的版本是 1.8。
2、Go
在 Go 语言官网下载 Go 的安装文件,博主使用的版本是 1.5.1。需要注意的是国外的 Go 官网缘分到了才能访问,所以去 Go 语言中文网下载吧。
下载好 Go 语言之后,在环境变量中配置 GOPATH 变量,设置一下 GO 语言的工作目录。
最后在 cmd 中输入 go env 命令,如果显示下面类似的输出,就代表成功了。
3、创建目录结构
先规划好项目的目录结构,下面是博主的目录结构。
bin:存放生成的 exe 文件。
pkg:go 语言自动生成,不必理会。
resultPic:存放项目结果截图。
src:代码的主要目录结构。
每一个章节的工程代码,以 ch + 数字的风格命名。好了前期准备就差不多了。
二、java 命令行工具分析
一开始学习 java,很多人都被告诫不要直接使用像 Eclipse、IDEA 等的 IDE 工具,多用一用命令行编译运行对初学者更好。
为什么大家都这么说呢?
因为一段 java 代码的编译运行都是离不开那些命令的。
用最经典的 Hello World 程序为例。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
如果一个类包含 main 方法,那么我们就把这个类叫做主类。一般这个类就可以用来启动 java 应用程序。
那么 java 虚拟机是怎么知道我们要从哪个类启动应用程序呢?这一点,java 虚拟机规范并没有明确规定。也就是说,是由虚拟机实现自行决定的。比如 Ora