Norm 0.18
Norm 0.18 establishes the NAR module and Java Binding ecosystem. Norm ORM and a pure-Norm Micronaut BBS verify that a Java framework can be exposed as an ordinary, typed, and replaceable Norm module implementation.
NAR and Java Binding
.naris the uniform artifact for every Norm module.module.normis the sole declaration of dependencies, the Java root artifact, public binding surface, and publication identity.- A module binds at most one root JAR. The toolchain resolves its Maven transitives while consumers depend only on an ordinary Norm module.
- Java classes, interfaces, enums, generics, collections, arrays, callbacks, async values, exceptions, resources, and annotations become public Norm declarations. Every selected unsupported member receives a deterministic report.
- Publishable adapters cover Apache Commons Lang, Commons IO, jsoup, Joda-Time, fastutil, org.json, Caffeine, Guava, OkHttp, and Eclipse Collections.
The Java Library Adapter design and module-system specification define the model and current boundary.
Norm ORM and Micronaut
- Norm ORM provides entities, field-reference queries, repositories, relations, and transactions. Hibernate is a replaceable provider connected through real Jakarta Persistence annotations.
- Java annotations are materialized at the JVM application boundary, and official JSR 269 processors automatically process pure Norm application sources.
application.normuses strongly typed configuration with defaults and nullable options, and a uniformapplication().run()lifecycle starts and closes the service automatically.- The Micronaut platform module composes HTTP, DI, Serde, Validation, Security, Data, Hibernate, and runtime dependencies so applications do not enumerate framework internals.
- The Micronaut BBS provides end-to-end acceptance with real Netty, Hikari, H2, controllers, constructor DI, filters, security, transactions, and persistence.
Editor and toolchain
The language server follows module.norm to load the same module graph as the CLI and provides read-only navigation into generated sources stored in NARs. Editing analysis and runtime linking are separate: analysis reads published Norm APIs directly from NARs, while running, testing, and packaging continue to resolve and verify the complete Java graph. Immutable archive caching, stable module snapshots, canonical file URIs, and serialized project mutations remove repeated resolution and concurrent state forks.
VS Code diagnostics, completion, hover, navigation, and rename share the same compilation snapshot. Cross-module navigation opens adapter sources directly without requiring Java sources or a local JAR.
Migration and boundary
Module publication artifacts change from .jar to .nar. An application entry is now application.norm beside module.norm; its object must provide Void run(), and the application does not need to expose itself through exports. Runnable entry points are the Commons Lang example, Norm ORM example, and Micronaut BBS.