基于 C++ 的 Java 虚拟机 YVM

MIT
C/C++
跨平台
2018-08-20
racaljk

中文 | 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.

的码云指数为
超过 的项目
加载中

评论(4)

racaljk
racaljk 软件作者
不是哗众取宠哦,个人兴趣
单指环quee
单指环quee
这么牛逼么
超级大黑猫
超级大黑猫
你写一个试试???
无聊的人啊
无聊的人啊
此项目哗众取宠吧,难道其他虚拟机不是c/cpp

暂无资讯

暂无问答

十一. 工具

# 十一. 工具 分析特定任务时还需要特定的工具,这些任务包括: * 识别和验证无障碍标签; * 从资源利用率的角度分析应用的运行时执行性能; * 分析网络和CoreData的使用情况; * 分析渲染性...

2018/01/12 23:52
10
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部