# June 2026 Update | Market Data

> Market Data ships v1.0.0 of the Java and Kotlin SDK: one dependency, idiomatic in both languages, with typed errors and automatic retries.

Source: https://www.marketdata.app/changelog/june-2026-update/

---

(image: The Market Data June Update banner: an isometric illustration of a monitor filled with pie and donut charts, with data cards beside it, beside the words JUNE UPDATE)

-   [Changelog](/changelog/)

# June 2026 Update

Market Data ships v1.0.0 of the Java and Kotlin SDK: one dependency, idiomatic in both languages, with typed errors and automatic retries.

-   Last updated July 1, 2026

## JAVA & KOTLIN SDK RELEASED

Market Data is now on the JVM. Today we’re shipping v1.0.0 of the [Market Data Java & Kotlin SDK](/docs/sdk/java/), and it’s not a Java library with Kotlin bolted on. It’s **one dependency that’s genuinely idiomatic in both languages**: no separate Kotlin module, no `kotlin-stdlib` on your classpath, no boilerplate.

Here’s your first quote, the same SDK in your choice of language — see the [Java & Kotlin quickstart](/docs/sdk/java/) for the copy-paste version in both languages.

## What you’ll notice first

Stocks, options, mutual funds, and live market status. One dependency, built for production from day one. The parts we’re proudest of are the ones that quietly keep you out of trouble:

-   **The compiler catches mistakes the API used to.** The options chain has parameters that look combinable but conflict server-side. We model them as sealed types, so picking two by accident is a **build error**, not a silent, wrong result you discover in production.
-   **Your data never turns into silent zeros.** The decoder is strict: if the API drops a field you asked for, you get a clear `ParseError`, not a `0` that quietly flows into your P&L. Fields that are legitimately empty come back as honest nulls.
-   **One SDK, idiomatic in two languages.** Every public type is null-annotated, so Kotlin sees real nullable / non-null types and property syntax. No Kotlin artifact, no coroutines dependency, no platform-type surprises.
-   **Sync and async on every endpoint.** Each call has a blocking form and a `CompletableFuture` form (bridge it to a Kotlin coroutine with `await()`), sharing one async-first path for validation, retries, and rate limiting.
-   **It handles the heavy requests for you.** Ask for years of intraday candles and the SDK auto-splits the range into year-sized slices, fetches them concurrently, and merges them back into one series. Multi-symbol calls are dispatched the optimal way for each endpoint.
-   **Reliability you don’t have to wire up.** Automatic retries with exponential backoff, `Retry-After` honored, a status check before retrying so it won’t hammer a service that’s already down, and rate-limit tracking at both the client and per-response level.
-   **Built for the support ticket you hope you never file.** Every error extends a sealed `MarketDataException` carrying the request ID, URL, status, and timestamp, plus a `getSupportInfo()` that formats it all, ready to paste.

Zero-config to first call: drop in `MARKETDATA_TOKEN` and go. Output as typed objects, JSON or CSV, trimmed to just the columns you need. Runs on JDK 17, 21, and 25, and it’s on [Maven Central](https://central.sonatype.com/artifact/app.marketdata/marketdata-sdk-java) today as `app.marketdata:marketdata-sdk-java`.

## Also This Month

We’re adding server capacity in a second datacenter and preparing our platform to run across both, removing our remaining single point of failure.

-   In June, our primary datacenter’s network transit provider was hit by a DDoS attack. The second location is our answer: once we’re running across both, a network outage at one site won’t take down the API.
-   This work is in progress now and is expected to come online at some point in July. We’ll let you know when it’s live.
