Skip to main content

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.