一个轻量级的、跨平台的 J2ME (Java 2 Micro Edition) 模拟器,旨在无需安装 JRE 即可运行 J2ME 游戏和应用。本项目采用现代 C++17 编写,核心组件自研,致力于提供高性能和易移植性。
- 零依赖: 核心虚拟机完全自包含,不依赖外部 JVM。
- 跨平台: 基于 SDL2 开发,支持 Windows, macOS, Linux。
- 核心功能:
- 完整的类加载器 (
ClassLoader),支持.jar和.class文件。 - 高效的字节码解释器 (
Interpreter),采用 Dispatch Table 设计模式。 - 多线程支持 (
ThreadManager),模拟 Java 线程模型。 - 本地方法接口 (Native Interface),支持 CLDC 和 MIDP 库。
- 完整的类加载器 (
- 图形与交互:
- 支持
javax.microedition.lcdui图形库 (Canvas, Graphics, Image)。 - 支持键盘输入映射。
- 支持
j2me-vm/
├── src/
│ ├── core/ # 虚拟机核心 (解释器, 内存管理, 线程)
│ ├── loader/ # 类加载器 & JAR 处理
│ ├── native/ # 本地方法实现 (J2ME API)
│ ├── platform/ # 平台抽象层 (SDL2 封装)
│ └── util/ # 工具类
├── stubs/ # J2ME 标准库接口定义 (Java 源码)
├── stubs_build/ # J2ME 标准库编译输出目录 (编译后的 .class 文件)
├── tests/ # 测试用例
│ ├── src/ # 测试源文件 (.java)
│ ├── classes/ # 测试编译输出 (.class)
│ ├── graphics/ # 图形测试资源
│ ├── resources/ # 资源测试
│ └── rms/ # RMS 测试
├── docs/ # 开发文档 & 设计说明
├── build/ # VM 编译输出目录
└── CMakeLists.txt # 构建配置
- C++17 兼容的编译器 (Clang, GCC, MSVC)
- CMake 3.10+
- SDL2 开发库
# 1. 克隆项目
git clone <repository-url>
cd j2me-vm
# 2. 编译 J2ME 标准库 (rt.jar)
./build_rt_jar.sh
# 3. 编译虚拟机
./build.sh运行一个 JAR 文件:
./j2me-vm <path_to_jar>例如运行 tests/pal.jar (仙剑奇侠传):
./j2me-vm tests/pal.jar运行测试类:
# 编译测试
./build_tests.sh
# 运行测试
./run_test.sh PrimitiveTypesTest
./run_test.sh CollectionTest详细的开发文档请参考 docs/ 目录:
- 架构设计 (Architecture): 虚拟机的整体架构与设计理念。
- 解释器重构 (Interpreter Refactoring): 解释器核心的重构细节。
- 实现计划 (Implementation Plans): 各阶段的开发计划与进度。
欢迎提交 Issue 和 Pull Request!
MIT License