YVM基于 C++ 的 Java 虚拟机

联合创作 · 2023-10-01 08:34

中文 | English


YVM是用C++写的一个Java虚拟机,现在支持Java大部分功能,以及一个基于"标记清除算法"的并发垃圾回收器. 不过还有很多bug等待修复。 感兴趣的朋友pull request/fork/star吧!


已支持语言特性


高级特性逐步支持中,可以开Issue提议或者直接PR



构建和运行


预置MSVC 2017工程文件,同时支持CMakeLists



  1. 配置 编辑src/Option.h,如果是Windows则



#define TARGET_WIN32

如果是Linux则


#define TARGET_LINUX


  1. 编译 如果使用MSVC,直接打开src/yvm.sln即可 如果使用CMakeLists



$ cd yvm
$ cmake .
$ make -j4


  1. 运行



# --runtime为在YVM上运行的Java程序所必须的运行时,多个值用";"分隔
# 后面指定运行程序的全修饰名,如ydk.test.QuickSort
./yvm --runtime=C:\Users\Cthulhu\Desktop\yvm\javalib ydk.test.QuickSort

关于JDK


部分JDK类是JVM运行攸关的,但由于JDK比较复杂不便于初期开发,所以这里用重写过的JDK代替,源码参见javalib_src目录,编译后*.class文件位于javalib 目前重写过的JDK类有:



  • java.lang.String


  • java.lang.StringBuilder


  • java.lang.Throwable


  • java.lang.Math(::random())


  • java.lang.Runnable


  • java.lang.Thread



运行效果



  • helloworld 


  • 快速排序 


  • 异常调用栈轨迹 


  • 原生多线程 


  • Synchronized保护下的多线程 


  • 垃圾回收 



开发文档


Wiki中有很多详细的开发文档,如果想探索关于YVM的更多内容,请移步浏览:-)


License


Code licensed under the MIT License.

浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报