Series · 9 parts · ~51 min total
Go for JVM Engineers
How Go's structural typing, value semantics, and absence of class hierarchies force a productive rethink for JVM engineers.
- 1
The Mental Model Shift
How Go's structural typing, value semantics, and absence of class hierarchies force a productive rethink for JVM engineers.
6 min
Nov 15, 2025
- 2
Errors as Values
How Go's explicit error returns replace exception hierarchies, and why errors.Is, errors.As, and wrapping make it more powerful than it looks.
5 min
Nov 22, 2025
- 3
Concurrency: Goroutines and Channels
How Go's CSP-based concurrency model compares to JVM threads, why channels beat shared-state synchronisation, and how context cancellation keeps goroutines tidy.
5 min
Nov 29, 2025
- 4
Memory and GC Differences
How Go's garbage collector and escape analysis differ from the JVM's generational GC, and what that means for latency-sensitive services.
6 min
Dec 6, 2025
- 5
Modules and Tooling
How Go modules, workspaces, and the standard toolchain map to Maven and Gradle workflows — and where Go's single-binary build model changes everything.
5 min
Dec 13, 2025
- 6
Web Servers from net/http
How to build production-grade HTTP services using Go's standard library, map Spring MVC patterns to http.ServeMux and middleware, and know when to reach for a router.
5 min
Dec 20, 2025
- 7
Testing the Go Way
How Go's testing package, table-driven tests, and testable examples replace JUnit's annotation model — and why Go tests are simpler than they look.
6 min
Dec 27, 2025
- 8
Profiling
How to use pprof, execution traces, and flamegraphs to find performance bottlenecks in Go services — and how these compare to JFR and async-profiler.
6 min
Jan 3, 2026
- 9
When Go Is Wrong
Honest assessment of where Go's design falls short for JVM engineers: domain modelling gaps, generics limitations, and ecosystem holes you should know before committing.
7 min
Jan 10, 2026