Why I prefer Kotlin

Graham Cox on January 02, 2017

I've been an enterprise Java developer for a little over 10 years, and I've been using Java for just over 16 years - back when Java 1.3 was the l... [Read Full]

Enjoyed your article. Could you share some code examples were kotlin has helped you?

Data Classes are the biggest, most obvious candidate. You can write a Java Bean - with Fields, Getters, Setters, Constructor, Equals, Hashcode, ToString and some extra convenience methods - in a single line of code.

Other than that, pattern matching is a huge win for me, and blocks as expressions. Type Inference is useful but it's not the killer feature that some people make it out to be - IntelliJ does most of that typing for me anyway.

I might end up spending some articles in my "100 Days of Writing about Code" covering these in more depth when I run out of things to say :)

Have you tried Lombok with Java? Since we started using it, my team loves it. @Data is what you want.
The only thing I'm missing from Erlang is Pattern matching, but at method signature level. I think also Kotlin can't do it, right?

I used to use and like Lombok, but less so now. It looks and reads like real Java but does things behind the scenes, which isn't obvious if you don't know about it. Using a different language is much more obvious what's happening, even if it's much bigger.

Data classes are also only scratching the surface of the extra features - better lambdas, destructing, coroutines, etc. Even just template strings can be a huge boost if you're writing things like DAOs with complex queries in then.

Seconded. I've not been a huge fan of Java but I'd never even heard of Kotlin. Would love to see some examples from someone evangelising it :)

How does Kotlin compare to something like Groovy? Seems to be the same kind of thing?

Better in some ways, worse in others.

My understanding of Groovy is that it's closer to a scripting language, which can make it very good for certain tasks. However, from experience it can be more difficult to get Interop between Groovy and Java code - especially in the direction of Java code calling Groovy code. Kotlin emphasis on Interop is quite a big deal, and they do a lot to make calling either direction as painless as possible.

Thanks for the article--I wasn't aware of Kotlin, and have avoided Java for many of the reasons you like Kotlin for, so now there's something for me to try :)

code of conduct - report abuse