Thanks Agri, I think somebody else pointed me to GraalVM so I have only looked at it briefly. I am not an expert on Java or .NET technology. So this is just an outsiders perspective.
It is like I am looking over the shoulder of Java collegues and wonder why they write XML documents all day 😄 Sorry, just joking.
No, on a more serious note my impression of GraalVM is really that it is an example of what I mentioned in my article about how Java and .NET will fight back.
You always see that with industry trends shifting that old established technologies will try to adapt the new things. It is like you have seen an embrace of functional programming led to Java adopting many functional constructs.
I have seen this from another side of the fence. I used to be an Objective-C developer and of course it struggled to keep up with Java which as a more modern language and hence you saw it adopt various Java ideas. There was actually a period where Objective-C had a garbage collector.
This never worked that great though. And that I would say is the problem with bolting on new things onto legacy technologies, it doesn't always work that great. I don't know enough about GraalVM to say whether it is a great solution or not. But based on how these things tend to evolve, my educated guess would be that it has some rough edges, and is somewhat complex.
This is the problem in general of keeping up with new trends. You can always add features, but it is very hard to remove them, hence complexit can grow to a point where it becomes difficult to manage.
I think that is often hard to see for an insider. If you got 15 years of Java experience e.g. then adding more feature does not add much mental load to you. But for somebody new to the field, catching up with say 15 years of feature additions, tools and libraries can be quite daunting.
Java as it stands today is quite unreckognizable to me as what I saw when it came out years ago. But at least it has not become as obscure as C++.
So yeah I don't think Java is going anywhere in a long time. But I imagine if I started a company and hired a bunch of junior developers, what technology stack would I pick?
I would imagine that running Docker plus Go for the server space would be way quicker to get people up to speed on that Java. Personally I could program Go stuff after realatively short time.
But my experience of using Java last time to do Android development was quite overwhelming: Ant, Maven, Groovy. It is not just that Java itself is much bigger than something like Go, but the tools are all way more complex. I never understood much about Maven. And if you do server development, you got to pick the right runtime, tweak the gargabe collector. There are just tons of stuff to learn.
E.g. the Go garbage collector has no settings to tweak as far as I know. Part of what I write about is usability and UX stuff. So that is certainly close to my heart. Thus I value simplicity. Java when it came out was very appealing in this sense.