YVM基于 C++ 的 Java 虚拟机
YVM是用C++写的一个Java虚拟机,现在支持Java大部分功能,以及一个基于"标记清除算法"的并发垃圾回收器. 不过还有很多bug等待修复。 感兴趣的朋友pull request/fork/star吧!
已支持语言特性
高级特性逐步支持中,可以开Issue提议或者直接PR
Java基本算术运算,流程控制语句,面向对象。
构建和运行
预置MSVC 2017工程文件,同时支持CMakeLists
配置
编辑src/Option.h
,如果是Windows则
#define TARGET_WIN32
如果是Linux则
#define TARGET_LINUX
编译
如果使用MSVC,直接打开src/yvm.sln
即可 如果使用CMakeLists
$ cd yvm $ cmake . $ make -j4
运行
# --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
运行效果
开发文档
Wiki中有很多详细的开发文档,如果想探索关于YVM
的更多内容,请移步浏览:-)
License
Code licensed under the MIT License.
评论
node-jvm基于Node.js的Java虚拟机
node-jvm 实现了纯 Node.js 环境下的 Java 虚拟机。示例:javapublic
node-jvm基于Node.js的Java虚拟机
0
node-jvm基于Node.js的Java虚拟机
node-jvm实现了纯Node.js环境下的Java虚拟机。示例:javapublicclassMain{publicstaticlongfib(intn){if(n<=1)returnn;r
node-jvm基于Node.js的Java虚拟机
0
BicaVMJavaScript编写的Java虚拟机
国外用JavaScript编写Java虚拟机JVM成功!经过了6个月的奋战,BicaVM,一个用JavaScript语言写的Java虚拟机基本告一段落,可以运行60%以上的Java虚拟机编译代码,但是
BicaVMJavaScript编写的Java虚拟机
0
BicaVMJavaScript编写的Java虚拟机
国外用JavaScript编写Java虚拟机JVM成功!经过了 6个月的奋战,BicaVM ,一个用
BicaVMJavaScript编写的Java虚拟机
0
lujeLua 实现的 Java 虚拟机
luje是使用纯Lua实现的Java虚拟机,可将Java字节码编译成Lua脚本并使用MikePall的LuaJIT2来执行。其运行速度极其快,而且难以想象的轻量级。
lujeLua 实现的 Java 虚拟机
0