Programs in Android are commonly written in Java, but you can also write in native languages like C or C++ using the NDK (Native Development Kit) provided by Android. These are compiled to bytecode for the JVM (Java Virtual Machine), which is then translated to Dalvik bytecode (Android's customised JVM) now succeeded by ART (Android Runtime).
Application components are the essential building blocks of an Android application. There are four main components; Activities, Services, Broadcast Receivers and Content Providers. There are also additional components, which consists of Fragments, Views, Layouts, Intents, Resources and Manifest.