Skip to content

zhengziha/j2me-vm

Repository files navigation

J2ME Virtual Machine (J2ME-VM)

一个轻量级的、跨平台的 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/ 目录:

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

About

一个c/c++、sdl2写的j2me虚拟机,无需jre环境

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors