What is Android?
Updated: Jul 8, 2018
Android is a software package and linux based operating system for mobile devices such as tablet computers and smartphones.
It is developed by Google and later the OHA (Open Handset Alliance). Java language is mainly used to write the android code even though other languages can be used.
The goal of android project is to create a successful real-world product that improves the mobile experience for end users.
What is Open Handset Alliance (OHA)
It's a consortium of 84 companies such as google, samsung, AKM, synaptics, KDDI, Garmin, Teleca, Ebay, Intel etc.
It was established on 5th November, 2007, led by Google. It is committed to advance open standards, provide services and deploy handsets using the Android Plateform.
A user-based permissions model
Extensible mechanism for secure IPC
The ability to remove unnecessary and potentially insecure parts of the kernel
Hardware Abstraction Layer just gives Applications direct access to the Hardware resources.
Bluetooth, audio, radio are examples
On top of Hardware Abstraction Layer sits a layer that contains some of the most important and useful libraries as follows:
Surface Manager: This manages the windows and screens
Media Framework: This allows the use of various types of codecs for playback and recording of different media
SQLite: This is a lighter version of SQL used for database management
WebKit: This is the browser rendering engine
OpenGL: This is used to render 2D and 3D contents on the screen properly the libraries in Android are written in C and C++
Dalvik Virtual Machine which is specifically designed by Android Open Source Project to execute application written for Android. Each app running on the Android Device has its own Dalvik Virtual Machine.
Android Runtime (ART) is an alternative to Dalvik Virtual Machine which has been released with Android 4.4 as an experimental release, in Android Lollipop (5.0) it will completely replace Dalvik Virtual Machine.
A major change in ART is because of ahead-of-time (AOT) Compilation and Garbage Collection. In Ahead-of-time(AOT) Compilation, Android apps will be compiled when a
In Ahead-of-time(AOT) Compilation, Android apps will be compiled when a user installs them on their device whereas in the Dalvik used Just-in-time(JIT) compilation in which bytecode is compiled when the user runs the app.
Moving to the last one, these are common. From Android Version 4.4, there is also the availability of another runtime called Android Runtime (ART), and the user is free to switch between the DVM and the ART Runtime environments
The Application Framework layer provides many higher-level services to applications in the form of Java classes. Application developers are allowed to make use of these services in their applications.
The Android framework includes the following key services
Activity Manager- application lifecycle and stack are controlled by the activity manager.
Content Provider component supplies data from one application to others on request.
You can store the data in the file system, an SQLite database, on the web, or any other persistent storage location your app can access.
Through the content provider, other apps can query or even modify the data (if the content provider allows it).
Content Provider is useful in cases when an app wants to share data with another app.
Resource Manager provides access to non-code embedded resources such as strings, color settings, and user interface layouts.
Notification Manager allows applications to display alerts and notifications to the user.
View System is an extensible set of views used to create application user interfaces.
Packet Manager is the system by which applications are able to find out information about other applications currently installed on the device.
Telephony Manager – Provides information to the application about the telephony services available on the device such as status and subscriber information.
Location Manger provides access to the location services allowing an application to receive updates about location changes.
Located at the top of the Android software stack are the applications. These comprise both the native applications provided with the particular Android implementation (for example web browser and email applications) and the third-party applications installed by the user after purchasing the device. Typical applications include Camera, Alarm, Clock, Calculator, Contacts, Calendar, Media Player, and so forth.