While I’m obviously becoming quite enamored with Kotlin recently, this is like the early dating stage for me. Everything is great when you first start dating someone but it’s after you’ve been with them for awhile and see their warts, which everything and everyone has, that you finally decide whether it’s the right fit or not.
While I’m very excited about being able to do a modern language in the JVM ecosystem to have my cake and eat it too I’m still not on the bandwagon fully yet in terms of recommending it for everyone. My homework for this is still underway, or actually in its infancy even. A quick list of the things I still need to weigh are:
- How well is it supported in the various IDEs and on the various platforms? I’ve been doing this in IntelliJ, the base platform from the original vendor that wrote it, but what about Eclipse, or Netbeans, or VSCode? Is it feasible much less reasonable to use this language for real in these environments as say compared to Java or .NET Core?
- How well does this perform compared to other languages? I’ve started exploring the whole benchmarking thing already but there is still a long way to go. I still have many areas I want to explore in terms of not only the raw performance of the base language compared to Java, .NET, and other languages but even questions like: How does their streaming capabilities compare to Java Streams, .NET LINQ, etc; how well does this work with numerically intensive applications since primitive types have to be boxed; etc…
- What is the tooling like for doing code coverage, code instrumentation, etc?
- How good is the documentation, tutorials, examples, etc. for new users and for weird corner cases with the language?
- How well can it be used in integrating with Java libraries like JavaFX, Spring, and other necessary components for building applications. My initial interactions are very positive but I need to do more real world use cases rather than rely on the smaller experiments I’ve already tried.
It’s like many things in life, I’m getting to the point of being committed in this Kotlin direction for projects that solely impact me. However if I’m going to recommend it for others or for larger scale things I need to have my ducks in a row and to have really been through the ringer with it to say whether it is the real deal or if I’m just in the honeymoon phase with a new tool.