Skip to content

Tentackle Modules

Tentackle Modules

Tentackle is a modular Maven reactor. Every module falls into one of three kinds:

  1. runtime — modules an application ships with;
  2. build-time — Maven plugins and code-generation support;
  3. common — shared by both build- and runtime.

Named modules and automatic modules

Twenty-three artifacts — every module an application ships with, plus tentackle-model — are real JPMS modules with an explicit module-info.java: tentackle-common, -core, -sql, -model, -session, -database, -jta, -pdo, -persistence, -domain, -i18n, -quic, -quiche, -keyring, -update, -web, -fx, -fx-rdc, -fx-atlanta, -fx-rdc-update, -log-slf4j, -log-log4j2v and -script-jsr.

The remaining artifacts declare an Automatic-Module-Name in their JAR manifest instead. Those are the build-time modules (the Maven plugins, tentackle-maven-support, tentackle-build-support, the wurblets), the test-support modules (tentackle-test-pdo, tentackle-test-fx-rdc; the pure test-scope tentackle-pdo-mock declares none, as it is only ever used on the test class path) and the three providers whose third-party backends are themselves not modularized (tentackle-script-groovy, tentackle-script-ruby, tentackle-fx-rdc-poi). They carry a stable module name, so a modular application can requires them, but no compile-time module descriptor. tentackle-bom and tentackle-project-archetype ship no code at all.

This is not a limitation of the programming model: the Service API resolves implementations from META-INF data written at build time, so Tentackle applications run on the module path, the class path, or a mix of both — and the jlink/jpackage plugin derives the right packaging category for each artifact by itself. An application that needs two, otherwise conflicting versions of the same dependency at once can additionally declare isolated ModuleLayers via that same plugin.

All artifacts are on Maven Central. A BOM, a project archetype and the test-support modules (tentackle-pdo-mock, tentackle-test-pdo, tentackle-test-fx-rdc) round out the set but are omitted from the diagram.

Tentackle Modules

The interface / implementation split

The defining structural idea: API modules declare interfaces, separate runtime modules implement them, and the Service API injects the implementation at runtime — so the API stays agnostic of its backend.

Interfaces (API) Implemented by
tentackle-session tentackle-database
tentackle-pdo tentackle-persistence (persistence) + tentackle-domain (domain)

Runtime modules

Layer Module Role
Common tentackle-common Build- and runtime foundation: @Analyze and other annotations, datatypes, bundle and JPMS support, the service API.
Common tentackle-sql Low-level, backend-agnostic database abstraction.
Core tentackle-core Runtime foundation: binding, validation, reflection/proxies/interceptors, tasks/daemon, preferences, plus the logging and scripting APIs.
Core tentackle-i18n Database-persisted I18N bundle support.
Database tentackle-session · tentackle-database Session handling (interfaces + implementation).
Database tentackle-jta Optional: global (JTA/XA) transactions across databases and other XA resources.
Application tentackle-pdo Persistent Domain Object interfaces: entities, aggregates, components, operations, security, number sources.
Application tentackle-persistence · tentackle-domain The persistence- and domain-side PDO implementations, injected at runtime.
Application tentackle-update Auto-update for jlink-based clients.
UI tentackle-fx JavaFX components, containers, annotations, factories and binding.
UI tentackle-fx-rdc Rich Desktop Client framework (tables, trees, forms) over PDOs and operations.
UI tentackle-fx-rdc-poi · tentackle-fx-rdc-update Pluggable Apache POI export and the client UI for tentackle-update.

Pluggable providers (selected via the SPI): logging — tentackle-log-slf4j, tentackle-log-log4j2v; scripting — tentackle-script-groovy, tentackle-script-ruby, tentackle-script-jsr (JSR-223 / GraalVM).

Build-time modules

Module Role
tentackle-maven-plugin Main plugin: scans for @Analyze-annotated types and drives the AnalyzeHandlers that feed the ServiceFinders.
tentackle-sql-maven-plugin Generates DDL and database-migration SQL from the model.
tentackle-check-maven-plugin Checks resource bundles and validation annotations.
tentackle-i18n-maven-plugin Syncs database-persisted I18N bundles with project resource bundles.
tentackle-jlink-maven-plugin Builds self-contained images via jlink / jpackage.
tentackle-wizard-maven-plugin Interactive wizard scaffolding PDO and operation sources.
tentackle-mcp-maven-plugin Serves the model to coding agents over MCP, exactly as the code generators see it.
tentackle-build-support · tentackle-maven-support Build helpers (Maven-independent and Maven-specific) used by the plugins.
tentackle-model The model API describing entities and relationships; consumed by the wurblets, the PDO wizard and the SQL plugin.
tentackle-wurblets · tentackle-persistence-wurblets Wurblets generating the PDO/operation interfaces and DTOs, and their persistence implementations.

Further modules with documentation

Not part of the layered diagram, but each ships its own docs:

Full per-module API documentation is published under the Tentackle site docs.