当前位置: 首页 > 软件库 > 服务器软件 > 虚拟机 >

YVM

基于 C++ 的 Java 虚拟机
授权协议 MIT
开发语言 C/C++
所属分类 服务器软件、 虚拟机
软件类型 开源软件
地区 国产
投 递 者 卫建义
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

 相关资料
  • 系统需求 就像它的名字"基于IP"所暗示的那样,这样的服务器中每个基于IP的虚拟主机必须拥有不同的IP地址。可以通过配备多个真实的物理网络接口来达到这一要求,也可以使用几乎所有流行的操作系统都支持的虚拟界面来达到这一要求(详情请参见您的系统文档,这种功能一般被称作"IP别名",一般用"ifconfig"命令来进行设置)。 如何配置Apache 有两种配置方法来使apache支持多主机:为每个虚拟主

  • 本文档说明了如何使用基于域名的虚拟主机。 基于域名的虚拟主机和基于IP的虚拟主机比较 基于IP的虚拟主机使用连接的IP地址来决定相应的虚拟主机。这样,你就需要为每个虚拟主机分配一个独立的IP地址。而基于域名的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。使用这种技术,很多虚拟主机可以共享同一个IP地址。 基于域名的虚拟主机相对比较简单,因为你只需要配置你的DNS服务器将每个主机名映

  • 我对虚拟函数感到困惑。有人告诉我,父类中的虚拟意味着我可以在子类中覆盖它。但是,如果我省略父类中的虚拟,我仍然可以覆盖它。

  • 一、运行时数据区域 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 二、垃圾收集 判断一个对象是否可被回收 引用类型 垃圾收集算法 垃圾收集器 三、内存分配与回收策略 Minor GC 和 Full GC 内存分配策略 Full GC 的触发条件 四、类加载机制 类的生命周期 类加载过程 类初始化时机 类与类加载器 类加载器分类 双亲委派模型 自定义类加载器实现 参

  • 本文向大家介绍基于编译虚拟机jvm—openjdk的编译详解,包括了基于编译虚拟机jvm—openjdk的编译详解的使用技巧和注意事项,需要的朋友参考一下 java只所以被推广,实际上很大原因是因为本身是跨平台的,很大作用是因为虚拟机的关系。 一般情况下开发人员不需要关注虚拟机内部实现就可以日常开发了,但是有时候涉及到性能的时候就需要了解虚拟机的实现机制了。 那么今天写的内容更多的是关于编译一套自

  • 一、前言 本部分内容是关于Java虚拟机的一些面试高频知识点的总结。说到对Java虚拟机的学习,就不得不提下这本书《深入理解Java虚拟机》。 本部分的内容也是基于这本书进行整理的,这本书基本是面试必备。 关于Java虚拟机,重点考察以下三个方面的内容: 内存区域/内存模型 类加载机制 垃圾收集算法/收集器 二、目录 对象的创建、内存布局和访问定位 Java内存区域与内存模型 Java类加载机制及