Chapter 15. Welcome and Environment Setup
Comparing Native Development to Cross-Platform Tools
Let’s state some facts and draw some initial conclusions to be clear.
When we say “native development,” we mean programming for each platform in the language, framework, and IDE supported and promoted by the maintainers of the platform. The platforms are Android and iOS.
For Android, the maintainer is Google. We say “maintainer” rather than “owner” because it is really open source—in fact, Amazon’s FireOS is a fork of the Android OS. Sometimes, we refer to the Android Open Source Project with the acronym AOSP. The language is Java, Kotlin, or a mix (Kotlin generates Java bytecode; as far as the runtime is concerned, there’s no difference). You could technically create an Android app in any language that produced Java byte code—in fact, one of our friends once wrote an Android app completely in Scala. That said, we’re only using Java and Kotlin in this book. The framework doesn’t have a specific name and is generally just referred to as “the Android framework.”
When we say “native development,” we do not mean native in the context you might see within a framework, which would indicate either the system-provided functionality like the system clock (surprisingly important), thread, or filesystem implementations, etc. We also do not mean “native” in the sense of the Android Native Development Kit (aka Android NDK), which allows you to invoke code written in C or C++ from within an Activity ...