YVM 基于 C++ 的 Java 虚拟机开源项目

我要开发同款
匿名用户2018年08月20日
254阅读

技术信息

开源地址
https://github.com/racaljk/yvm
授权协议
MIT

作品详情

中文 | Eglish

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

已支持语言特性

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

Java基本算术运算,流程控制语句,面向对象。

RTTI

字符串拼接(+,+=符号重载)

异常处理(可输出stacktrace)

创建异步线程

Sychroized(支持对象锁)

垃圾回收(标记清除算法)

构建和运行

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

配置 编辑src/Optio.h,如果是Widows则

#defie TARGET_WIN32

如果是Liux则

#defie TARGET_LINUX

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

$ cd yvm$ cmake .$ make -j4

运行

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

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

java.lag.Strig

java.lag.StrigBuilder

java.lag.Throwable

java.lag.Math(::radom())

java.lag.Ruable

java.lag.Thread

运行效果

helloworld 

快速排序 

异常调用栈轨迹 

原生多线程 

Sychroized保护下的多线程 

垃圾回收 

开发文档

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

Licese

CodelicesedudertheMITLicese.

功能介绍

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

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论