The summary.
THESE LANGUAGES SUIT LARGE, LONG-LIVED SYSTEMS
Static typing, automatic memory management, mature tooling, and predictability that large organisations value.
JAVA PERSISTS BECAUSE OF STABILITY, EXISTING SYSTEMS AND THE TALENT POOL
Modern versions added type inference, records, pattern matching and lightweight threads, addressing much of the ceremony criticism.
Garbage collection pauses are the commonest performance surprise — measure under load.
KOTLIN'S NULL SAFETY ELIMINATES THE COMMONEST RUNTIME ERROR IN JAVA
And it interoperates fully, so it can be introduced file by file rather than as a rewrite.
SCALA'S POWER COMES WITH STYLE VARIATION
Two Scala codebases can look like different languages. Agree which subset your team uses.
C# IS NO LONGER CONFINED TO WINDOWS
The platform is cross-platform and open source, which changes the hosting calculation entirely.
ALL OF THESE NEED A RUNTIME AND A PERSISTENT PROCESS
Shared hosting does not provide that. Weigh the hosting cost and available skills against simpler alternatives.