Files
airflow/java-sdk/sdk/module.md
T
Jason(Zhe-You) Liu b304b4522e Add Java SDK capability manifest and compatibility matrix (#71151)
* Add Java SDK capability manifest and compatibility matrix

The Language SDK conformance spec defines which TaskInstance states and
capabilities a Language SDK may declare, but nothing lets an SDK say what it
actually supports. Readers of the Java SDK docs cannot tell which parts of the
spec the runtime implements today — and the gaps are real and moving (native Dag
authoring, deferral, and the state stores are not there yet), so an unqualified
"see the conformance spec" overstates what a Java task can do.

The manifest is hand-authored YAML rather than something derived from the SDK's
own sources: it describes the SDK instead of being part of it, so it has no
business shipping in a user's runtime dependencies, and deriving it would mean a
JDK and a Gradle run in a hook that only ever renders a table. It therefore sits
above every subproject in settings.gradle.kts, where no source set can pick it
up. Validation carries the weight a compiler would have: unknown keys are
rejected along with missing ones, since it is the only thing standing between a
typo and a wrong published table.

A prek hook regenerates the contributor-facing README table and the Dokka module
doc from the manifest, so a capability landing in the runtime is a one-line edit
rather than three tables to update by hand. The shared schema, SDK registry, and
renderer let the Go and TypeScript SDKs declare theirs the same way.

* Keep Language SDK compatibility matrices accurate

Contradictory native-Dag declarations could pass validation while being rendered as not applicable. Published matrix tables also need to remain readable without forcing unrelated headers onto one line.
2026-08-20 15:10:20 +08:00

3.8 KiB
Raw Blame History

Module sdk

The Apache Airflow Java SDK — author and run Airflow task implementations in JVM languages.

Language SDK compatibility matrix

Which Airflow TaskInstance states and capabilities the Java SDK currently supports. The normative meaning of each dimension is defined in the Language SDK conformance specification.

Min. Airflow version: 3.3 · supervisor schema: 2026-06-16

Dimension Tier Supported Since Notes
TaskInstance states
state: success MUST ✓ 3.3
state: failed MUST ✓ 3.3
state: up_for_retry MUST ✓ 3.3 RetryTask
state: skipped SHOULD ✗ – runtime does not emit TaskState skipped yet
state: deferred MAY ✗ – runtime does not emit DeferTask yet
state: up_for_reschedule MAY ✗ – runtime does not emit RescheduleTask yet
state: awaiting_input MAY ✗ – runtime does not emit AwaitInputTask yet
state: removed MAY ✓ 3.3
Runtime capabilities
capability: mixed-lang-stub-target MUST ✓ 3.3 @task.stub
capability: task-logging MUST ✓ 3.3 SLF4J + JPL bridged to the task log
capability: xcom-read-write MUST ✓ 3.3
capability: connection-read MUST ✓ 3.3
capability: variable-read-write MUST ✗ – getVariable only; no write over the comm socket yet
capability: self-contained-bundle MUST ✓ 3.3 Airflow metadata embedded in the jar artifact
capability: retry-policy MAY ✗ – no task-facing retry-policy API yet
capability: task-state-store MAY ✗ – no task-facing state-store API yet
capability: asset-state-store MAY ✗ – no task-facing state-store API yet
capability: asset-event-emit MAY ✗ – runtime does not emit asset events yet
capability: asset-event-read MAY ✗ – no task-facing asset-event API yet
Native-Dag authoring
capability: native-dag-authoring SHOULD ✗ – native Dag authoring not implemented yet
capability: task-args MUST † n/a –
capability: dag-params MUST † n/a –
capability: taskflow-dependencies MUST † n/a –
capability: branching SHOULD † n/a –
capability: dag-test SHOULD † n/a –
capability: task-group MAY † n/a –
capability: dynamic-task-mapping MAY † n/a –
capability: asset-inlets-outlets MAY † n/a –
capability: asset-scheduling MAY † n/a –
capability: object-store MAY † n/a –

Marks: ✓ supported · ✗ not supported · n/a not applicable. A tier marked † applies only when native-dag-authoring is supported.