# Parking Simulator JDK 25 + JavaFX 25 + AtlantaFX 写的本地停车模拟工具 GUI。 - 纯本地、单进程、无外部服务 - 暗色玻璃风界面(在 AtlantaFX `PrimerDark` 之上叠加自定义 CSS) - 跨平台打包:`jlink` + `jpackage`,最终产物**自带运行时**,用户无需安装 JDK - 单进程内存目标:默认 `-Xmx256m -XX:+UseSerialGC`,启动后 RSS ≈ 150 MB 左右 ## 环境 - JDK **25**(要包含 `jlink` 和 `jpackage`) - Maven **3.9+** - 打包到 Windows 必须在 **Windows 机器**上执行(`jpackage` 不支持交叉打包) - 打包到 macOS 必须在 **macOS 机器**上执行(同上) ## 开发期一键运行 ```bash mvn javafx:run ``` ## 打包 ### macOS(在 macOS 上执行) ```bash ./scripts/build-mac.sh ``` 产物:`dist/mac/ParkingSimulator.app`(双击运行,免装 JDK)。 如需 `.dmg` 镜像,取消 `scripts/build-mac.sh` 末尾的注释块。 ### Windows(在 Windows 上执行) ```bat scripts\build-windows.bat ``` 产物:`dist\win\ParkingSimulator\ParkingSimulator.exe`(整个文件夹拷贝到任意 Windows 机器上双击运行,免装 JDK)。 如需 `.msi` 安装包,先安装 WiX 3.x,然后取消 `scripts\build-windows.bat` 末尾的注释块。 ## 体积说明 - `jlink` 只把真正用到的 JDK 模块裁进运行时 - `--strip-debug --no-header-files --no-man-pages --strip-native-commands --compress=zip-9` 进一步瘦身 - 典型产物(含自带 JDK 运行时 + JavaFX): - macOS `.app`:约 **70 ~ 95 MB** - Windows app-image:约 **70 ~ 95 MB** ## 目录结构 ``` src/main/java/com/fujica/parkingtool/ App.java 入口 ui/MainView.java 主界面 ui/PlatePreview.java 车牌预览组件 ui/PlateColor.java 车牌配色枚举 ui/ConsoleView.java 控制台输出区域 src/main/resources/com/fujica/parkingtool/ styles/app.css 自定义 CSS scripts/ 打包脚本 dist/ 打包产物 ``` ## 后续接入业务 `MainView` 中的按钮回调目前只写日志到控制台占位,业务接入只需替换 `setOnAction` 中的内容,比如: - `随机来一个` → 调用真实随机生成器并通过 MQTT/HTTP 发送 - `模拟触发` → 拼装上行 JSON 并发到对应 topic - 心跳 `停止`/启动 → 控制后台心跳线程 `ConsoleView#log` 是线程安全的,可以从任意线程调用。