The goal for the company was to enable an estimated 1 million of Go programmers to use RavenDB database.
This is Java AND Go (and Python and Node) scenario, not Java OR Go.
Static typing?
Simplified toolchain without make/maven files?
My big one after swearing off of Java was never needing an IDE to do even the simplest things - is Kotlin useable without an IDE?
Not only not an advantage, but kotlin does have that so I don't understand what you were going for here.
Kotlin native is coming along, uber jars are popular so only other departments is the JRE, Docker can bundle that
> Static typing?
Yes with good type inference and "null safety"
> Simplified toolchain without make/maven files?
You can use the compiler directly? But for anything serious a build tool is pretty essential for any language? At least you have options
> My big one after swearing off of Java was never needing an IDE to do even the simplest things - is Kotlin useable without an IDE?
You could write it with a Morse Code Keyer if you really wanted
Yes. The JVM is Java's biggest downside, so why would you want to just move to a different language on the same overly complex (to put it mildly) runtime.
Yes, you do, it's called abstraction.
For example, C compiler adds complexity when compared with assembler, but that lets you significantly simplify your code.
And without abstraction, modern software development would not be possible.
Of course too much abstraction can be a problem (which is why some people still program in assembly), but that does not mean JVM will always be the wrong solution.
I have a rudimentary understanding of the Linux and BSD kernels and how they can impact certain parts of my applications. But I have zero knowledge of Windows. But I don't need to, because the JVM engineers do, and things Just Work (TM).
I'm not smart enough to learn the intricacies of every platform, and thankfully I don't need to be.
I guess you have similar issues with POSIX and the abstractions offered by high level programming languages? I assume you write some CPU specific assembly and understand all the possible failure modes of that hardware?
Kotlin can just use the Java client directly.