Recs.
Updated
SpecsUpdate
Pros
Pro Supported by Google as an official first-class language on Android
Google are backing Kotlin as a direct alternative to Java and Android's answer to Swift. With Android Studio being based on JetBrain's IDEA platform it already has excellent Kotlin support, and Google's vested interests will ensure continued growth in users and support.
Pro Does not impose a particular philosophy of programming
It's not overly OOP like Java and it does not enforce strict functional paradigms either.
Pro Targets JVM, JavaScript and Native
Has great potential not only to be first but and last language to learn.
Targeting Backend, Frontend, Mobile + plans for Data science, IoT, Gaming, Desktop apps and WASM.
Goals are to make Kotling programs with easily transferable core logic between (Win, IoS, Raspberry(IoT), Mac, Android, Browser e.t.c) systems and add specifics on top.
Basicly only EASY concurrency and distributed computing is missing for now.
Pro Easy adoption for existing Java programmers
Kotlin runs on the JVM and Java interoperability has been one of the main objectives since the language was born. It runs everywhere Java does; web servers, mobile devices (Android), and desktop applications. It also works with all the major tools in the Java ecosystem like Eclipse, IntelliJ, Maven, Ant, Gradle, Spring Boot, etc.
All of this makes adoption extremely easy even for existing Java projects. On top of this there's also ensured Type safety and less boilerplate code needed.
Pro Multi-platform libraries
Kotlin provides the way to create single library to be used across multiple platforms (JVM, JS, UNIX, MacOS, iOS, Android, Windows, etc.). The structure includes cross-platform API definition (and code) and platform-specific implementations when needed.
For example the class Date provides similar functionality on both JVM and JS, but need to be called differently. So with this library programmer doesn't need to code separately for JVM and JS, but use this multi-platform library instead.
Pro Low-risk adoption for existing Java codebases
Since it has such a good interoperability with Java, Java libraries, and Java tools. It can be adopted for an existing Java codebase at little to no cost. The codebase can be converted from Java to Kotlin little by little without ever disrupting the functionality of the application itself.
Pro Officially supported for Android development
Starting with version 3.0 of Android Studio, Kotlin support will be built-in. This means that it's now easier than ever to use Kotlin for existing Android projects or even start writing Android apps only with Kotlin from scratch.
This also means that Kotlin and Kotlin plugins for Android Studio will be fully supported in the future and their likelihood of being abandoned is quite small since Google is fully embracing the language for their Android ecosystem (alongside Java and C++).
Pro Is built to solve industrial problems
Kotlin has been designed and built by developers who have an industrial background and not an academic one. As such, it tries to solve issues mostly found in industrial settings. For example, the Kotlin type system helps developers avoid null pointer exceptions. Reasearch languages usually do not have null
at all, but APIs and large codebases usually need null
.
Cons
Con User community still quite small
The availability of online support is still quite limited due to the young age of the language, and some of what does show up in searches refers to pre 1.0 release syntax.
Con Does not add substantial elements over Java 8 while being a nice language
Con May be hard for programmers already used to imperative style to learn functional programming from Kotlin
Since Kotlin does not enforce any particular paradigms and is not purely functional, it can be pretty easy to fall back to imperative programming habits if a programmer comes from an imperative background.