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

3 篇文章 2 订阅

用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、多线程等目前还没有实现,后边有机会再看看


总结

     这里主要参考的书籍有:《自己动手写Java虚拟机》、《Java虚拟机规范.Java SE 8版》、《深入理解Java虚拟机:JVM高级特性与最佳实践 第2版》。这篇文章作为JVM系列的开篇,就简单聊聊为什么要做JVM和实现JVM的哪些功能,之后的篇章开始具体了解以及实现一个简单的JVM,大纲也和 《自己动手写Java虚拟机》 一致。顺便立个flag,以后随缘更新吧(✪ω✪)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穷儒公羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值