项目简介
BabeVM是一个基于C语言实现的Java虚拟机,严格遵循Java虚拟机规范(JVMS书,第2版)1.6级别。它能够执行字节码,并且配有核心类库以支持虚拟机运行。此项目采用Apache 2.0许可证发布,代码简洁且易移植,适合在小型安全设备如支付终端上运行,既可以独立运行,也能嵌入到其他项目中。
项目的主要特性和功能
- 支持运行用Java 6编译器编译或配置为生成Java 6类的代码。
- 实现了所有JVMS操作码,支持双精度数、长整型、线程监视器、异常处理等。
- 具备完整的(绿色)线程实现,支持守护线程。
- 支持32/64位架构,大小端字节序。
- 使用100% ANSI C(90)开发,极少使用标准库函数,未使用汇编,可移植性强。
- 实现了完整的垃圾回收机制,支持类对象和类加载器对象的回收。
- 遵循CLDC 1.1支持弱引用。
- 小型环境可排除Java
float
和double
相关功能。 - 支持在无原生64位整数的架构上模拟Java长整型。
- 拥有类似Java Native Interface(JNI)的本地接口,允许Java类调用自定义C代码。
- 支持从jar文件中读取类文件。
- 加载的Java类按类加载器进行命名空间管理。
- 完整实现类和成员的访问可见性语义。
- 严格遵循JVMS类赋值规则。
- 虚拟机和Java字节码使用相同的内存原语和垃圾回收器。
- 全面支持try/catch/finally和线程未捕获异常处理。
- 实现了熟悉的控制台堆栈跟踪功能。
- 实现了Java SE权限模型的简化版本。
- 虚拟机线程堆栈可按需动态增长和收缩。
- 支持通过Java Debug Wire Protocol(JDWP)进行远程调试。
- 代码采用标准的'doxygen'格式和markdown概述进行了详细文档说明。
- 在一些性能测试中表现优于Python。
- 所有函数、全局变量等均以
bvm_
为前缀,避免命名冲突。
安装使用步骤
- 已下载本项目的源码文件。
- 安装所需的C编译器(如GCC)和相关的依赖库。
- 根据项目的构建说明,使用相应的构建工具(如make)编译源代码。
- 运行提供的测试程序,验证BabeVM的功能和性能。
- 将BabeVM作为Java虚拟机使用,运行Java程序。
注意事项
- 使用BabeVM需要一定的C/C++编程知识和对Java虚拟机工作原理的理解。
- 由于BabeVM是为特定目的而设计的,可能不支持Java标准库中的所有功能。
- 需要在支持C语言的操作系统和环境中运行和编译BabeVM。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】