A few days ago, I ran a poll on Mastodon, asking people to choose a JVM language they’d use for a greenfield server-side project.
JVM being an acronym for the Java Virtual Machine, I was expecting to see it take the top spot. More so, because the language has been on fire over the last few years, adding new releases and features like never before in its history. About a week ago, Java 20 was officially released, and it comes with a plethora of feature updates I can’t wait to have a look at.
Rightfully, according to the majority of nearly 160 poll participants, Java took the first place but turned out to be not nearly as popular as I expected (45%). Second and third place were taken by Kotlin (30%) and Scala (20%). The remaining 5% went to other JVM languages (likely, Clojure, Groovy, etc.).
What is also interesting, though not surprising to me, is to see Kotlin taking second place before Scala. While many may know the language because of Android, Kotlin has been making steady moves towards adoption on the server side too. It has this friendly vibe of being the cool kid on the block that seems to have to have learned from many of the mistakes of early Java’s design but still keeps its close ties to Java, unlike Scala, which is its own universe. For the most part, it is backward-compatible with Java code and libraries. Both languages can co-exist perfectly in the same project (though I’d recommend sticking to one unless you migrate to Kotlin).
Java may be old, but it is making a hell of a stride toward becoming safer, more performant, and more modern. It’s a super safe bet if you don’t want to introduce too much innovation overhead to your team. Chances are, in 5-10 years, the language might resemble Kotlin in many respects.
For those of you who can’t wait long and are ready to try Kotlin today, I recommend doing so. All the well-known web frameworks like Spring Boot and Quarkus have first-class Kotlin support, so you should be able to dive immediately. I am personally very excited about where the language is going with its upcoming support for creating WebAssembly binaries.
Have something to say? Join the discussion below 👇
Want to explore instead? Fly with the time capsule 🛸
You may also find these interesting
Kotlin Basics: apply() and copy()
Kotlin brings a touch of succinctness in places, where even programmers new to Java, may find code unnecessarily over-bloated.
Epic Rap Battles of Programming: Java vs. Go
Two programming language giants appear on stage for a massive rap battle. Who will win?