Android is an open source software stack for mobile devices that includes an operating system, middleware and key applications. It allows developers to write managed code in Java and offers tools for application development including an emulator, SDK and Eclipse plugin. The Android framework supports components like activities, services and content providers that communicate via intents. It uses the Dalvik VM, supports common media formats and hardware like the camera and GPS.