A Kotlin vs Java comparison is a very popular these days…
If you are considering getting into Android app development in 2019, you probably must have found yourself in this dilemma too.
Which language between Kotlin and Java is the best for Android development?
I did a quick search online on Kotlin vs Java for Android development but I was not satisfied with the results.
Most Java vs Kotlin comparisons tend to compare both languages from the technical perspective of the language structure and design.
In most instances, I also realized that the comparisons were geared towards a company that wants to transition their Java development team into Kotlin.
While I personally enjoyed reading these articles, because I’m a programmer, I kept wondering how a Kotlin vs Java comparison would be from a non technical point of view.
So, I decided to write this Java vs Kotlin comparison to target both experienced programmers as well as complete beginners.
In this article I am going to compare Kotlin and Java for Android while trying as much as possible to avoid showing you code or the very technical details of it.
I will also finish this article by outlining 3 reasons why I think you should learn Kotlin if your are complete beginner.
If you want to learn how Kotlin also compares with the new Swift language, check out my other Kotlin vs Swift performance comparison.
Let’s get started.
Kotlin is a statically typed programming language developed by JetBrains than runs on the Java Virtual Machine(JVM).
Since Google announced its official support for Kotlin as a native Android app development language, it has become popular pretty fast.
A number of companies have moved in to embrace it for their Android development since its launch in 2018.
Does it do a better job that good old Java?
Let’s find out.
Java is a multi-purpose object oriented programming language originally developed by Sun Microsystems but now owned by Oracle.
It has been ranked as the most popular language on Stackoverflow for years because of the number of Java developers who use it in production.
But, most importantly, it has been the go to language for native Android app development as Android itself is written in Java.
This makes it sound more robust than the little kid, Kotlin, right?
We’ll see about that in a moment.
Now that we know what each of these programming languages is, let’s dive right into the details of this Kotlin vs Java comparison.
We’ll compare Kotlin with Java in terms of syntax differences, developer productivity, community support etc…
Kotlin vs Java: Language Structure
There are a lot of differences in the language structures of both Kotlin and Java.
In this article we are going to compare these differences in terms of general language syntax and new features like null safety and interoperability.
Kotlin language syntax is precise and concise.
This means that you’ll need to write less Kotlin code to implement a similar functionality in a language like Java.
In fact, this is one of the main advantages of Kotlin because you end up with less code which means fewers mistakes in your code.
For example, ‘getters’ and ‘setters’ functions come in-build in Kotlin, so you don’t need to code your own.
If you are new to Kotlin, check out my other post on the best Udemy Kotlin tutorials to get you started.
Java code, on the other hand, is a tad more verbose than Kotlin.
So you’ll generally need to write more code to implement a similar feature in Kotlin.
The more code you write, the more you potentially introduce more errors or bugs in your final Android application.
Besides, often used functions like ‘getters’ and ‘setters’ don’t come in-build in Java, so you’ll have to code your own… this increases the amount of code you need to write.
One of the most infuriating issues in Android app development is how to handle null pointers.
Android completely relies on NULL to denote the absence of a value, and this can completely destroy an application or make it crash.
Kotlin resolves this NullPointerException issue by incorporating inherent null safety feature by default in the language.
The Kotlin compiler will not let you access a nullable variable without a proper check first.
Performing a null check on your variables every time helps avoid the NullPointerException which then prevents your app from crashing.
Java, on the other hand, allows you to assign null to any variable.
However, if you try to access an object that has a null value, you’ll encounter the NullPointerException and your app crashes.
Since, unlike Kotlin,all data types are nullable in Java, you’ll need to write extra code to handle these situations every time.
So, if null value handling has been your main problem with Java, Kotlin is what you are looking for.
There is a workaround, though, for making Kotlin types nullable if your need to.
Can you mix Kotlin code with Java or vice versa?
And what’s the advantage of being able to write both Java and Kotlin at the same time in the same app?
People debate so much about whether to use Java or Kotlin in their Android apps, but they forget a third option…
Despite the differences in the language structure and syntax between Kotlin and Java, both languages are 100% interchangeable.
This means that, while you can call Kotlin code from Java, you can also call Java code from Kotlin.
So Java and Kotlin classes can exist side by side and everything compiles just fine.
If you already know both languages, you might find that certain features are easier for you to implement in Java while others in Kotlin.
And you know what? Your Android app users won’t even notice the difference.
So the Kotlin vs Java interoperability feature is a big plus in my opinion.
Kotlin vs Java: Developer Productivity
How does Kotlin compare with Java in terms of developer productivity?
Which one enables you to develop your Android app faster?
Let’s compare Kotlin vs Java developer productivity by looking at the code compilation time as well as the general coding speed of a developer.
As compared to cross-platform mobile app development, developing an Android app using a native language takes longer compilation times.
Longer compilations times impact developer productivity in that you take longer to view app code changes, which slows you down.
So, how does Java vs Kotlin compare in terms of code compilation time?
Kotlin code, from my experience, takes longer to compile.
This is even gets worse with incremental code compilations, which means more time is spent just waiting for the code to compile before you can reload your app.
Java, however, offers you very faster source code compilation times compared to Kotlin.
Because Java code compiles faster than Kotlin, you’ll experience some gains in time saved when writing your Android code in Java.
Does this alone amount to higher productivity in Java, though?
Not in its entirety.
Your ability to write your code fast in a very key factor in determining your productivity in a software development tool.
And by this I DON’T mean your keyboard typing speed!
Here is what I mean.
Kotlin, having a brief and concise syntax, means that you need to write less code in order to implement a similar functionality as compared to Java.
So think about it in terms of…
You’ll be able to build more features in your app in an hour than you’d do in Java.
This is because you’ll need more time to write code that implements the same feature in Java… this means your development speed is slower.
Because a developer needs less time to finish up their app in Kotlin than in Java, it reduces the project’s time-to-market, which means more productivity in Kotlin.
How about maintaining the application code once it’s written in Java vs Kotlin?
First of all, since Kotlin apps have fewer lines of code as compared to Java, it means the maintenance needs of a Kotlin app will be less as compared to Java.
Why do I say this?
Well, it’s because the concise nature of Kotlin enables you to read and modify code more efficiently because there is less surface area for bugs to hide 🙂
Coupled with the NullPointerException problem that’s handled by default in Kotlin, Kotlin Android apps will have less crashes and system failures.
This also amounts to less codebase maintenance needs in Kotlin vs Java.
Kotlin vs Java: Community Support
When comparing Java vs Kotlin community support, we’ll look at which one has a bigger and more active community.
Having an active community is key for any software development tool.
First, both languages are developed and supported by great tech companies: Oracle for Java and JetBrains for Kotlin.
An active community means you can easily get help when you are stuck or have some code optimization questions or fixes.
This is where Java beats the pants of Kotlin, hands down.
Just a quick check on GitHub shows that while there are 77k repositories using the Kotlin language, there are 1.2M Java repositories on GitHub.
Let’s now head over to my favorite QA site, Stackoverflow.com
Where there are 1.6 million questions tagged Java on Stackoverflow, Kotlin comes last with a paltry 30k questions tagged Kotlin.
While this amount of GitHub and Stackoverflow activity is great for a new technology like Kotlin, Kotlin really a no match for Java in terms of community support.
Note also that, even though all these Java repos and questions might not be related to Android development, it speaks to the amount of support you’d get for Android as well.
In terms of learning resources, a quick Google search of “java tutorials” returned 400 million results while “kotlin tutorials” returned only 6 million.
So, even though both languages have great support and learning materials in my opinion, Java has waaay more learning resources than Kotlin.
If community support is very important to you, then learn and code your Android app in Java.
But if you are ready to have to figure out things on your own along the way, go with Kotlin Android development.
Kotlin vs Java: Popularity
Finally, let’s finish this Kotlin vs Java comparison by looking at their popularity.
While comparing popularity, we’ll consider the language that’s already used in production by more companies and startups.
Kotlin is used for Android development by many companies including: Pinterest, Uber, Trello, KickStarter, Coursera, Corda, Capital One, Evernote, BaseCamp 3, Netflix, Amazon, Twidere for Twitter, Shadowsocks & KotlinConf app.
Java is also being used in production by companies including: k-9 Mail, AmazeFileManager, Omni-Notes, Phonograph application, Pixel-dungeon, Telegram for Android, Qksms, VLC media player, MovieGuide, Bitcoin Wallet Android & SeeWeather.
So, clearly, both Kotlin and Java are ready for your Android project idea because many other companies already use them in production.
In terms of market share, both languages are widely used, even though Java definitely has way more Android apps because it’s almost 20 years older than this kid, Kotlin.
There goes the Kotlin vs Java comparison.
Are you now ready to choose which language, between Java and Kotlin, is best for your Android app project?
To finish this Java vs Kotlin comparison, here are 3 reasons why you should learn Kotlin instead of Java for Android app development in 2019.
3 reasons you should learn Kotlin instead of Java in 2019
- Kotlin offers you interoperability with Java, so if you are already a Java developer, your transition can be incremental… at your pace.
- The Kotlin team is working on Kotlin multi-platform, a tool that will enable your to build your Android app but ship it to iOS ass well with the same code.
- Even though the Java community is much bigger, the Kotlin team is full of more excited and enthusiastic devs… which kind of sounds cool!
Both Kotlin and Java are great programming languages, first.
Secondly, they are amazing tools for developing your Android application in 2019.
However, some people try to force down out throats some kind of “war” between the two Android development languages.
There is NO war here boy!
Kotlin does not replace Java, neither does Java replace Kotlin.
Java is Java while Kotlin is Kotlin. They are alternative ways of doing the same thing. So choose your preferred option and knock yourself out.
Remember when pundits tried to force an Android vs iOS war…?
Turns out it wasn’t no war at all.
They are just two mobile platforms that solve the same problem differently. Android has its lovers while iOS has its lovers too.
So, I hope this Kotlin vs Java comparison has helped you understand the differences between these two languages.
By understanding their differences you can choose which does it for you.
If you have time and resources to burn, I’d suggest you learn and build an app on both platforms.
This way, you’ll be your own judge as two which one between the two does a better job.
Have you used Kotlin or Java for Android development before?
Please share your experience in the comments below.