Android is a favorite platform for smart phone apps developers. Android applications are created using an Android Software Stack. This stack can be described as a Linux Kernel and C, C++ libraries exposed using an apps framework that offers services for runtime and applications. It also helps in managing the runtime and applications.
Android Software Stack consists of the following elements:
1. Linux Kernel: It offers abstraction between hardware and the remaining stack. It is responsible for resources management, power management, security, networking, and device drivers.
2. C/C++ Libraries: This includes SQL lite, Graphics libraries OpenGL ES, media framework and webkit layout engine.
3. The Android Runtime: It contains core libraries and the Dalvik Virtual Machine.
4. Core libraries: offer most of java libraries + additional Android libraries.
5. Dalvik VM: While it provides (Just In Time) JIT compilation, the VM is optimized to run multiple instances of VMs. When Java applications access the core libraries each application has its own VM.
6. The Android Application Framework: Contains classes necessary to develop an Android application and abstraction between hardware accesses. The Android Java API’s main library includes telephony, content providers (data), resources, locations and UI.
7. Application Layer: All the android applications (native or third party) are built on the application layer using the same API.
Though android apps are written using Java but they do not include the use of Java ME (Mobile Edition). It is only most of J2SE libraries + Android’s own Java libraries.
The Structure of Android Application:
Android architecture enables the reuse of components which allows android apps developers to publish and share activities. It also helps in services and data between apps using predefined security restrictions. This helps android app developers to bring in components like phone dialer or contact manager to their applications, or to enhance their functionalities.