Java or Kotlin? In-depth comparison by a native Android App Developer

Introduction

Android is a mobile OS (Operating System) made by Google. Unlike its competitor, Google made Android as an open source mobile OS, making developers able to modify and customize the OS for each phone they make(ex: samsung, xiaomi, oppo, etc). That’s why different Android phones could have different UI even if they use the same mobile OS.

To develop an Android app, you could use native programming language such as Java & Kotlin, or cross-platform one such as Flutter(Dart) & React-native. Most tech or enterprise companies still use native programming language to develop Android apps due to several reasons such as performance, debuggability, availability, etc . In this article, we’ll try to give in-depth comparison whether you should use Java or Kotlin to develop your Android app. But first, let’s get to know Java & Kotlin as an Android programming language.

What is Java?

According to techterms.com, Java is a high-level programming language developed by Sun Microsystems that was originally designed for developing set-top boxes and handheld devices but later becomes popular for developing web & mobile (Android) applications. It was the main Android programming language that was supported by Google before Kotlin was also supported by Google on 7 May 2019.

Some tech companies that use Java as one of their programming languages are spotify, twitter, instagram, uber, slack, etc. Java also has a larger community rather than Kotlin due to its earlier release in 2007(the first Android OS introduced by Google). Now, let’s talk about some of the pros and cons when using Java as your Android programming language.

Java Pros
  • Open source that ensures safety since many of its libraries are managed by tech companies such as Google, Apache, etc.
  • Multiplatform that’s basically available on any devices, server, and OS.
  • Ready to use, you’ll also get a lot of third-party codes ready to be used because of its large community.
Java Cons
  • Takes up a lot of system memory and a bit slower compared to other programming languages.
  • Sometimes Java causes problems with Android API(Application Programming Interface) design.
  • The syntax that Java uses sometimes can be a little complicated compared to other programming languages.

What is Kotlin?

According to developer.android.com, Kotlin is a modern statically typed programming language used by over 60% of professional Android developers that helps boost productivity, developer satisfaction, and code safety. It was introduced at Google I/O 2019 as one of Android’s main programming languages, besides Java.

Some tech companies that use Kotlin as one of their programming languages are pinterest, trello, evernote, tokopedia, gojek, etc. As stated earlier, Kotlin was introduced in 2019 but most Android developers already migrated to Kotlin by 60%. Let’s see the pros and cons when using Kotlin as your Android programming language.

Kotlin Pros
  • Kotlin application development, compared to Java, was faster to compile, lighter, and could prevent application size increasing.
  • With kolin, you could write much less code than Java due to its much simpler syntax.
  • Safe against NullPointerException, finally! Say bye to the “Billion Dollar Mistake”.
Kotlin Cons
  • Still a newly introduced programming language, resulting in much less community than the other well-established programming languages such as Java.
  • Hard to find an experienced mentor because there are very few Kotlin developers available.
  • Right now, the support community is still small, resulting in fewer libraries, blog posts, tutorials, and stackoverflow discussions.

Java vs Kotlin

So, is Java better than Kotlin, or the opposite? Let’s compare both features to see which one was better! 

Perks of Java compared to Kotlin
  • Java has checked exceptions, kotlin doesn’t.
  • Java has primitive types that are not classes (ex: int, long, boolean, etc), kotlin doesn’t.
  • Java has static members, in kotlin it is replaced with companion object, top level-functions, extension functions, or @JvmStatic.
  • Java has wildcard-types, in kotlin it is replaced with declaration-site variance and type projections.
  • Java has ternary operation ( a ? b : c), in kotlin you need to use the if expression.
Perks of Kotlin compared to Java

Here’s a list of features that’s available for Kotlin, but not available for Java, so many new features to help you develop Android apps better!

  • Lambda expression + inline functions.
  • Extension functions.
  • Null safety.
  • Smart casts.
  • String templates.
  • Properties.
  • Primary constructors.
  • First-class delegation.
  • Type inference for variable and property types.
  • Singletons.
  • Declaration-site variance & type projections.
  • Range expressions.
  • Operation overloading.
  • Companion objects.
  • Data classes.
  • Separate interfaces for read-only and mutable collections.
  • Coroutines.

Whew, are you still with me? A lot of new features indeed, but that’s not all! Now I’ll list what issues that Kotlin fixes from Java, to make your Android apps development experience much better.

Java issues that Kotlin fixes
  • Null references, in Kotlin you could use nullable instead of validate null (data?).
  • Raw types, in Kotlin you don’t need to assign data types unlike Java (var, val).
  • Arrays in Kotlin are invariants.
  • Kotlin has proper function types, as opposed to Java’s SAM-conversions.
  • Use-site variance without wildcards.
  • Kotlin doesn’t have checked exceptions.

Conclusion

In my opinion, you should definitely go for Kotlin! It’s much simpler and efficient than Java. If you’re new to Android apps development, i recommend you to learn Kotlin as your first Android apps programming language, there’s a lot of certified Kotlin courses such as Udemy, Udacity, or Indonesian based course that i took last year, Dicoding. Thanks to its efficiency and simplicity, I could develop Android apps much faster when I use Kotlin rather than Java.

If you’re familiar with Android apps development using Java, then you should learn Kotlin as well! You’ll learn Kotlin much faster than beginners since their syntax are similar mostly, and in Kotlin you could convert Java code snippets directly to Kotlin code thanks to its smart code converter. I’ve tried it a few times and it gets the job done.

But that doesn’t mean you shouldn’t learn Java, you should too since most tech companies out there still use Java as their main Android apps programming language. The conclusion is, learning both of them would be a great thing to do if you want to be an Android app developer. But if you should choose either one, go for Kotlin since in the future it’ll get much more updates, features, and larger community support.

At Dihardja Software, we also have native Android app development service using Kotlin programming language that we’ve discussed earlier. We strive to develop mobile app according to your requirements while being as efficient as possible. Looking to build an Android app? Reach out to us and we’ll gladly discuss with you on how to best build your mobile apps!

Source

https://techterms.com/definition/android
https://edium.com/pixplicity/why-we-are-not-cross-platform-developers-fd7ef70e976d
https://www.xenonstack.com/blog/kotlin-andriod/
https://techterms.com/definition/java
https://kotlinlang.org/docs/reference/comparison-to-java.html
https://stackshare.io/java#:~:text=9507%20companies%20reportedly%20use%20Java,Uber%2C%20Airbnb%2C%20and%20Google.
https://developer.android.com/kotlin#:~:text=Kotlin%20is%20a%20modern%20statically,developer%20satisfaction%2C%20and%20code%20safety.
https://morioh.com/p/49d170e3c4d8