Norm 0.18
Norm 0.18 建立 NAR Module 与 Java Binding 生态,并以 Norm ORM 和纯 Norm Micronaut BBS 验证 Java 框架能够成为普通、类型化且可替换的 Norm Module 实现。
NAR 与 Java Binding
.nar是所有 Norm Module 的统一发布制品;module.norm是依赖、Java 根制品、公开适配面和发布身份的唯一声明;- 一个 Module 最多绑定一个根 JAR,其 Maven 传递依赖由工具链解析,消费方只依赖普通 Norm Module;
- Java class、interface、enum、泛型、集合、数组、回调、异步、异常、资源和 Annotation 映射为公开 Norm 声明,未支持的选定成员产生确定报告;
- Apache Commons Lang、Commons IO、jsoup、Joda-Time、fastutil、org.json、Caffeine、Guava、OkHttp 和 Eclipse Collections 提供可发布适配模块。
完整模型与当前边界见 Java Library Adapter 和模块系统。
Norm ORM 与 Micronaut
- Norm ORM 提供实体、字段引用查询、Repository、关系和事务;Hibernate 是可替换的 Provider,并通过真实 Jakarta Persistence Annotation 接入;
- Java Annotation 在 JVM 应用边界恢复为真实 Annotation,官方 JSR 269 Processor 自动处理纯 Norm 应用源码;
application.norm使用具有默认值和 nullable 可选项的强类型配置,并以统一application().run()生命周期自动启动和关闭服务;- Micronaut 平台模块组合 HTTP、DI、Serde、Validation、Security、Data、Hibernate 与运行时依赖,应用不再逐项声明框架内部模块;
- Micronaut BBS 使用真实 Netty、Hikari、H2、Controller、构造器 DI、Filter、Security、事务和持久化完成端到端验收。
编辑器与工具链
Language Server 按 module.norm 加载与 CLI 相同的模块图,并为 NAR 内生成源码提供只读跳转。编辑分析与运行链接分层:分析直接读取 NAR 中已发布的 Norm API,运行、测试和打包继续解析并验证完整 Java 图。不可变归档缓存、稳定模块快照、文件 URI 规范化和串行项目变更共同消除重复解析与并发状态分叉。
VS Code 的诊断、补全、悬停、导航和重命名共享同一编译快照;跨 Module 导航可以直接打开适配源码,不要求 Java 源码或本地 JAR。
迁移与边界
Module 发布产物从 .jar 改为 .nar。应用入口改为与 module.norm 同目录的 application.norm;入口对象必须提供 Void run(),应用自身无需通过 exports 公开。Java Binding、ORM 与 Micronaut 的可运行入口分别见 Commons Lang 示例、Norm ORM 示例和 Micronaut BBS。