Which language should you use for Android development?
Android can be written in Java, Kotlin, C++ through the NDK, or any of several cross-platform frameworks. The languages differ less in capability than in how much ceremony they demand and how well they match the platform's own direction.
- 2020-05-25
- Programmatic DIB
- Android · Kotlin · Java
The realistic options
Java is the platform's original language and still runs an enormous amount of shipped code. Kotlin is the language Google now leads with — it interoperates completely with Java, removes a great deal of boilerplate, and handles nullability in the type system rather than at runtime.
C++ through the NDK is for the narrow set of cases where you need it: existing native libraries, or workloads where the managed runtime is genuinely the bottleneck. Cross-platform frameworks trade some platform fidelity for sharing a codebase with iOS.
How to actually choose
For a new native Android application the answer is Kotlin, and the reason is ecosystem direction rather than language aesthetics — documentation, samples and library APIs increasingly assume it.
For an existing Java codebase there is no need to rewrite. The interop is good enough that new code can be Kotlin while old code stays as it is, which is how most migrations actually happen.
Cross-platform is a product decision rather than a technical one. It is the right call when the shared surface is large and platform-specific behaviour is minimal, and the wrong call when the application lives or dies on feeling native.
- Kotlin for new native Android work — the ecosystem has moved.
- No need to rewrite Java; interop lets both coexist.
- NDK only where a native library or a real performance constraint requires it.
- Cross-platform is a product trade-off, not a language comparison.