0
点赞
收藏
分享

微信扫一扫

第零章 用Java实现JVM之随便说点什么

用Java实现JVM目录

第零章 用Java实现JVM之随便说点什么
第一章 用Java实现JVM之JVM的准备知识
第二章 用Java实现JVM之解析Class文件
第三章 用Java实现JVM之运行时数据区
第四章 用Java实现JVM之指令集和解释器
第五章 用Java实现JVM之类和对象
第六章 用Java实现JVM之方法调用
第七章 用Java实现JVM之数组和字符串
第八章 用Java实现JVM之本地方法调用
第九章 用Java实现JVM之异常处理
第十章 用Java实现JVM之结束


文章目录


前言

之前一直觉得JVM是个神秘的东西,一直在用却不知道它具体的内部原理。后来看了《自己动手写Java虚拟机》这本书就跟着做了一遍,不过这本书用的是Go语言,自己也不熟,说到底还是在抄代码。就逐渐萌生了自己用自己熟悉的语言实现。还请大家不要介意语言本身。接下的实现也是基于这本书去实现的


一、为啥要写JVM?

     关于为啥要自己写JVM,这个就是仁者见仁了。有人认为是重复造轮子没必要,但是对于我来说大概就是出于兴趣吧,还有就是希望对Java底层的运行原理有所了解。当然了也不可能实现完整的虚拟机,就实现一个简单的玩具,以便加深自己对Java这门语言的理解

代码地址:jjvm

二、什么是JVM

     额,感觉这个是废话,能想到自己实现的JVM的人,不可能不知道什么是JVM,但还是简单说说吧

     我们都知道,Java是一门跨平台语言,而跨平台的核心就是JVM。JVM为了更好的实现跨平台的特性采用了栈式架构(关于栈式架构和寄存器架构这边就不展开了,汗,其实我也不大清楚,只知道寄存器架构依赖于CPU,跟硬件耦合度高些。而栈式架构是基于操作栈的,本身对硬件没什么依赖,更有利于实现跨平台)。我们写的Java代码是不能直接运行的,而是得先编译成Class文件后再交给虚拟机去运行,而虚拟机的任务就是解析Class文件再去运行对应的指令达到预期的效果。其实不单单是Java语言,其他语言如果也能编译成Class文件,JVM也是能够识别并运行的

二、实现目标

     JVM有很多知识,全部实现也不现实φ(>ω<*) ,这边就主要实现类加载器、运行时数据区、方法调用以及字节码解释器。至于内存分配和垃圾回收机制、JIT、多线程等目前还没有实现,后边有机会再看看


总结

     这篇文章作为JVM系列的开篇,就简单聊聊为什么要做JVM和实现JVM的哪些功能,之后的篇章开始具体了解以及实现一个简单的JVM。顺便立个flag,以后随缘更新吧(✪ω✪)

举报

相关推荐

0 条评论