What is Android?

What is Android?

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를 제공한다.

Features

  • Application framework enabling reuse and replacement of components
  • Dalvik virtual machine optimized for mobile devices
  • Integrated browser based on the open source WebKit engine
  • 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
  • Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
  • GSM Telephony (hardware dependent)
  • Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
  • Camera, GPS, compass, and accelerometer (hardware dependent)
  • Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE
    • 애플리케이션 프레임워크 컴포넌트에 대한 재사용 및 치환replacement를 가능하게 함.
    • 달빅(Dalvik) 가상머신 모바일 디바이스를 위해 최적화됨.
    • 통합 브라우저 오픈 소스 웹킷WebKit 엔진 기반.
    • 최적화된 그래픽 자체 제작된 2D 그래픽 라이브러리와 OpenGL ES 1.0 스펙(하드웨어 가속은 선택사항임)에 기반의 3D 그래픽에 의해 강화됨
    • SQLite 정형화된 데이터 저장공간을 위한 것.
    • 미디어 지원 일반적인 오디오, 비디오 그리고 정지still 이미지 포맷들을 지원 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
    • GSM 테크놀로지 (하드웨어 의존적)
    • 블루투스, EDGE, 3G와 WiFi (하드웨어 의존적)
    • 카메라, GPS, 나침반과 가속도계 (하드웨어 의존적)
    • 풍부한 개발 환경 디바이스 에뮬레이터, 디버깅 툴, 메모리 및 성능 프로파일링 그리고 이클립스 통합개발환경IDE을 위한 플러그인 포함.

Android Architecture

The following diagram shows the major components of the Android operating system. Each section is described in more detail below.

아래의 다이어그램은 안드로이드 운영체제의 주요 구성 요소를 보여준다. 각 영역은 아래에 더 자세히 설명된다.

Android System Architecture

Applications

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 프로그래밍 언어를 사용하여 작성되었다.

Application Framework

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을 가능하게 한다. 모든 애플리케이션 하단에는 다음과 같은 서비스와 시스템의 집합이 존재한다.

  • A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser
  • Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
  • Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
  • Notification Manager that enables all applications to display custom alerts in the status bar
  • An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack
    • 애플리케이션을 만드는 데 사용될 수 있는 풍부하고 확장가능한 뷰 집합, 이것은 리스트list, 그리드grid, 텍스트 박스text box, 버튼button, 심지어 임베딩 가능한 웹 브라우저까지도 포함하고 있다.
    • (Contacts과 같이) 애플리케이션이 다른 애플리케이션의 데이터에 접근하는 것을 가능하게 하거나, 또는 자신의 데이터를 공유하는 것을 가능하게 하는 컨텐트 프로바이더Content Provider.
    • 리소스Resource 매니저; 로컬라이즈된localized 문자열, 그래픽, 그리고 레이아웃 파일 같은 비 코드non-code 리소스에 대한 접근을 제공하는 리소스 매니저Resource Manager.
    • 모든 애플리케이션이 상태 바status bar에 커스텀 알림 메시지를 표시하는 것을 가능하게 하는 노티피케이션 매니저Notification Manager.
    • 애플리케이션의 생명주기lifecycle를 관리하며, 사용자의 일반적인 애플리케이션 네비게이션 히스토리를 관리(단, back stack, 즉 뒤로 돌아가기 기능만 지원함)하는 액티비티 매니저Activity Manager.

For more details and a walkthrough of an application, see the Notepad Tutorial.

애플리케이션에 대한 보다 자세한 설명은 SDK와 함께 제공되는 노트패드Notepad 예제를 참고하기 바란다.

Libraries

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++ 라이브러리들을 포함하고 있다. 이런 기능은 안드로이드 애플리케이션 프레임워크를 통해 개발자에게 제공된다. 아래에 몇몇 핵심 라이브러리가 나열되어 있다.

  • System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
  • Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
  • Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
  • LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
  • SGL - the underlying 2D graphics engine
  • 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
  • FreeType - bitmap and vector font rendering
  • SQLite - a powerful and lightweight relational database engine available to all applications
    • 시스템 C 라이브러리 ? 임베디드 리눅스 기반의 디바이스에 적합하도록 만들어진 표준 C 시스템 라이브러리로써 BSD libc로부터 파생되어 구현되었음.
    • 미디어 라이브러리 ? PacketVideo의 OpenCORE 기반임; MPEG4, H.264, MP3, AAC, AMR, JPG, 그리고 PNG를 포함하는 정지still 이미지 파일과 널리 사용되는 오디오와 비디오 포맷의 재생과 녹화를 지원한다.
    • 서피스(Surface) 매니저 ? 디스플레이 서브시스템subsystem에 대한 접근 관리 및 다양한 애플리케이션에 의해 사용되는 2D 및 3D 그래픽 레이어들을 단일하게 관리함.
    • LibWebCore ? 안드로이드 브라우저와 임베딩 가능한 웹 뷰, 두 가지 모두를 제공하는 최신 웹 브라우저 엔진
    • SGL ? 2D 그래픽스 엔진의 하단을 구성함.
    • 3D 라이브러리 ? OpenGL ES 1.0 API 기반으로 구현되었음. 이 라이브러리는 하드웨어 3D 가속기(단, 그것이 사용가능하다면)를 사용하거나, 또는 보유하고 있는 최적화된 3D 소프트웨어 래스터라이저를 사용함.
    • FreeType - 비트 맵 및 벡터 폰트 렌더링 엔진
    • SQLite - 모든 애플리케이션에서 이용할 수 있는 강력하며 경량화lightweight된 관계형 데이터 베이스 엔진

Android Runtime

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 메모리 관리와 같이 그것의 기반이 되는 기능에 대해서는 리눅스 커널에 의존한다.

Linux Kernel

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에 의존한다. 또한 리눅스 커널은 하드웨어와 안드로이드 플랫폼 스택의 나머지 계층 간의 추상화된 계층 역할을 담당한다.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值