Skip to main content

Relationship to the Java Client

The upstream Java client is the behavioral reference for this Go SDK.

That means when a Fluss feature already exists in Java, this repo aims to:

  • match protocol and runtime semantics first
  • adapt the public API into idiomatic Go second

What “Inspired by Java” Means Here​

This Go SDK is not intended to be a literal port.

It intentionally prefers:

  • context.Context on networked operations
  • explicit constructors such as client.Dial(...)
  • lightweight helper clients over large builder-heavy object graphs
  • public Go-native types instead of exposing generated protocol structs

Why Keep Java as the Reference​

The Java client is the original and most mature Fluss SDK. It provides the best reference point for:

  • protocol behavior
  • routing semantics
  • writer and scanner intent
  • snapshot, lookup, and lakehouse workflows

The Go repo uses that client to avoid inventing different Fluss semantics while still making the day-to-day API feel like Go.