Kotlin VS Java
Tags: android, kotlin, java
Published: 2020-01-26 10:58:41

When you think about Android development, chances are one programming language immediately springs to mind and that is Java.
Ever since Google announced Kotlin as the official language for Android development at Google IO in 2017, programmers who want to become Android developers are in a dilemma.
The big question in front of them is whether they should learn Kotlin or Java.
So let's see about the two languages
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/dp6hy8s5eqrh2v5z17hu.png)
#Java
Java is the favorite 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.
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/i9gqecc6h2t8moca9f48.jpg)
#Kotlin
Kotlin was designed by programmers from JetBrains (the guys behind integrated development environments) to add some modern features to Java that come in handy in mobile development. Kotlin is an open source, statically typed language based on Java Virtual Machine (JVM), but you can also compile it to JavaScript or Native for building code that can run on iOS. All it takes is installing the Kotlin Plugin and letting it configure your project.
## 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; 
    • Inter operable 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; 
    • Devs can benefit from the Anko library and over 2000 Kotlin projects on Github; 
    • 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.
*So lets come to the main question*
###Will Kotlin replace Java for Android app development?
There is a lot of arguments online after Kotlin was released. Some people said Kotlin will totally replace Java in the Android native app development. In my point of view, NO, even though I really prefer it and I like the way it does. But I think it won’t totally replace Java for Android app development.
Firstly, after having announced to make Kotlin a first-class language for writing Android apps, Google noted in a later keynote that this is only an additional language, not a replacement for its existing Java support.
Secondly, let’s review the official blog of Kotlin support on Android.
Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin.
The keyword is “first-class”. What should we correctly understand this word? I think it just means Kotlin became one of the top-class language support for Android (so theoretically, at least, Kotlin should not overtop Java on Android app development).
Thirdly, the code base of Android Framework Layer is developed by Java. It is nearly impossible for Android team to port the whole framework on Kotlin. In the meantime, Java interacts with C/C++ through JNI (Java Native Interface), and Kotlin does the same way by far.
Lastly, even Kotlin has the ability or shows the trending of replacing Java, it should be a long long way to go. But it’s always not bad for our developers to learn new interesting technologies, let alone such an excellent programming language like Kotlin.
###Are there any differences using Kotlin or Java?
The new Android language helps to write safer, because with less work it´s possible to write a more reliable code. Of course, for the UX this translates into apps with less bugs and crashes.
Although Java and Kotlin are both languages for Android development, there are several comparison between both programming languages. However, Kotlin is a clean slate in many ways and it adds a lot of great features for app creators.
One interesting characteristic of this Google language acquisition is that Kotlin will continue to be developed and supported by JetBrains. Actually, both companies are currently trying to set up a nonprofit Kotlin foundation to look after the language.
*Aaaaannnd before ending this*
###Is Kotlin for beginners, intermediate or advanced
Should an Android developer use Java or Kotlin? 
This is recently a constant question app developers ask, but here are some tips you must take into consideration.
Firstly, if you already decided to become an android developer probably the best thing to do is to start or continue learning java.
At this moment, the resources for learning Kotlin are scarce, compared to Java. Keep learning about Java and eventually you will become more confident to use Kotlin later.
Secondly, if you feel confident enough, you should try out Kotlin and start enjoying the benefits of creating less code and other advantages from this new language.
Even if you´re not planning to use it any time soon, at least try to inform yourself about it, by participating in communities and eventually start implementing it into your projects.
And thirdly, if you’re an advanced developer you should be already into it! You find yourself in a stage where both languages are at your disposal and you have the knowledge enough to take the most out of them.
Advanced or not, every Android developer should give Kotlin a try. Until now, Java continues to be the most popular language app for development, however, keep an eye on Kotlin too, since is definitely going to play a determinant role in a short future.
###So Java or Kotlin
In all fairness, chances are that you have people on your team who are already familiar with Java. Switching the entire team to Kotlin at a time can be a bit of a shock, so it is important to do this transition slowly, one person at a time. Having said that, Kotlin is the new official language and owing to its modern nature, it will become widely adopted in the future, so learning it and starting development with it right now would be a good idea. Though Java will continue to be a popular language for a long time and isn’t likely to be entirely replaced. So take your time and make the switch gently.
At the end of the day, it’s all about what you feel comfortable with. Like I said in the beginning, to be a true blood Androidian, you will need to have a working knowledge of Java. But if you already do have that, Kotlin is the language of the future, so you might as well spend some time getting better at it.
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/8ep4e0ylqq1xb787zmby.jpg)