Where Fiji is going
0.4.x — runtime + contract stabilization
0.4.x is the runtime-and-contract stabilization line. The
WIT contract, the artifact set, and the consumer surface are all
stable. New 0.4.x releases are bug fixes and forward-compatible
extensions; the contract itself is frozen against fiji:jvm@0.1.0.
This is the line that proves the engineering: a real JVM, packaged as a WebAssembly component, with a typed cross-language contract.
0.5.x — Java as a first-class component language
In 0.4.x Fiji is the runtime that runs a Java program inside a
component. In 0.5.x Java libraries themselves become consumable
WebAssembly components.
The intent: a Rust or Python developer should be able to consume a Java component without needing to know anything about Fiji internals. A Java library appears as a typed component on equal footing with one written in any other language.
The work to enable this is staged through the runtime, not bolted
on after — that staging is the reason 0.4.x exists as its own
line.
Beyond 0.5.x — workflow bridges + hardening
The trajectory continues into:
- Workflow bridges — treating Java's traditional library ecosystem (databases, message brokers, observability libraries) as bridges into the component world rather than dead-ends outside it. A Java workload that "wants JDBC" gets a JDBC driver that routes through a component-native database bridge.
- Operational hardening — make the boundary between "stay in the box → works" and "leave the box → runtime tells you clearly" airtight. Reduce the surface area of surprise without reducing the surface area of capability.
The categorical posture
Fiji is a platform for Java in the component world, not an experiment. The release line ships against a stable public contract; the public contract evolves on documented release cadences; the runtime and the contract are decoupled so the implementation can advance under a frozen surface.
The bet is that workflow portability — the same artifact, the same contract, in any host — is the unwon race in Java's multi-environment story, and that the component model is where that race gets won.
Source for everything above
The release manifest is the authoritative record of what's frozen
this release line:
RELEASE_MANIFEST.md.
The changelog is the chronological record of what changed:
CHANGELOG.md.