【文件属性】:
文件名称:java8rt.jar源码-mini-jvm:Go语言实现的JVM,实现了部分字节码的解释执行,学习JVM使用
文件大小:69KB
文件格式:ZIP
更新时间:2021-06-04 16:38:10
系统开源
java8
rt.jar源码
Mini-JVM
使用Go实现的Java虚拟机(不完整),解释执行,仅学习JVM使用;
Mini-JVM首先会从classpath中加载主类的class文件,然后找到main方法的字节码解释执行;执行过程中如果遇到新的类符号引用,则会通过全限定性名再从classpath中加载新的类文件,以此类推;
控制台输出、多线程功能通过自定义的标准库"mini-lib"中的Printer和MiniThread实现,没有使用JDK的标准库Thread,可以执行compile-minilib.sh编译mini-lib源文件;
当前支持的特性有:
int加法
条件判断、for循环
控制台打印
简单对象(POJO)创建
基本类型数组和引用类型的数组创建、读写
字符串常量,即String
name
=
"hello,
世界"
main方法中可以读取到命令行参数
对象字段读写、静态字段读写
方法重载、方法重写、接口方法调用、形参全部为int类型的static方法调用
支持虚方法表
native方法调用(本地方法表)
部分继承特性(字段继承、方法继承)
非标准库Thread类的线程
【文件预览】:
mini-jvm-master
----.gitignore(73B)
----go.mod(48B)
----mini-lib()
--------classes()
--------src()
----vm()
--------native_method_table_test.go(1KB)
--------method_area.go(7KB)
--------method_stack.go(795B)
--------native_method_table.go(2KB)
--------bcode()
--------error.go(454B)
--------atype()
--------accflag()
--------op_stack_test.go(319B)
--------native_method_object.go(1KB)
--------op_stack.go(2KB)
--------mini_jvm.go(3KB)
--------mini_jvm_test.go(8KB)
--------native_method_class.go(1KB)
--------native_method_printer.go(891B)
--------go_native_method_thread.go(2KB)
--------class()
--------native_method_system.go(660B)
--------interpreted_execution_engine.go(43KB)
----.travis.yml(77B)
----testcase()
--------classes()
--------src()
----utils()
--------io.go(1013B)
--------convert.go(292B)
--------zip.go(971B)
--------log.go(1KB)
--------zip_test.go(358B)
----main.go(1005B)
----README.md(10KB)
----compile-testcase.sh(82B)
----compile-minilib.sh(115B)