I think for infrastructure tooling, the single binary output is probably a really big thing over Java (and C#), which have a separate, huge runtime that switching versions on a system is problematic for.
5 comments
From a practical perspective, building your java app into a single fat jar isn't much different. Yeah, you need java installed... big deal.
Installing Java is a pretty big deal... multiple versions, bigger deal... Also, the runtime is relatively huge. I don't think you'd want to do CoreOS/etcd/Kubernetes tooling in Java.
I disagree, based on my own experience having worked with Java off and on since 1996. It was a big deal then. Today, not so much.
Multiple versions? The JVM is generally backwards compatible. It's pretty rare where an "old version" it is actually required. Plus. Java 8 has been out for over 2.5 years, which is practically an eternity in development time. In the event you do actually need multiple versions, setting JAVA_HOME and maybe your PATH is hardly rocket science.
Multiple versions? The JVM is generally backwards compatible. It's pretty rare where an "old version" it is actually required. Plus. Java 8 has been out for over 2.5 years, which is practically an eternity in development time. In the event you do actually need multiple versions, setting JAVA_HOME and maybe your PATH is hardly rocket science.
You don't have to worry about Java_home or the clr being installed at all... also, you can build it and deploy it wherever... with Java/.Net built with newer tooling, then install it on a server that wasn't updated? That isn't a problem with go...
There's a HUGE class of problems that you simply don't have by using go...
Don't get me wrong... I really like C# (not a fan of Java), but I wouldn't consider using it for a lot of the places where Go or Rust are used very well. Frankly, I'd just assume use node for any higher level stuff, Go for anything node isn't a good enough fit for, and Rust for anything system (Ie os/hardware) related.
There's a HUGE class of problems that you simply don't have by using go...
Don't get me wrong... I really like C# (not a fan of Java), but I wouldn't consider using it for a lot of the places where Go or Rust are used very well. Frankly, I'd just assume use node for any higher level stuff, Go for anything node isn't a good enough fit for, and Rust for anything system (Ie os/hardware) related.
In case anyone who is not a Java dev wonders, "what is a fat jar"?
A fat jar is a single runnable binary. It makes deploying Java super simple and is roughly equivalent to Go's single binary.
A fat jar is a single runnable binary. It makes deploying Java super simple and is roughly equivalent to Go's single binary.