This way you can re-use your Java expertise and still get a statically linked single binary with quick startup.
https://docs.oracle.com/en/java/javase/11/docs/api/java.net....
Goreleaser for creating binaries, home brew, os packages, GitHub releases.
similarly, for java you place the burden on your users to install a jre
with go the standard build toolchain lets you easily cross-compile a bunch of statically linked binaries, so each user just downloads 1 file for their target platform and runs it.
personally i am much more productive writing code in python than in go (this is largely a consequence of spending 20x as much time writing python than go) but go is dramatically more ergonomic from a deployment perspective and has a great cross-platform library and cross-compiler support out of the box
I should mention that I am more productive in Python than either Java or Go - so this may taint my view of alternatives.
Maintaining things is just much simpler with a single binary.
Or you can skip all of that and just use Go that runs as a single, stand alone binary and very likely uses less memory than Java.
It's because the actual AWS CLI/Azure CLI is written in Python and they have the most supported interface so far known.
I personally like Go because it's easier to ship a static binary but in this case I would recommend otherwise.
Give go an honest try. I am sure it will not disappoint you.