Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
안드로이드는 운영체제와 미들웨어 그리고 핵심 애플리케이션을 포함하고 있는 모바일 디바이스를 위한 소프트웨어 스택Stack이다. 안드로이드 SDK는 Java 프로그래밍 언어를 사용하여 안드로이드 플랫폼 상의 애플리케이션을 개발하기 위해 필요한 도구들과 API를 제공한다.
The following diagram shows the major components of the Android operating system. Each section is described in more detail below.
아래의 다이어그램은 안드로이드 운영체제의 주요 구성 요소를 보여준다. 각 영역은 아래에 더 자세히 설명된다.

Android will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others. All applications are written using the Java programming language.
안드로이드는 이메일 클라이언트, SMS 문자메시지 프로그램, 캘린더, 맵, 브라우저, 컨택contact 등과 같은 핵심 애플리케이션을 탑재하고 있다. 모든 애플리케이션은 Java 프로그래밍 언어를 사용하여 작성되었다.
By providing an open development platform, Android offers developers the ability to build extremely rich and innovative applications. Developers are free to take advantage of the device hardware, access location information, run background services, set alarms, add notifications to the status bar, and much, much more.
Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities (subject to security constraints enforced by the framework). This same mechanism allows components to be replaced by the user.
Underlying all applications is a set of services and systems, including:
개발자는 안드로이드에 이미 탑재된 핵심 애플리케이션에 사용된 것과 동일한 프레임워크 API에 완벽하게 접근할 수 있다(역주: 그럼에도 불구하고 안드로이드 SDK와 함께 배포되고 있는 android.jar와 안드로이드 런타임에 존재하는 core library는 정확히 일치하지 않은다). 애플리케이션의 아키텍처는 컴포넌트의 재사용을 쉽게 하도록 디자인되었다. 애플리케이션은 자신의 기능을 외부 애플리케이션에게 제공할 수 있으며, 다른 애플리케이션이 제공하는 기능을 사용할 수도 있다(단, 프레임워크에 의해 관리되는 보안 제약에 기초함). 이 같은 메커니즘은 사용자에 의한 컴포넌트의 치환replacement을 가능하게 한다. 모든 애플리케이션 하단에는 다음과 같은 서비스와 시스템의 집합이 존재한다.
Notification Manager that enables
all applications to display custom alerts in the status barActivity Manager that manages the
lifecycle of applications and provides a common navigation backstackFor more details and a walkthrough of an application, see the Notepad Tutorial.
애플리케이션에 대한 보다 자세한 설명은 SDK와 함께 제공되는 노트패드Notepad 예제를 참고하기 바란다.
Android includes a set of C/C++ libraries used by various components of the Android system. These capabilities are exposed to developers through the Android application framework. Some of the core libraries are listed below:
안드로이드는 다양한 안드로이드 시스템 컴포넌트에서 사용되는 C/C++ 라이브러리들을 포함하고 있다. 이런 기능은 안드로이드 애플리케이션 프레임워크를 통해 개발자에게 제공된다. 아래에 몇몇 핵심 라이브러리가 나열되어 있다.
Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.
안드로이드의 핵심 라이브러리core library는 Java 프로그래밍 언어의 핵심 라이브러리에서 사용가능한 대부분의 기능을 포함하고 있다.
Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.
모든 안드로이드 애플리케이션은 달빅Dalvik 가상 머신에 대한 자기 자신의 인스턴스를 가지고, 자신의 프로세스 내에서 실행된다. 달빅은 하나의 디바이스에서 다양한 가상머신이 효율적으로 실행될 수 있도록 만들어졌다. 달빅 가상머신은 최소 메모리를 사용footprint하도록 최적화된 달빅 실행executable 포맷(.dex)의 파일을 실행한다. 이 가상머신은 레지스터 기반이며, Java 언어 컴파일러에 의해 컴파일된 후, SDK에 포함되어 있는 “dx”라는 툴tool을 통해 .dex 포맷으로 변환된 클래스를 실행한다.
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
달빅 가상머신은 쓰레딩threading과 저 수준low-level 메모리 관리와 같이 그것의 기반이 되는 기능에 대해서는 리눅스 커널에 의존한다.
Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.
안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 스택, 그리고 드라이버 모델과 같은 핵심 시스템 서비스에 대해서는 리눅스 버전 2.6에 의존한다. 또한 리눅스 커널은 하드웨어와 안드로이드 플랫폼 스택의 나머지 계층 간의 추상화된 계층 역할을 담당한다.