If you're a mobile app developer, Java was probably your go-to language for building Android apps. But did you know that new languages that might challenge Java's leadership in the Android world are popping up all over the place? One of them is Kotlin, a relatively new language some people believe is on its way to replacing Java on the mobile development scene.
Here's a detailed comparison of Java and Kotlin to help you decide which language will work best for your next mobile development project.
Java is the favourite of many developers when it comes to Android app development – mainly because Android itself was written in Java. Developed by Sun Microsystems (now property of Oracle), Java is an object-oriented programming language that boasts the title of the second most active language on GitHub. And no wonder – it’s been around for over 20 years, and its popularity only seems to grow.
Pros of Java
Easy to learn and understand;
Flexible – you can run it in a browser window or a virtual machine. This comes in handy when you reuse code and update software;
A good choice for cross-platform apps;
Android relies on Java – the Android SDK contains many standard Java libraries;
Java has a large open-source ecosystem, partly as a result of Google's adoption of the Java Virtual Machine (JVM) for Android;
Accelerated assembly within Gradle – we're all thankful for it when assembling large projects;
Java apps are more compact – in comparison to Kotlin, Java apps tend to be lighter (even in full analogue); a Kotlin app that includes complex computing processes in its code can turn out to work slowly on user devices with low technical specs, if built by inexperienced developers;
Top development speed – Java ensures faster build process than Kotlin.
Cons of Java
Java has limitations that cause problems with Android API design;
As a verbose language, Java requires writing more code, which carries a higher risk of errors and bugs;
It’s slower in comparison to many other languages and requires a lot of memory.
Here are some examples of prominent open source apps written in Java:
Pros of Kotlin
Got a lot of traction in Android development, but it’s also being used in backend projects such as Spring 5;
Switching from Java to Kotlin is easy – just install the Kotlin plugin, add it to the Gradle build files, and click 'Convert';
Includes smart extension functions to help devs build clean APIs;
Has null in its type system – nullability problems are a common pain point in Java, and since Android often uses null to represent the absence of a value, Kotlin solves it by placing null directly in its type system;
It's way more concise than Java, which means fewer opportunities for errors;
Interoperable with Java – you can write new modules in Kotlin and be sure they will work alongside the existing Java code; Kotlin is compatible with all Java libraries and frameworks, the JVM, and can integrate with the Gradle or Maven build systems;
Adopting Kotlin doesn't cost anything (except for learning and training).
Cons of Kotlin
Rather steep learning curve when switching entire teams to Kotlin due to the language's concise syntax (both a blessing and a challenge);
Slower compilation speed than Java (though Kotlin was shown to beat Java in some cases);
Small developer community, which means limited learning resources and difficulty in finding answers to questions; one look at Stackoverflow will give you a rough idea – there are only around 8000 questions tagged with Kotlin against 1.37 million questions about Java;
Experienced Kotlin devs are still a rarity, so finding a mentor for your team might be tricky;
Android Studio’s auto-complete and compilation tends to run slower in comparison to pure Java project.
While Kotlin offers many advantages that Java doesn't, it still has some shortcomings. When letting your team experiment with Kotlin, remember that transitioning to a new language isn't always that exciting for developers who have already found the tools and strategies that work for them.
You'll need to give your team at least a month for getting familiar with Kotlin, risking that some team members might not adapt in time for the launch of your Kotlin project. You also need to bear in mind that Java isn’t going anywhere and will remain essential for Android app development.
But if you're a beginner looking for a new challenge, it makes sense to try Kotlin, especially if you'd like to work on innovative projects for startups. If you're running a team of mobile developers, however, it's best to experiment with Kotlin one step at a time to check whether the new language brings you tangible benefits.