J2ME_cldc1.0.3/
├── api/ # Java 類庫源碼
├── bin/ # 可執行文件、編譯後類庫
├── build/ # 編譯 Makefile
├── docs/ # 文檔
├── jam/ # JAM 源碼
├── kvm/ # KVM 核心源碼
│ ├── VmCommon/ # 平台無關核心代碼
│ │ ├── h/ # 頭文件
│ │ └── src/ # 源文件
│ ├── VmExtra/ # 可選組件 (網絡協議、JAR 讀取、調試器、文件加載器等)
│ ├── VmUnix/ # Unix 平台相關
│ └── VmWin/ # Windows 平台相關
├── samples/ # 示例程序
└── tools/ # 輔助工具 (JavaCodeCompact, preverify, kdp, palm tool 等)
| 文件 | 功能 |
|---|---|
| StartJVM.c | VM 啟動、命令行解析 |
| bytecodes.c/h | Bytecode 定義、解釋器核心 (1.0.2 後從 interpret 分離) |
| cache.c/h | 內聯緩存,加速方法查找 |
| class.c/h | 運行時類數據結構、操作 |
| events.c/h | 事件處理系統 |
| execute.c/h | 解釋器執行宏、操作 |
| fields.c/h | 字段運行時結構、類加載時建表 |
| frame.c/h | 棧幀、異常處理 |
| garbage.c/h, collector.c | GC、內存管理 |
| global.c/h | 全局變量定義 |
| hashtable.c/h | VM 內部哈希表 |
| interpret.c/h | Bytecode 解釋器主循環 |
| loader.c/h | 類加載器 |
| log.c/h | 運行時診斷日誌 |
| long.c/h | 64-bit 運算宏 (彌補 C long 32-bit 不足) |
| main.c/h | 編譯選項、預置配置 |
| messages.c/h | 錯誤/警告信息 |
| native.c/h, nativeCore.c | Native 方法接口、核心庫 (不使用 JNI,開銷太大) |
| pool.c/h | 常量池管理 |
| profiling.c/h | 性能分析數據 |
| property.c/h | Java 系統屬性獲取 |
| rom.c/h | JavaCodeCompact (ROMizer) 所需宏 |
| runtime.c/h | 平台相關操作原型 (需平台實現 runtime_md.c) |
| stackmap.c | Stackmap 支持精確 GC |
| thread.c/h | 多線程支持、Java 線程管理 |
| verifier.c/h | 類文件驗證器 |
async.h)loaderFile.c)main.c)jar.c, inflate.c)commProtocol.c, socketProtocol.c, datagramProtocol.c)resource.c)debugger*.c)fakeStaticMemory.c,用於克服 Palm 內存限制)nativeSpotlet.c/h)kvm/ 下創建平台目錄 (如 VmWinCE/),放置 src/、h/、build/。runtime.h 聲明的所有平台相關函數 (在 runtime_md.c 中)。VmExtra 組件 (如無文件系統則不含 loaderFile)。main.h 編譯選項 (如 USE_STATIC_MEMORY、浮點支持、GC 策略)。samples/ 驗證。原書 100+ 頁,本筆記提煉核心結構與移植關鍵路徑。完整翻譯版可參考社區共享資源。