Java
Mature, everywhere, heavy to run. We migrate off it for weight, not taste.
Java runs half the enterprise world and that inertia is a genuine strength: the JVM is mature, the ecosystem is vast, and the hiring pool is deep. Modern Java (17+) with records, sealed classes, and pattern matching is a capable, well-supported platform, and a team running it is on solid ground.
We'd only move a client off Java when the JVM's weight stops paying for itself — millisecond-sensitive startup, tight memory budgets, or a small team carrying heavyweight build tooling for a service that doesn't need it. The replacement we propose is TypeScript on Bun, or Rust where raw throughput is the constraint: the same capabilities with faster startup, lower memory, and one language across the stack. For an established Java codebase delivering value, the right call is usually to keep and maintain it.