Since the beginning of Android, Java is the main programming language for this platform. Today, after 7 years, we can say that Android had matured. We have a great operating system and great programming tools such as Android Studio. But one thing didn't change - Java. It seems that we're stuck with it and Google doesn't even promise that something'll change in this matter.
Kotlin is a statically-typed, modern JVM language created by JetBrains. It was created in response to limitations of Java. There are many other JVM languages that can be used for Android development such as Groovy or Scala, but what makes Kotlin special is that it's fully interoperable with Java. Since the beginning, JetBrains were designing their language with Java compatibility in mind. There is one more big advantage of using Kotlin - it's a very lightweight language. Instead of recreating all of the standard libraries from scratch, Kotlin uses a Java library and adds it's own classes on top of it. It's especially important on Android where we have the infamous 65k methods limit. Of course we can use MultiDex, but it can cause applications to launch more slowly and introduce other problems. In short - we should avoid it if it's possible. Using Groovy, we are adding about 30k methods to our project, Scala is even bigger - it adds about 50k methods. Kotlin adds only about 6k methods to our dex file, it's comparable with the support-v4 library.
Why should we use it?
We've proven that it's the best choice amongst JVM languages. But why is Kotlin actually better than Java?
It's most prominent features are:
- Type inference
- Smart casts
- Lambda expressions
- Extension functions
- Function expressions
- Higher-Order functions
It also eliminates many problems that Java developers have to deal with such as:
- Checked exceptions
- Wildcard types
- Non-private fields
Is it ready for production?
It's fully interoperable with Java, it has great IDE support and it works on Android with no issues. It supports annotation processing, so you can use all Java libraries that you want including Dagger, Butter Knife and Android Data Binding. In terms of performance it's the same as Java (in some cases it's even better). The only downside is that it builds a little bit slower than Java but JetBrains promises to improve it in the future. The language is still in development and at the time of writing this post it's in 1.0 Beta version. But there is no need to worry. All major language changes have already been done and from version 1.0 (by the end of the year) Kotlin will be fully backwards compatible. So it's probably safe to start production development already.
Getting started with Kotlin is really simple. You only have to download a plugin for Android Studio
and add a dependency in the
build.gradle file. Starting from IntelliJ IDEA 15, it's bundled with the IDE
so we can expect to have it out-of-the-box in Android Studio as well.
The syntax is simple but very expressive. It doesn't take long to get used to it and once you do, it's
really hard to go back to Java.
Start now, you won't regret it!
- Using Project Kotlin for Android by Jake Wharton
- Kotlin reference
- Learn Kotlin by solving koans
- Advancing Android Development with the Kotlin Language by Jake Wharton
- Kotlin: New Hope in a Java 6 Wasteland by Michael Pardo
- Michał ZielińskiSenior Software Engineer