When it comes to Android mobile app development, Java was the programming language to use for a long time. But it has recently been losing market share to the newer and faster alternative of Kotlin. Even Google announced in May 2019 that Kotlin is now its preferred, or recommended, language for Android apps. However, Kotlin is not only suitable for Android app development and is also becoming increasingly popular in other areas of software development.
In this article, we look at whether Kotlin is now the universally better choice for Android app development, or whether Java maintains an edge in some circumstances. We will also look at some other applications of Kotlin where it can offer an alternative to Java.
What is Kotlin?
Kotlin is a cross-platform, statically typed programming language initiated and developed by the company JetBrains. As a language, Kotlin leans heavily on Java and one of Kotlin’s goals was to achieve the same high compilation speed as Java.
Kotlin is still a relatively new programming language at just six years old. While it was under beta development for several years before that, the first “stable” release (Kotlin 1.0) was only released by JetBrains in February 2016.
Since then, Kotlin has quickly gained traction, with its popularity boosted by Google making it an officially-supported programming language for Android development in 2017. Kotlin experienced a further surge in adoption when Google officially made the language its recommended choice for Android app development in 2019 – Android’s Kotlin-first approach.
Despite Kotlin’s short existence, more than 20% of the apps active in the Play Store today have been coded with it. Among the most popular 500 US apps, an impressive 87% were developed with Kotlin. Kotlin is today’s #1 choice for Android app development for many developers as well as Google.
However, Kotlin is not just for Android apps and is also used for other applications. The language can also be used for front-end as well as back-end web development, data science and cross-platform mobile development.
The graph below shows the current trend in Kotlin’s favour vs Java and other alternative technologies. According to recent Statista research, after Go, Kotlin and TypeScript are the two programming languages the most programmers plan to switch to learning and using. This is a clear sign that developers not only like Kotlin as a language but are confident there will be high market demand in future with many development projects continuing to be implemented with Kotlin.
Source: Statista
If you are wondering how much a Kotlin developers costs or earns around the world, you may be interested in our analysis of international Kotlin developer salary and rates ranges.
What is Java?
Java is an object-oriented programming language developed by Sun Microsystems and first published in 1995. The company, which was acquired by Oracle in 2010, published the Java programming language as part of the suit of Java technologies they developed.
Java technologies were considered advanced for the time and Java still represents a secure, robust and dynamic programming language that can be used for a wide variety of applications. A particular advantage of the language is that it is platform-independent. Developers can run Java code on any computer that supports the Java Virtual Machine.
Due to the language’s versatile applications, whether in app development (especially Android), internal enterprise development, game development, Big-Data or desktop/web/ or IoT applications. Java is a very versatile programming language that has greatly influenced the development of many other languages. Programming languages including JavaScript, JS++, C#, Python, PHP, Scala or even Kotlin are all considered to be among the programming languages influenced by Java.
Java is a foundational software development technology and is still taught as a core programming language at universities. This is mainly because Java is a good way to learn the basic principles of programming. With prior knowledge of Java programming, it is often easier to learn other programming languages.
The incredible influence of Java in the IT and software world is impossible to ignore. Many companies have developed important technologies based on Java (including the Google search engine, Spotify or LinkedIn) and, as consumers, we also all benefit daily from the developments made possible by Java.
It is not surprising that Java has been one of the most popular programming languages for a long time. In the graph below, you can see that Java, together with the programming language C, was the most used programming language for over 20 years. And from the middle of 2015 until the beginning of 2020, Java was the undisputed number 1 programming language in use and it is still in the top 3.
Source: tiobe-index
You may also be interested in our analysis of international Java developer salary and rates ranges.
What is the connection between Kotlin and Java?
Java is, along with Python, C and JavaScript, one of the most popular programming languages in use. It can be used in a wide range of applications and technologies and has been an established software development language for many years now.
Kotlin, on the other hand, is a programming language that has only been available as a stable release since 2016. Kotlin is not only interesting because of its rapidly increasing popularity over the past 5 years – it is already the number 1 choice for Android app development. Kotlin has replaced Java, the long-time top dog, from the top position in Android development.
As can also be seen in the graph below, more than 50% of new Android apps published on the Google Play store today are developed using Kotlin as the outbound programming language. Of the top 500 Android apps from the American Google PlayStore, about 87% have been developed using Kotlin. Some top apps including Uber, Evernote and Pinterest have even migrated from Java to Google’s newly preferred programming language.
Source: appbrain
Kotlin vs Java: Direct comparision
To get a good overview of the advantages and disadvantages of the two programming languages, it makes sense to make a direct comparison of their core qualities and features. We will look at the possible application areas of the two languages, how performance compares in different scenarios, as well as other characteristics of the programming languages.
We will also explore the question of how Kotlin’s increasing popularity could influence Java into the future and if it might replace it entirely, at least in the context of Android development.
Kotlin vs Java: Functions and Features
Java: One of the features of Java most appreciated by developers is that it is platform-agnostic and easily portable after compiling Java program bytecodes. Java code can be executed on any computer that supports the Java Virtual Machine. In addition, the object-oriented programming language is considered very secure due to public-key, encryption-based authentication and a virus- and tamper-proof system. Java is a programming language that focuses on error checking at compile-time, eliminating error-prone states.
In addition, programs developed in Java receive extensive runtime information. Java is therefore not only robust but also relatively dynamic. In addition, Java is suitable for Multithreading, which many developers see as an advantage.
Also, the object file format generated by the Java compiler, which has a neutral architecture, can thereby run on multiple processors. Because of Java’s neutral architecture and its compiler in ANSI C, it is also considered a very portable programming language. Another feature of Java worth mentioning is its high performance, made possible due to just-in-time compilers.
Kotlin: With an average code length around 20% shorter than Java, the efficiency of Kotlin is highlighted as a particularly valuable advantage. Not only can work be done more efficiently but the quality of the code is also improved as a result of it being more concise.
Kotlin’s versatility is another big plus. Due to its high degree of interoperability with Java, Java code can also be executed in Kotlin and vice versa. In addition, Kotlin’s many extensibility features mean that developers can add additional functionality to existing components without changing the main body of the code. This is advantageous because Kotlin’s library is quite small and does not use up memory as it consists of targeted extensions to the standard library. Accordingly, there is no runtime overhead with Kotlin.
Since Kotlin 1.4 was released in August 2020, Kotlin is now also interoperable/compatible with Apple’s Objective-C/Swift platforms. However, Kotlin is not only used in Swift development. Kotlin’s ability to compile into JVM bytecode or JavaScript means Java and JavaScript developers are also learning and using Kotlin. In addition, Kotlin compilers work with the fail-fast approach – designed for app development and resulting in fewer app crashes.
Kotlin vs Java: Design and Syntax (Hello World!)
When comparing the code to be written in Kotlin and Java, most developers will agree that the Java code is much more complicated than the Kotlin code. Java code is a good starting point for basic programming language learning but the shorter Kotlin code makes development much more efficient and of generally higher quality due to fewer lines of code.
For most developers, the first computer program in any language imaginable is probably the “Hello, World!” program. This is considered a basic program in any programming language and is intended to provide an initial overview and introduction to the programming language. It serves as an illustration, as it shows what the first executable code might look like. In the following, we show the code for the “Hello, World!” program in Kotlin as well as for Java:
Kotlin:
fun main() { println("Hello World") }
Java:
public class Main { public static void main(String[] args) { System.out.println(“Hello, World!”); } }
Even if the “Hello, World! program doesn’t show much about the extensive number of functions and possibilities of the two programming languages, it can still highlight core characteristics. The ” Hello, World!” program of Kotlin tells us that it first needs fewer lines of code than Java to produce the same outcome.
This is not only true for the “Hello, World!” program. Code written in Kotlin is usually about 20% shorter than code written for the same application in Java. Code in Java must always be written inside a class, which must also have the name of the document (here Main – i.e. Main.java file). Before Kotlin 1.3 was released, Kotlin’s Main Function also required parameters like “fun main(args : Array<String>)”. The use of functions are required in Kotlin’s code and are used to perform a specific task.
When deciding which programming language to learn, it is always important to know what you want to do with it. Java is the more complex programming language, yet it is easier to learn. Kotlin is clearer, but also more flexible and widely applicable, which makes mastering it more difficult.
If deciding which of the two programming languages to learn, there is no right answer. It depends on individual circumstances and its intended application.
Kotlin vs Java: Community and Support
Java is a very powerful programming language and with over 20 years (along with C) at the top of the most popular programming language has built a wide and helpful community. So probably every imaginable problem in Java has been discussed, so bugs and problems are quickly solved with a search on platforms like StackOverflow or GitHub. Even if that’s not the case, the Java community is so large that a solution is quickly found. Kotlin, on the other hand, is a lot newer, it has a much smaller user base and therefore a smaller support community. Even though Kotlin is actively trying to strengthen the Kotlin-Community, it is far from the community size of Java.
Kotlin vs Java: Which language is better for Android apps?
Java has long been Google’s preferred programming language for Android app development. Since 2017, however, Kotlin has also been officially supported by Google and, since 2019, its preferred programming language for Android app development. To what extent do the programming languages differ specifically in terms of Android app development and when might you still prefer Java over Kotlin?
Syntax is one of Kotlin’s strongest advantages. As described earlier, Kotlin requires significantly fewer lines of code compared to what would be required in Java. This makes the code more readable and simpler, which generally also leads to the code being of better quality because bugs and errors are easier to find.
Less code usually means it will take less time to develop and maintain the same app in Kotlin compared to Java. That can reduce costs, which is a major plus for Kotlin in the eyes of project sponsors. Another advantage is the simplicity of using Kotlin. The Java-specific problem of the NullPointerException, for example, does not occur in Kotlin. In addition, all frameworks and libraries written in Java can be accessed in Kotlin.
Last but not least is the fact that Kotlin is now the preferred programming language of Android Studio, the IDE (Integrated Development Environment) developed by Google. Java and C++ are also still supported by Android Studio but do not have the status as Kotlin. Since 2019, Google has been driving Android’s Kotlin-first approach and recommends the open-source programming language for the development of new Android apps. Interestingly, however, extensible support from Android Studio tools means Java and Kotlin code can be used in the same project.
Java has the advantage that there are more Java developers available on the market than Kotlin developers. That means there is also a larger Java support community and more extensive documentation.
And while Java code is rather complex compared to Kotlin it can be even easier for beginners to learn it as there is less complexity in its potential application. APKs also require less memory in Java, which can be an advantage for lightweight applications. However, in most circumstances, the few extra megabytes in Kotlin won’t have a noticeable impact.
Kotlin is a future-proofed technology for Android app development and project sponsors can be confident any apps built with it will be relevant for many years to come. It is often the right choice for fast apps that should be developed quickly, be less complex and be easy to maintain.
For complex, large apps, it can make sense to program with Java because it might be easier to find Java developers to work on them. However, five or ten years from now it may well be the case that there are more Kotlin than Java developers on the market.
Kotlin vs Java: Strategic economic considerations for your business
If you want to develop an app that has speed and performance as a priority you often ask yourself which is the right technology to start with. Because Java and Kotlin compile into very similar byte codes, the performance is usually relatively similar. What matters then is how effectively and cleanly the code is written.
Kotlin is known for needing significantly fewer lines of code than Java, which saves time. The code is also less complex, more concise and can be better maintained. Kotlin’s cleaner and more effective code can feed through to better app performance.
Development time can be shortened using Kotlin, which could lower the project costs. Java compiles faster with clean builds from 0 to 1. But since incremental builds are far more common in Agile software development, that Java advantage is usually neutralised.
When it comes to fast, high-performance apps, Kotlin is probably often objectively the better choice from a purely technological standpoint. And maintaining Kotlin code is typically easier. However, Java is still an interesting alternative. There is a strong argument for using Kotlin for small fast apps. But for large complex apps, Java’s internal storage can narrow the performance gap and means it remains a viable alternative.
A choice between Java and Kotlin also depends on the development resources available; if you have a software development team that has expertise in Java and little experience with Kotlin, they will almost certainly do a better job building an app in Java. And Java will still be relevant for many years to come so there shouldn’t be major worries about any app written in it becoming obsolete in the foreseeable future.
Conclusion
It is important to look at the current trends and developments in the IT and software industry, but in the case of Kotlin and Java it does not look like either programming language will become irrelevant in the near future. Kotlin is a high-performance, effective programming language that can also do a lot. Java is a long-standing powerhouse with a huge community. When it comes to which programming language is better, one thing can be said with certainty – it is probably the one the development resources available have the most expertise in.
However, there is a clear trend of companies switching from Java to Kotlin. Among them are companies like Uber, Pinterest, Evernote, Trello, Square, Coursera or even Google that have migrated their Android apps from Java to Kotlin. The most common reasons given for switching were better stability, better performance, better code and, in some cases, better user experience in general.