DEV Community

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 lat...
Collapse
 
jgoodman751 profile image
jgoodman75

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

Collapse
 
grahamcox82 profile image
Graham Cox

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 :)

Collapse
 
stealthmusic profile image
Jan Wedel

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?

Thread Thread
 
grahamcox82 profile image
Graham Cox

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.

Collapse
 
askanison4 profile image
Aaron

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 :)

Collapse
 
thefern profile image
Fernando B 🚀

I've been meaning to learn Kotlin might integrate some classes with my current Java program. Do you have experience with groovy?

Collapse
 
grahamcox82 profile image
Graham Cox

A little, but not enough to really know what I'm talking about yet :(

Collapse
 
roger_b_m profile image
Roger

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 :)

Collapse
 
rmorschel profile image
Robert Morschel

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

Collapse
 
grahamcox82 profile image
Graham Cox

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.