Following the Android Developers's Guide definition, Android represents a software stack, that is a set of software subsystems needed to create a fully functional solutions, at the first place for mobile devices.
{mobile_block=responsive_ad_2_300_250}
The Android stack includes an operation system (Android OS is modified version of the Linux kernel), middleware partly based on Java (software which purpose is to connect the low-level operating system to high-level applications) and key applications written in Java programming language (i.e. internet browser or contact manager)
Android has the following features:
- Application framework enabling reuse and replacement of app components
- Bluetooth, EDGE, 3G, and WiFi support (hardware dependent)
- Camera, GPS, compass, and accelerometer support (hardware dependent)
- Dalvik Virtual Machine (DVM) optimized for mobile devices
- GSM Telephony support (hardware dependent)
- Integrated browser based on the open source WebKit engine
- Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
- SQLite for structured data storage
Android development environment (together with a device emulator and ADT - a plugin for the Eclipse IDE) are not parts of an Android device's software stack, but they could be considered as an Android feature.
{mobile_block=responsive_ad_728_90}