I’ve been dabbling with Kotlin in my personal projects for ~4 years and had advocated for it at Java shops I’ve worked at with mixed success.
On my current team we’ve started writing unit tests in Kotlin, but when converting production code to Java classes my coworker who uses VS code ran into issues:
- Many IDEs understand Java and understand Kotlin
- Kotlin code can call Java and vice versa
- But the only IDE that understands Java/Kotlin interop (within a package) is IntelliJ
What this means is, unless your codebase is 100% Kotlin, you are essentially restricted to IntelliJ, or you have to put up with your IDE assuring you that your code won’t compile with all sorts of warnings and errors.
On one hand, I’m a big fan of IntelliJ and have used it for years. On the other, not everyone else is, but more importantly, is it sensible to tie the long-term success of your codebase onto an IDE?
If you write code that you hope to last 10 years or so, I’m sure that with Go or Java or C# you’ll be able to use whatever modern IDEs will exist in 10 years fine. And there’s a good chance in 10 years IntelliJ will still be the best JVM IDE. But I’m not certain of that. If you think about to the tools you were using 10 years ago, would you be happy if you were still stuck using them today?
(I will note that there is some work done to get Kotlin/Java interop working in VS Code. But it seems to be more of an experiment than a practical solution.)
Overall the question I’m considering is: does betting on Kotlin risk tying the longevity of my codebase to the success of an IDE?