OkHttp 4 Goes Kotlin

Today’s release changes everything and nothing.

Everything?

OkHttp is an HTTP client for Java and Android. Until today the library itself was all Java. With version 4 we’ve switched to Kotlin, replacing 25K lines of .java with equivalent .kt.

Nothing.

We haven’t changed the package name (still okhttp3, welp), the APIs, or the performance. We haven’t added features or even fixed any bugs! We’ll get back to that in 4.1.

The new release is binary and Java-source compatible. Swap in our new .jar and your program will work the same as it always has. It retains the same minimum requirements of Android 5+ and Java 8+. We enforce binary compatibility using japicmp and left our test suite unchanged to detect unexpected differences.

The biggest impact you’ll see is a new dependency on the Kotlin standard library. It adds about 1.2 MiB, or much less with ProGuard or R8.

Kotlin!

Kotlin’s great. It’s expressive, concise, efficient, and stable. It interops nicely with Java. Plus it gives us great options to grow.

If you’re already using OkHttp with Kotlin, this upgrade breaks source compatibility. We’ve changed Kotlin-facing APIs to use Kotlin idioms. Our upgrade guide shows how to do a fast and safe migration.

Get it

Use these new Gradle coordinates:

implementation("com.squareup.okhttp3:okhttp:4.0.0")

Please read the upgrade guide, especially if you’re using ProGuard or Mockito. If you’re using other libraries in the com.squareup.okhttp3 group, they all need the same version. This includes MockWebServer, which is included in our Kotlin upgrade.

I enjoy building stuff with Kotlin and found this upgrade particularly satisfying. Try it out and see if you agree!