Comment by fpoling

2 days ago

Go jobs are not that popular either especially outside US. Java is way more popular and with recent improvements on JDK Go does not offer that match advantages over it.

And compared with Go Java is fully memory-safe and have independent implementations.

Then you've not tried to do any cloud-native development. Go in cloud is like Python in AI

  • I have, and Go over here is only relevant as the language Docker and Kubernetes are written on.

    Everything we do is written in JVM or CLR languages, JS/TS, and the occasional C++ for native libraries.

    • You must be joking. Over 75% of software on CNCF is written in Go; these include tools ranging from CI/CD to metrics and monitoring. It may not be popular to write your enterprise applications but it is certainly very popular in cloud infrastructure

      1 reply →

I like modern Java and agree it's a much better language than Go and an excellent platform in general. But Java will not beat Go where small and fast native executables are required. The native story for Java will remain a sad one, builds being hyper slow (aot) or resulting in huge binaries (jlink).

  • Beyond a certain project size, GraalVM compiles to the same binary size as Go. Many k8s projects produce binary sizes of >100MB. I think this is because LOC in Go scales poorly.

    Go's real edge over Java is in memory consumption, not in performance or binary size. Yet, this is also mostly true at the small-scale level. The edge again disappears for large projects needing large heaps.

  • If one needs a small and fast executable, then Rust should be used, not Go. I know a company that wished they would use Rust, not Go, for their services as poor Go performance and GC spikes made it a big headache.

  • Small and fast native executables sounds more like a niche than a real market. Don't get me wrong: really nice to have, but a raison d'etre?

  • You mean like those 300MB that need to be compressed with upx for distribution, like some Go projects?