IT/Mobile Platforms | Posted by 철규님(최규철) 2011.05.30 00:00

[Google I/O 2011] Keynote Day 2

Google Chrome
Google I/O 2011 Keynote Day 2
Written by Gyucheol Choi on 28 MAY 2011

[Google I/O 2011 Keynote Day 2 ] Google Chrome
May 11, 09:30AM ~ 10:30AM
Moscone Center, San Francisco
Vic Gundotra, Sundar Pichai
Day 2의 Keynote도 Gundotra에 의해서 시작됩니다. 전 세계로 live stream된 Day 1 Keynote의 시청자수가 총 60만명이었다고 합니다. 엄청난 숫자가 아닐 수 없습니다. Day 2의 Keynote는 시작부터 선물입니다. Samsung에서 만든 Verizon 4G용 Wi-Fi hot spot 바우처를 사람들에게 주겠다고 공지합니다. 다운로드가 최대 20Mb/s, 업로드는 10Mb/s 까지 지원을 한다고 하네요. 이후의 Keynote는 Sundar Puchai에 의해서 진행됩니다.

Vic Gundotra(좌)와 Sundar Puchai(우)

Chrome Web Browser
작년의 Keynote에서 Chrome의 사용자가 7천만(70M)명에 이른다는 발표를 했었습니다. 일년이 지난 지금 Chrome의 사용자는 1억 6천만(160M)명으로 일년만에 두 배 이상의 성장을 기록했습니다.


지난 해 I/O가 개최될 때의 Chrome의 버전은 4였습니다. 이때는 윈도우용 버전만 있었습니다. Chrome 6에 오면서 Mac과 Linux도 지원하게 되고 이때부터 사용자 수가 폭발적으로 증가합니다. 이후로는 6주 간격으로 Chrome을 릴리즈하는 것으로 정책을 바꾸고 올해 I/O가 개최되기 전까지 Chrome 11까지 릴리즈를 완료했습니다. 작년 1년 동안 6주 간격의 릴리즈를 통해 HTML5 지원, JavaScript 처리 속도 개선, Sandbox 강화 등이 개선되었습니다.
Speech
Chrome에는 Speech를 통한 검색 등을 지원하는 기능이 추가되었습니다. 복잡한 코딩이 없이 기존의 input tag에 x-webkit-speech="" 속성을 추가만 함으로써 음성 인식을 통한 텍스트 입력을 가능하게 해줍니다. (제 크롬에서는 아직 안되네요 @_@ 제가 할줄 모르는 걸까요?) 이 기능을 이용한 Google의 번역 기능도 같이 소개합니다. 이전에 비해 엄청나게 정확해진 음성 인식을 보니 관련 기능을 활용한 어떤 어플리케이션이 나올지 매우 흥미롭습니다.
Speech To Text 기능을 활용 예
Performance
JavaScript performance


그래프를 보면 한눈에 알 수 있듯이, 2008년의 JavaScript performance와 Chrome 11의 JavaScript performance 사이에 엄청난 향상이 있었습니다. JavaScript 처리에 있어서의 이러한 극적인 성능 향상 덕분에 JavaScrip로 제작할 수 있는 웹 프로그램의 종류가 매우 다양해졌습니다.
Graphic performance - GPU Acceleration
또 중요한 한 부분에 있어서의 성능 향상이 눈에 띕니다. 바로 Graphic 인데요, 특히 GPU 가속을 통한 성능 향상 및 랩탑의 베터리 사용 시간 증가는 주목할 만한 부분입니다.
Web Browser에서 가장 기본적으로 그래픽 관련 작업을 할 수 있는 것은 CSS transform을 활용하는 것입니다. 현재 Chrome에서는 beta 형식으로 CSS transform의 GPU acceleration을 지원하고 있으며, 앞으로 점차 개선 시켜나갈 예정입니다. CSS transform을 쓰는 경우는 특별한 추가 작업 없이 성능 개선을 저절로 얻을 수 있을 것 같습니다.
CSS 보다 한 단계 높은 수준으로는 Canvas 2D가 있습니다. Canvas 2D는 많은 게임에서 사용되고 있어서 특히 중요한 기능 중에 하나입니다. 때문에 Canvas 2D 중에 캐릭터 이미지를 그리고, 작은 이미지나 글자들이 주변에서 움직이는 등의 기능에 대한 성능 향상이 필요합니다. 이러한 것에 대해서 구글은 얼마만큼의 성능 향상을 이뤄냈는지 Fish demo를 통해서 보여주고 있습니다.

18fps with 100 fishes : Chrome Canvas 2D(S/W only)
38fps with 1,000 fishes : Chrome Canvas 2D + GPU Acc
25fps with 10,000 fishes : Chrome WebGL + GPU Acc

기존의 Chrome browser에서는 물고기 수를 100마리로만 지정해도 약 18fps로 아주 느려지는 것을 확인 할 수 있습니다. 하지만 새 버전의 Chrome에서 Canvas2D에 GPU 가속 기능을 활성화 시키면 물고기 수를 1,000마리로 지정해도 약 38 fps의 결과물을 얻을 수 있습니다. 여기서 Canvas 2D 대신에 WebGL을 이용하고 역시 GPU 가속 기능의 도움을 받는다면, 약 10,000마리의 물고기를 이용한 demo에서 약 25fps의 결과물을 얻는 것을 볼 수 있습니다. 엄청난 성능 향상이 아닐 수 없습니다. 10,000개의 객체가 각자 움직이는 것을 25fps로 그릴 수 있다면 왠만한 게임은 다 표현해 낼 수 있을 것만 같습니다.
GPU 가속을 이용하면 약 10배의 성능 향상, 그리고 Canvas 2D에서 WebGL로 바꾸면 또 다른 10배의 성능 향상을 얻을 수 있습니다. WebGL은 이러한 2D 그래픽 뿐만 아니라 3D 그래픽에서도 엄청난 성능을 보여줍니다. 아래에 보여지는 예제는 웹에서 아무런 plug-in의 설치 없이 3D 그래픽 작업을 할 수 있는 웹 어플리케이션입니다. 기본적인 3D 사물 구성은 물론 확대/축소, 회전 등 아무런 버벅임 없이 실행되는 모습이 매우 인상적입니다.

WebGL 기반 3D Cad 어플리케이션 : TinkerCAD

약 6개월 전에 Canvas 2D를 이용하는 것 보다, 지금 WebGL과 GPU 가속 기능을 이용하는 것이 약 100배의 성능 향상을 가져온다고 합니다. 웹 어플리케이션 개발에 있어서의 그래픽적 제약 사항은 이제 거의 사라졌다고 봐도 무방할 것 같습니다.
Chrome Web Store
In-App Payments
Google은 이 개발상의 모든 이점을 사용자에게 전달할 수 있도록 하기 위해 약 3개월 전에 Chrome Web Store를 오픈했습니다. 오픈 이후 웹 어플리케이션에서 사용자가 머무르는 시간은 약 2배 증가했으며, 웹 어플리케이션을 통한 트랜젝션 또한 2.5배 증가했다고 합니다. 구글은 Chrome Web Store를 오픈하면서 두 가지에 초점을 맞췄습니다. 개발자가 만든 어플리케이션이 최대한 많은 사용자들에게 전달될 수 있게 하는 것, 그리고 개발자들이 그들의 어플리케이션을 통해 돈을 벌 수 있게 하는 것. 첫번째 접근성의 문제 해결을 위해 41개국의 언어를 지원한다고 발표했습니다. 그리고 두번째 수익성 문제 해결을 위한 payment system에 대해서도 설명을 합니다.

Google Web Store는 41개국의 언어를 지원하고, in-app payment를 지원합니다.

결제 시스템에서 가장 관심을 둔 사항은 '사용 경험의 흐름을 방해하지 않고 결제를 되도록 하는 방법'입니다. 이러한 In-app payment가 적용된 예제 어플리케이션으로 'Graphicly Comics'를 보여주고 있습니다.

Graphicly Comics의 구매 화면

사용자는 preview 후 흥미롭다고 판단이 되면 payment page에서 몇번의 클릭만으로 구매 절차를 완료한 후 이후의 내용을 볼 수 있습니다. 전혀 복잡함이 없고, 사용 흐름을 방해하지 않는 매우 깔끔한 방법입니다. 더욱 놀라운 것은 이러한 기능을 지원하기 위해서 개발자는 단지 두 줄의 코드만을 추가하면 된다는 점입니다.

In-app payment 구현을 위한 소스 코드

Google은 또한 웹 어플리케이션의 확산을 위해 파격적인 수익 분배안을 내놓습니다. 기존의 어플리케이션은 다수의 명목으로 수수료를 부과하고 웹 어플리케이션의 경우는 최대 30%까지 수수료로 내도록했었는데, Google은 단 5%의 수수료만을 부과하기로 합니다. 웹 어플리케이션 개발을 위한 모든 환경이 갖춰진 것 같습니다. 이제 웹 어플리케이션이 데스크탑 어플리케이션 보다 못할 제약 조건은 거의 사라졌고, 수익성적인 측면에서는 더 매력적인 시장이 될 것입니다. 웹 어플리케이션 시장이 폭발적으로 발전할 가능성을 배제할 순 없을 것 같습니다.
Showcase : Angry Bird in the Web
스마트폰에서 시작한 Angry Bird의 열풍이 데스트탑을 거쳐 드디어 Web 플랫폼에까지 불었습니다. 그동안 성능적 제약 사항으로 Web 게임으로는 존재하지 않았던 Angry Bird의 Chrome Web 버전이 공개되었습니다. 이 또한 GPU 가속 기능의 발전 덕에 가능해진 것입니다. 기본적으로 Angry Bird는 WebGL을 기반으로 동작하며, 브라우저가 지원하지 않을 경우에는 Canvas도 지원한다고 합니다. WebGL과 GPU 가속 기능을 활용하면 HD 화질의 게임을 즐길 수도 있다고 합니다.

Angri Bird for Chrome Web Browser

Web이 얼마나 더 발전할지를 간단하게 보여주기 위해 시연된 3D Dreams of black이라는 영상도 꽤나 흥미롭습니다. 자세한 사항은 동영상을 통해서 직접 확인 해보시기 바랍니다.(바로가기) 이러한 것을 구현하는데 단지 JavaScript와 HTML5, WebGL만이 사용되었다고 합니다.

3D Dreams of Black

Chrome OS & Chromebook
마지막으로 Chrome OS에 대한 이야기가 나옵니다. 현재의 PC 사용 환경은 단지 웹 서핑만을 하기 위해서 지난 2-30년 동안 만들어진 OS의 동작 과정을 다 따라야하고, 부팅이 된 후에는 모든 어플리케이션의 상태를 사용자가 직접 관리해야 하며, 백신 프로그램도 사용자가 직접 설치해야하고, 데이터도 직접 백업해야합니다. 작업 PC를 옮기거나 업그래이드를 하게 되면 많은 시간을 소비하게 됩니다. 이러한 복잡한 사용 경험을 간소화하기 위해 Google이 내세우는 것이 Chrome OS입니다. Google은 대부분의 웹 사용 환경이 Notebook에서 발생한다는 사실에 초점을 맞추고, Chrome OS에 최적화된 노트북, Chromebook을 발표합니다. Chromebook의 특징은 아래와 같습니다.
  • 부팅 시간이 매우 짧음(약 8초 이내)
  • 항상 네트워크에 연결되어 있음
  • 베터리 사용 시간 증가
  • 어떤 환경에서는 개인의 데이터나 작업 환경에 접근 가능
  • 시간이 갈수록 성능이 향상됨
  • 보안성이 강함
개인적으로 가장 인상 깊게 본 부분은 '시간이 갈수록 성능이 향상된다'는 점입니다. 기존의 OS는 각종 패치와 업그래이드로 인해서 시간이 지나면 점점 느려지는 것이 일반적이었습니다. 하지만 Keynote 이전 부분에서 보여진 JavaScript나 Graphic performance 향상의 예를 보면, Chrome OS는 오히려 시간이 지날수록 더 빨라질 것 같습니다.

Chrome의 사용자 환경에도 많은 발전이 있었다고 합니다. 그 예로 사용자 데이터를 처리하는 예를 보여줍니다. 사실 특별히 획기적인 방법은 아니지만, 이를 운영체제 레벨에서 지원함으로써 사용자와 개발자의 편의성을 동시에 제공한다는 점은 높이살만 합니다. 예제로 나온 사용 경험은 그리 복잡한 것은 아닙니다. 파일 탐색기를 통해 파일을 선택하면 해당하는 프로그램이 동작하는 것이 가장 먼저 시연됩니다. 기존에는 동영상이나 이미지 뷰어, 사운드 플레이어 등을 설치하고 경우에 따라서는 해당 코덱까지 설치해야되는 불편함이 있었지만, Chromebook에서는 이와 같은 과정이 모두 생략됩니다. 단지 파일만 선택하면 적절한 응용 프로그램이 실행됩니다.
또한 로컬/클라우드 스토리지의 모든 파일은 OS 레벨에서 지원되는 API를 통해 다른 사용자와 손쉽게 교환할 수 있게 됩니다. Picasa 사용자가 자신의 계정을 등록해 놓으면 파일탐색기에서 Picasa로 바로 사진을 업로드 할 수 있으며, 파일 공유 사이트의 계정을 등록해 놓으면 선택한 파일을 공유 사이트에 업로드 할 수 있습니다.

화면 우측하단에 있는 버튼들로 선택된 파일과 연관된 작업을 손 쉽게 할 수 있습니다.

아무리 Web 기반 OS라고 하지만 On-line 상태에서만 정상적으로 동작을 한다면 문제가 아닐 수 없습니다. 때문에 Google은 수백개의 어플리케이션이 off-line에서도 정상적으로 동작할 수 있도록 제공하고 있습니다.
이러한 Chromebook은 Samsung과 Acer에 의해서 만들어져 6월 15일 전 세계 6개국을 시작으로 판매가 시작됩니다.

Chromebook form Samsung and Acer

Chromebook for business and education

비지니스와 교육에 있어서는 수백, 수천대의 PC를 관리하는 비용 및 시간, 노동력은 상상을 초월합니다. 이러한 곳에서는 Chromebook이 더 적합할 지도 모르겠습니다. 클라우드에 기반을 하고 있기 때문에 1차적으로 S/W 관리 비용이 들지 않습니다. 그리고 Chromebook을 대여 형태로 사용을 하게 되면, 고장이 날 경우 즉각적인 A/S 처리를 받을 수 있으며, 신규 Chromebook 모델이 나오면 교체 또한 손쉽게 할 수 있습니다. Google은 이를 위해서 Business와 Education을 위한 Chromebook 서비스를 공개했습니다. Chromebook과 web을 통한 지원, 보증 및 H/W에 대한 업데이트 또는 교체 지원 등을 포함한 서비스 요금은 아래와 같습니다.
  • Chromebooks for business : $28 / 1user, 1month
  • Chromebooks for education : $20 / 1user, 1month
윈도우에 모든 것이 맞춰져있는 지금의 PC 사용 환경을 위해서 Google은 가상화 기술을 통해 필요한 경우 윈도우를 사용할 수 있게 해줍니다. 또한 notebook 형태가 아닌 box 형태의 장치를 제공함으로써 사용자의 선택을 폭을 더 넓혀줍니다.
Outro
그리고 마지막으로 Chromebook을 참석자 전원에게 증정하겠다는 말로 Day 2의 Keynote를 마감합니다. Galaxy Tab 10.1에 Chromebook까지.. 참석자들은 정말 좋겠군요! ^_^

'IT > Mobile Platforms' 카테고리의 다른 글

[Google I/O 2011] Keynote Day 2  (0) 2011.05.30
[Google I/O 2011] Keynote Day 1  (1) 2011.05.29
[Google I/O 2011] Intro & Session list  (0) 2011.05.21
Android Architecture Overview  (1) 2011.04.08
EFL(Enlightenment Foundation Library)이란 무엇인가?  (0) 2011.03.02
LiMo4? SLP?  (3) 2011.02.23

댓글을 달아 주세요

IT/Mobile Platforms | Posted by 철규님(최규철) 2011.05.29 23:58

[Google I/O 2011] Keynote Day 1

Android: Momentum, Mobile and More
Google I/O 2011 Keynote Day 1
Written by Gyucheol Choi on 22 MAY 2011

[Google I/O 2011 Keynote Day 1 ] Android: Momentum, Mobile and More at Google I/O
May 10, 09:00AM ~ 10:00AM
Moscone Center, San Francisco
Vic Gundotra, Hugo Barra
이틀간 진행되는 Google I/O는 매일 아침 첫번째 세션을 Keynote로 시작합니다. Keynote는 우리말로 하면 '기조 연설' 정도로 보시면 됩니다. Day 1의 Keynote는 'Android: Momentum, Mobile and More at Google I/O'라는 주제로 Vic Gundotra와 Hugo Barra에 의해서 진행되었습니다.

Vic Gundotra(좌) Hugo Barra(우)

Intro
시작은 Vic Gundotra가 참석자들에 대한 감사의 인사와 지난 해까지의 Google I/O를 되돌아보는 시간을 가졌습니다. Google I/O는 2008년 처음으로 개최되었는데, 첫 해의 Keynote의 주요 관심사는 'Client, Connectivity, Cloud'였습니다. 스마트폰이나 빠른 웹 브라우저 등으로 사용자의 환경이 많이 바뀌게 될 것이며(client), 무선 인터넷으로 인한 접근성 증가 및 대역폭의 증가도 눈에 띌 것이고(connectivity), 이로 인해 그 전까지는 생각하기 어려웠던 클라우드 서비스(cloud)를 가능하게 할 것이라는 내용이었습니다. 이 모든 것이 벌써 일어난 일이 되버렸습니다. 2009년의 Keynote에서는 그 주제가 HTML5였습니다. 현재 브라우저들의 HTML5 지원은 그때와는 비교할 수 없을 수준으로 발전했습니다. 작년은 Android가 Keynote의 주제였습니다. 2011년은 주제에 앞서 새로운 시도를 소개했습니다. 전세계로 live stream 서비스를 제공하고, 122개 도시에 viewing parties라는 모임을 가져서 live stream되는 Google I/O를 모여서 볼 수 있도록 했습니다.


Day 1의 Keynote는 크게 'Momentum, Mobile, More'의 세 파트로 나누어져 있으며, 이후의 Keynote는 Hugo Barra가 진행합니다.
Momentum
약 2년 6개월 전 G1으로 안드로이드가 처음 알려진 이후, 현재는 약 1억대 이상의 안드로이드 탑재 장치가 사용되고 있습니다. 그동안의 성과를 간단히 요약하면 다음과 같습니다.
  • 전 세계 1억대 이상의 안드로이드 디바이스 판매
  • 36개 제조사, 215개 통신사, 45만명의 개발자
  • 112개국에서 310여종의 안드로이드 디바이스 사용 중
  • 하루에 약 40만개의 안드로이드 디바이스가 판매 됨
  • 안드로이드 마켓의 어플리케이션 수 20만개 돌파
  • 누적 다운로드 45억회 돌파
Mobile
Mobile 부분에서는 주로 안드로이드 플랫폼과 신규 서비스에 대해서 이야기합니다.
Honeycomb 3.1
Google I/O가 열리는 5월 10일에 태플릿PC용 안드로이드 플랫폼인 Honeycomb이 3.1로 업그레이드되었습니다. 업그레이드된 Honeycomb 3.1에서는 아래와 같은 기능을 추가로 지원합니다.
  • 새로운 task 전환기
  • 크기 조절이 가능한 바탕화면 위젯
  • USB 호스트 기능 추가
  • Google TV용 안드로이드 마켓 지원
Honeycomb 3.1
Ice Cream Sandwich
Honeycomb 3.1 릴리즈 및 그에 대한 간단한 소개가 있은 뒤 올해 있을 다음 버전 Ice Cream Sandwich에 대한 소개가 이어졌습니다. 안드로이드는 지금까지 특정 하드웨어 스펙을 요구하지 않았기때문에 다양한 종류의 디바이스가 많이 출시되었습니다. 구글 또한 이로 인한 사용자의 선택폭 증대가 매우 중요하다고 생각하고 있습니다. 때문에 다음 버전인 Ice Cream Sandwich에서는 개발자들의 작업량을 늘리지 않으면서 이러한 다양한 환경에서 사용자들이 좋은 UX를 경험할 수 있도록 하는 것은 주요 관심사로 했습니다. 이 말은 keynote에서 한 문장으로 표현됩니다. "One OS, everywhere"

Ice Cream Sandwich 로고

이를 위해서 우선 Honeycomb에 적용된 다양한 개선점들을 스마트폰, 태블릿PC 모두에 쓰일 수 있는 Ice Cream Sandwich에 포함시켰습니다. 덕분에 사용자는 스마트폰, 태블릿PC 구분 없이 동일한 사용환경을 가질 수 있게 되었습니다. 또한 다양한 크기 및 해상도의 화면에서도 훌륭한 UI를 제공하기 위해 화면 비율 조절(scaling)에 관한 신규 API가 추가되었고, 일부 화면 구성 component들은 좀 더 향상된(intelligent) 모습으로 변경되었습니다. 간단하게 정리하면 아래와 같습니다.
  • State of the Art UI : 신규 홀로그래픽 UI, 신규 launcher, 신규 멀티태스킹 UI, 풍부한 위젯, 개선된 어플리케이션
  • 개선된 Application Framework
  • 다양한 form 팩터에 대응하는 신규 scaling API 추가
  • Components 기능 확장(intelligence)
  • 개발 툴 개선
위에 열거된 내용에 더해서 camera를 활용한 재미있는 기능들이 추가되었습니다. 아래에 소개되는 기능들은 단순한 어플리케이션이 아닌 어플레케이션 프레임워크에서 제공되는 API를 이용해서 만든 예제 어플리케이션입니다. 때문에 API를 활용한 더 많은 창조적인 어플리케이션이 기대됩니다.

첫번째로는 전면 카메라가 사용자를 인식해서 위치에 따라서 3D로 표현된 사물의 view point를 변환시켜주는 기능입니다. 현재 개발되고 있는 무안경 3D 디스플레이와 결합된다면 더 실감나는 3D 영상을 만들어낼 수 있을 것 같습니다. (물론 이 기술을 구글이 최초로 개발한 것은 아닙니다. 얼마전 다른 회사에서 시연에 성공했습니다.)

사용자의 위치에 따라 서로 다른 view point를 가지게 해주는 기능

두번째로는 카메라로 받아들여지는 사용자의 얼굴을 인식해서 눈, 코, 입 등을 변형 시켜주는 기능입니다. 가상 성형 프로그램이라고 보시면 됩니다. 다만, 기존의 대부분의 프로그램은 스틸샷을 기준으로 했었는데, 이번 구글의 프로그램은 카메라에서 들어오는 실시간 동영상 이미지를 대상으로 한다는 점이 차이점입니다.

가상 성형 프로그램(좌)과 Virtual Camera Operator(우)

세번째는 'virtual camera operator'라는 기능입니다. 주로 영상 통화나 화상 회의 어플리케이션에서 많이 활용될 것 같은데요, 한 영상 카메라에 두 명의 얼굴이 인식되고 이 중 한 명이 말을 할 경우 말하는 사람의 얼굴을 자동으로 zoom-in 해주는 기능힙니다.
Multimedia in the cloud
Google은 이날 Keynote를 통해서 클라우드를 이용한 영화와 음악 서비스의 시작을 알렸습니다. 안드로이드 마켓을 이용하면 영화와 음악을 VOD, AOD의 형식으로 이용할 수 있습니다. 물론 off-line에서도 사용할 수 있는 옵션도 제공합니다. 단일 계정을 이용한 다수의 디바이스에서 동일한 환경, 동일한 컨텐츠를 이용가능합니다. 안드로이드에서도 플랫폼 레벨의 N-스크린 기능이 지원되기 시작한 것입니다. 클라우드를 이용한 영화와 음악 서비스는 크게 새롭거나 흥미로운 점은 없는 것 같습니다.


Suppports
Google은 또한 OHA 회원사들의 안드로이드 제품에 대한 업그레이드 기간에 대한 가이드 라인도 제시했습니다. 하드웨어만 지원한다면 최소 18개월은 업그레이드를 지원하겠다는 내용입니다. 얼마나 빨리 업그레이드를 지원할지 등에 대한 세부 사항은 추후에 발표하겠다고 합니다.

18개월 동안의 업그레이드를 보장받는 OHA 회원사
More
Accessory Development Kit
More 섹션은 안드로이드 플랫폼의 앞으로 나아갈 방향에 대한 내용입니다. Open platform에서 소프트웨어를 자유롭게 작성할 수 있는데, 하드웨어는 못할 이유가 무엇인가?라는 질문을 통해 안드로이드 탑제 하드웨어의 개발을 지원하겠다는 구글의 목표가 나타납니다. 구글에서는 이를 'Android Open Accessory'라는 이름으로 발표하였습니다. 이를 이용하면 단말기가 아닌 다른 하드웨어도 안드로이드 플랫폼을 이용해서 만들어지고, 이 장치들은 사용자의 안드로이드 장치와 완벽히(fully) 정보를 주고 받을 수 있게 됩니다. 안드로이드가 탑재된 장치를 안드로이드 폰에 연결하면 자동으로 장치를 인식해서 해당하는 어플리케이션이 실행되고, 혹시 해당 장치에 대한 어플리케이션이 설치되지 않은 경우 안드로이드 마켓에서 다운로드 받을 수 있게 해줍니다. 예제로 나온 것이 안드로이드가 탑재된 사이클 머신인데, 사이클의 페달을 밟는 것을 안드로이드 폰의 게임과 연동시켜서 재미있는 데모를 보여줍니다.

안드로이드가 탑재된 사이클 머신

이러한 'Android Open Accessory'는 GingerBread 2.3.4, Honeycomb 3.1부터 지원합니다. 우선은 USB를 통한 연결부터 지원하고 추후에는 블루투스를 통한 통신도 지원할 예정이라고 합니다. 이러한 장치들의 개발을 손쉽게 하기 위해 구글은 Accessory Development Kit이라는 것 또한 공개했습니다. 다양한 장비를 더 손쉽게 개발하는 것을 지원하기 위한 구글의 노력이 돋보이는 부분입니다.
Accessory Development Kit

또한 이 ADK를 이용한 실제 예제 하드웨어도 선보였습니다. 보드가 ADK와 연결되어 있고, ADK는 태블릿PC와 연결되어 있어서, 태블릿PC의 기울기를 ADK가 전달받아 보드를 조절하는 장치입니다. Keynote에서 직접 보여주는 예제 뿐만 아니라 '구글의 성공에 걸맞는 크기'의 큰 예제 또한 소개했습니다.


Android@Home
더 나아가 구글은 ADK를 활용해서 집안의 전체를 안드로이드 플랫폼으로 제어하는 비전도 제시했습니다. 이를 위해 Android@Home Framework라는 것을 도입하고, 일반 통신을 할 수 없는 장치들을 위한 새로운 protocol도 소개합니다. 아직 전반적을 적용이 되지는 않았지만, 구글은 간단한 예제로 그 가능성을 보여줍니다. 바로 안드로이드 태블릿PC로 조절가능한 전등, 게임에 따라서 번쩍거리는 조명, 물리적으로 직접 연결되어 있지는 않지만 음악 재생을 할 수 있게 해주는 스피커, CD의 정보를 자동으로 읽어서 라이브러리를 구성하고 재생하는 오디오 장치 등입니다.

(좌상) 태블릿으로 조절 가능한 전등
(우상) 화면에 따라 조명이 번쩍거리는 게임
(좌하) 물리적인 직접 연결이나 제어 없이 원하는 곳으로 음악을 재생시킬 수 있는 기능
(우하) CD를 가져다대면 클라우드를 이용해 라이브러리를 구축하고 재생하는 장치
Outro
마지막으로 Hugo는 Google I/O 2011 전체 참석자에게 Samsung Galaxy Tab 10.1을 선물로 안기고 첫째날의 Keynote를 마무리합니다.

'IT > Mobile Platforms' 카테고리의 다른 글

[Google I/O 2011] Keynote Day 2  (0) 2011.05.30
[Google I/O 2011] Keynote Day 1  (1) 2011.05.29
[Google I/O 2011] Intro & Session list  (0) 2011.05.21
Android Architecture Overview  (1) 2011.04.08
EFL(Enlightenment Foundation Library)이란 무엇인가?  (0) 2011.03.02
LiMo4? SLP?  (3) 2011.02.23

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 itsmeyjc 2012.03.26 08:47 신고

    android open accessory에 대한 교육이 있어 홍보해드립니다.
    http://doedu.co.kr/incumbent/shortContent.do?index=152

    Cortex-M3 계열의 장비를 안드로이드 플랫폼에서 제어하도록 펌웨어와 애플리케이션 개발에 대해 다루고 있습니다.

IT/Mobile Platforms | Posted by 철규님(최규철) 2011.05.21 17:40

[Google I/O 2011] Intro & Session list

Google I/O 2011
Developer Conference
Written by Gyucheol Choi on 12 MAY 2011
May 10-11, 2011 / Moscone Center, San Francisco
구글은 지난 2008년부터 매년 'Google I/O'라는 개발자 회의(developer conference)를 개최합니다. 올해는 샌프란시스코의 모스콘 센터(Moscone center)에서 현지 날짜로 5월 10일~5월 11일 양일간 열립니다. 개발자 회의에는 약 5-6000명 정도의 개발자가 사전 신청을 통해 참석을 하게 됩니다. 참가 비용은 450달러로 우리 돈으로는 약 50만원 정도하는 적지 않은 금액이지만, 안드로이드나 구글에 대한 관심이 증가하는 덕에 올해의 Google I/O 참가 신청은 1시간도 채 안되서 마감되었습니다.

구글에 대한 최신 정보를 가장 생생하게 얻을 기회일 뿐만 아니라, 매년 참가자들에게는 깜짝 놀랄만한 선물이 주어져서 시간과 돈과 같은 기회 비용 등 이런저런 득실을 다 따져보아도 참가가 득이되는 것은 사실일 듯합니다. (참고로 2010년 Google I/O에서는 참가자들에게 안드로이드가 탑재된 스마트폰을, 올해 Google I/O에서는 참가자들에게 삼성 갤럭시탭10.1과 구글 크롬북을 선물 하였습니다!!)

Google I/O 2011에서 참석자 전원에게 제공된 Samsung Galaxy Tab 10.1

이틀간의 conference 동안 매일 아침 9시의 Keynote를 시작으로 100여개의 세션이 진행됩니다. 참가자들은 자신이 원하는 세션을 찾아 해당 세션이 진행되는 시간에 세션이 진행되는 회의장으로 찾아가면 됩니다. 더불어 올해는 처음으로 전 세계 122개 도시에 생중계되기도 했습니다. 물론 실질적으로 live로 보여지는 세션은 일부였으며, 다른 대부분의 세션들은 Google I/O가 끝난 주 금요일에 Google I/O 2011 공식 홈페이지http://www.google.com/events/io/2011/)를 통해 세션 동영상이 공개되었습니다.

약 100여개의 세션은 Track별로 주제를 달리합니다. 올해 진행되는 세션들은 Android,, App Engine, Chrome, Commerce, Dev Tools, Geo, Google APIs, Google Apps, Tech Talk 등의 총 9개의 track으로 나뉩니다. 각각의 track은 2~3개의 세션이 동시에 진행되기도 합니다.

참가자들은 자신에게 필요한 세션을 찾아서 들어야되는데, 구글은 이를 위해서 세션들을 난이도에 따라서 세 단계로 분류해놓았습니다. 가장 쉬운 등급은 세션 레벨이 101입니다. 이 레벨의 세션은 제품이나 기술에 대한 사전 지식이 없어서 들을 수 있는 수준으로, 주로 기술에 대한 overview나 새로운 분야에 대한 소개로 이루어집니다. 다음 등급은 201 레벨입니다. 이 레벨은 특정 기술이나 제품에 대한 심도있는 내용이 제공되는데, 어느 정도 그 기술이나 제품에 대한 지식이 있도 친숙한 사람을 대상으로 합니다. 마지막으로 301 레벨이 가장 높은 수준의 세션입니다. 기술이나 제품에 대한 고급적인 정보 교환이 이 세션의 목표입니다.

2일 동안 열린 세션들을 track별, 난이도 별로 분류해보았습니다. 아래의 리스트와 링크를 참고하세요^^

Keynotes & After hours party
  • Day 1 Android: Momentum, Mobile and More at Google I/O [go]
  • Day 2 Google Chrome: Day 2 Keynote from Google I/O [go]
  • After hours party Jane`s Addiction Live at After Hours [go]
Android Track
101 level (Android Track)
  • 3D Graphics on Android: Lessons learned from Google Body [go]
  • Android Market for Developers [go]
  • Bringing C and C++ Games to Android [go]
  • Fireside Chat with the Android Team [go]
  • Honeycomb Highlights [go]
201 level (Android Track)
  • Accelerated Android Rendering [go]
  • Android + App Engine: A Developer`s Dream Combination [go]
  • Android Development Tools [go]
  • Best Practices for Accessing Google APIs on Android [go]
  • Building Aggressively Compatible Android Games [go]
  • Building Android Apps for Google TV [go]
  • Designing and Implementing Android UIs for Phones and Tablets [go]
  • Don’t just build a mobile app. Build a business. [go]
  • Evading Pirates and Stopping Vampires using License Verification Library, In-App Billing, and App Engine [go]
  • How to NFC [go]
  • HTML5 versus Android: Apps or Web for Mobile Development? [go]
  • Leveraging Android Accessibility APIs To Create An Accessible Experience [go]
  • Optimizing Android Apps with Google Analytics [go]
  • Taking Android to Work [go]
301 level (Android Track)
  • Android Protips: Advanced Topics for Expert Android App Developers [go]
  • Memory management for Android Apps [go]
  • Android Open Accessory API and Development Kit (ADK) [go]
Application Engine Track
101 level (Application Engine Track)
  • Building Enterprise Applications on App Engine [go]
  • Coding For The Cloud: How We Write Enterprise Apps for Google on App Engine [go]
  • Fireside Chat with the App Engine Team [go]
  • Full Text Search [go]
  • Life in App Engine Production [go]
  • Smart App Design [go]
  • Storing Your Application`s Data in the Google Cloud [go]
201 level (Application Engine Track)
  • App Engine Backends [go]
  • App Engine MapReduce [go]
  • Querying Freebase: Get More From MQL [go]
  • Scaling App Engine Applications [go]
301 level (Application Engine Track)
  • Large-scale Data Analysis Using the App Engine Pipeline API [go]
  • More 9s Please: Under The Covers of the High Replication Datastore [go]
Chrome Track
101 level (Chrome Track)
  • Chrome Web Store Publisher Panel [go]
  • Fireside Chat with the Chrome Team [go]
  • HTML5 Today with Google Chrome Frame [go]
  • Super Browser 2 Turbo HD Remix: Introduction to HTML5 Game Development [go]
  • Web Fonts are changing the Web. Learn why. [go]
201 level (Chrome Track)
  • Beyond JavaScript: Programming the Web with Native Client [go]
  • Creating Accessible Interactive Web Apps using HTML5 [go]
  • HTML5 & What`s Next [go]
  • HTML5 Showcase for Web Developers: The Wow and the How [go]
  • Mobile Web Development: From Zero to Hero [go]
  • WebGL Techniques and Performance [go]
Commerce Track
101 level (Commerce Track)
  • Google Checkout: A Foundation For Payments [go]
  • Introducing In-App Payments for the Web [go]
  • Introduction to Google Shopping APIs [go]
201 level (Commerce Track)
  • Google One Pass: A simple, flexible, Web API for paywalls [go]
  • Integrating to eBooks: APIs to Sell and Read eBooks for Affiliates, Retailers and Device Makers [go]
Developer Tools Track
101 level (Developer Tools Track)
  • Chrome Dev Tools Reloaded [go]
  • Use Page Speed to Optimize Your Web Site For Mobile [go]
201 level (Developer Tools Track)
  • Bring the Cloud to Your IDE with the Google Plugin for Eclipse [go]
  • Building Game Development Tools with App Engine, GWT, and WebGL [go]
  • Fireside Chat with the GWT and Cloud Tooling Team [go]
  • GWT + HTML5: A web developers dream! [go]
  • GWT + UI Designer: Enterprise Web UIs Made Easy! [go]
  • Highly Productive GWT: Rapid Development with App Engine, Objectify, RequestFactory, and gwt-platform [go]
  • JavaScript Programming in the Large with Closure Tools [go]
  • Kick-ass Game Programming with Google Web Toolkit [go]
  • Using GWT and Eclipse to Build Great Mobile Web Apps [go]
  • Writing Web Apps in Go [go]
301 level (Developer Tools Track)
  • High-performance GWT: best practices for writing smaller, faster apps [go]
Geo Track
101 level (Geo Track)
  • Connecting People and Places [go]
  • Fireside Chat with the Geo team [go]
201 level (Geo Track)
  • Location Based App development using Google APIs [go]
  • Managing and visualizing your geospatial data with Fusion Tables [go]
  • Map your business, inside and out [go]
  • Secrets and surprises of the Google Geo APIs [go]
301 level (Geo Track)
  • Designing Maps Applications for Usability on Mobile and Desktop [go]
  • GIS with Google Earth and Google Maps [go]
  • High Performance KML for Maps and Earth [go]
  • Speedy Maps [go]
Google APIs Track
101 level (Google APIs Track)
  • An introduction to the +1 button [go]
  • Life of a Google API Developer [go]
  • The YouTube Caption API, Speech Recognition, and WebVTT captions for HTML5 [go]
  • Your Game + YouTube = Instant Community [go]
201 level (Google APIs Track)
  • Building a Business Web Presence using Blogger APIs [go]
  • Building Custom Client Libraries for Google APIs [go]
  • ClientLogin #FAIL [go]
  • Implementing Money Making SDKs [go]
  • Scalable Structured Markup [go]
  • YouTube`s iframe Player: The Future of Embedding [go]
301 level (Google APIs Track)
  • Using Google Chart Tools to Create Interactive Dashboards [go]
Google Apps Track
101 level (Google Apps Track)
  • Apps Marketplace: Best Practices and Integrations [go]
  • Developing innovative custom business solutions with Google Apps [go]
  • Enterprise Workflow with Apps Script [go]
  • Google Tasks API [go]
  • Launch and Grow Your Business App on the Google Apps Marketplace [go]
  • Using The Google Docs APIs To Store All Your Information In The Cloud [go]
201 level (Google Apps Track)
  • Putting Task Queues to Work [go]
  • Compliance and Security in the Cloud: Essential Administrative APIs for Google Apps Businesses [go]
  • Developing Apps, Add Ins and More with Google Apps Script [go]
Tech Talk Track
101 level (Tech Talk Track)
  • Accessibility: Building Products that Everyone Can Use [go]
  • Building Web Apps for Google TV [go]
  • Crisis Response 2.0 - Empowering Developers in Times of Crisis [go]
  • Google Ventures Meetup [go]
  • How to Get Your Startup Idea Funded by Venture Capitalists [go]
  • Ignite [go]
  • Make the Web Faster [go]
  • Programming Well with Others: Social Skills for Geeks [go]
  • Python@Google [go]
  • The Secrets of Google Pac-Man: A Game Show [go]
201 level (Tech Talk Track)
  • Cloud Robotics [go]
  • Identity and Data Access: OpenID and OAuth [go]
  • Java Puzzlers - Scraping the Bottom of the Barrel [go]
  • Learning to Love JavaScript [go]

'IT > Mobile Platforms' 카테고리의 다른 글

[Google I/O 2011] Keynote Day 2  (0) 2011.05.30
[Google I/O 2011] Keynote Day 1  (1) 2011.05.29
[Google I/O 2011] Intro & Session list  (0) 2011.05.21
Android Architecture Overview  (1) 2011.04.08
EFL(Enlightenment Foundation Library)이란 무엇인가?  (0) 2011.03.02
LiMo4? SLP?  (3) 2011.02.23

댓글을 달아 주세요

IT/Mobile Platforms | Posted by 철규님(최규철) 2011.04.08 00:34

Android Architecture Overview


Android Architecture Overview
Written by GyuCheol Choi on April 08, 2011



플랫폼? OS? 프레임워크?

안드로이드에 대한 설명에 앞서서, 필요한 몇 가지 용어를 정의하고 시작하려고 한다. 크게 중요하게 느껴지지 않을지도 모르는 용어 정의이지만 다른 개발자, 특히 외국 개발자와의 명확한 의사 소통을 위해서는 용어의 정확한 뜻, 정확한 사용법 등을 아는 것이 많은 도움이 된다(고 필자는 생각한다).

스마트폰이 보급되에 스마트폰용 어플리케이션 작성에 대한 관심이 어느 때보다 높아지고 있는 최근, 개발을 시작하려고할 때에 가장 먼저 듣게 되는 용어를 뽑으라면 '운영체제(OS)', '프레임워크', '플랫폼' 등일 것이다. 이 용어들에 대해 간단하게 알아보자.


운영체제(operating system)

운영체제는 CPU, 메모리, I/O 장치, 저장장치 등의 하드웨어 자원을 직접 관리할 뿐만아니라, 응용 프로그램이 이들 하드웨어 자원을 손쉽게 사용할 수 있도록하는 추상화 계층을 제공하는 시스템 소프트웨어를 말한다. 또한 응용 프로그램이 하드웨어의 CPU에서 직접 수행될 수 있도록하는 역할도 한다. 멀티태스킹을 지원하는 운영체제의 경우에는 동시에 실행되고 있는 여러 개의 응용 프로그램에 대한 자원 관리나 스케줄링 등의 기능도 지원한다.

대표적인 PC 운영체제로는 Microsoft Windows, Linux, Max OSX 등이 있다.


프레임워크(framework)

프레임워크는 정확한 의미를 가장 알기 힘든 용어 중의 하나라고 생각된다. 응용 프로그램 개발 과정을 살펴보면 각종 응용 프로그램에서 유사한 형태의 기능을 사용하는 경우가 많은데, 이 경우 개발자의 부담을 덜어주기 위해 프레임워크에서는 해당 기능에 필요한 API들을 묶어서 제공한다. 일반적으로는 이러한 API 집합 들을 프레임워크라고 본다. 물론 정확한 의미를 따지면 단순히 API 뿐만 아니라 코딩 패턴 등을 포함하기도 한다.

개발자의 입장에서는 라이브러리와 유사하다고 느낄 수도 있지만, 프레임워크는 그 프레임워크를 사용하는 응용 어플리케이션의 틀과 구조를 결정하며, 라이브러리와는 반대로 개발자의 코드를 직접 제어할수 도 있다.


플랫폼(platform)

위키백과(http://ko.wikipedia.org)의 내용을 요약하면 플랫폼은 '응용 프로그램의 동작을 가능하게 하는 하드웨어 아키텍처와 소프트웨어 프레임워크'를 말한다. 구체적으로 플랫폼은 '하드웨어 아키텍처, 운영체제, 프로그래밍 언어, 런타임 라이브러리, GUI' 등을 포함한다. 즉, 안드로이드 플랫폼이라고 한다고 해서 구글에서 배포하는 '안드로이드'만을 의미하는 것이 아니라, 그 안드로이드가 동작하기 위해 필요한 하드웨어 아키텍처부터 안드로이드 응용 프로그래밍 작성을 위한 개발 환경, 안드로이드가 사용자에게 보여지는 GUI까지 모두 포함한다.

예를 들어 설명을 하면, PC 플랫폼은 Intel 또는 AMD CPU를 기반으로 하는 하드웨어 아키텍처에 윈도우나 리눅스가 운영체제 및 GUI 지원을 위해 올라가고, 윈도우 및 리눅스용 응용 프로그램 개발/실행을 위한 라이브러리나 개발 툴 등을 포함한 것이라 할 수 있다.

대표적인 휴대용 기기 플랫폼은 iOS, 안드로이드, 바다 등을 들 수 있는데, 대부분 ARM CPU를 기반으로 하는 아키텍처를 채용하고, 각각의 OS 및 SDK 등을 제공한다.


명확하게 정리되지는 않지만, 위의 내용을 토대로 운영체제, 프레임워크, 플랫폼에 대해서 정리를 해보면, 플랫폼이 운영체제와 프레임워크를 포함한다는 것을 알 수있다. '안드로이드 플랫폼'을 예로 들면, 이 '플랫폼'은 ARM CPU를 기반으로 한 하드웨어 아키텍처 위에 리눅스를 '운영체제'로 탑재하고, 응용프로그램 작성 및 실행을 위한 어플리케이션 '프레임워크'들 을 포함하고 있다.

각각의 구성 요소에 대해서는 아래에서 자세히 설명하려고 한다.





안드로이드 플랫폼 아키텍처(Android Platform Architecture)

안드로이드 플랫폼 아키텍처에 대해서는 구글 안드로이드 개발팀의 Mike Cleron이 설명한 동영상 강의가 있다. 아래 링크에서 직접 볼 수 있으며, 아래 글의 내용도 이 동영상 강의 중의 일부를 정리한 것이다.

[동영상 바로가기] Androidology - Part 1 of 3 - Architecture Overview


System architecture

전체적인 구조를 먼저 살펴보기 위해 다음 그림을 보자.


안드로이드 플랫폼은 운영체제로 Linux Kernel을 사용하고 있으며, 이 위에 Library, Android Runtime, Application Framework, Application 등을 포함하고 있다.



Linux Kernel


안드로이드 플랫폼은 Linux 2.6 커널을 기반으로 하고 있으며, 이 리눅스를 HAL(Hardware Abstraction Layer)로 사용하고 있다. 안드로이드 플랫폼에서 리눅스를 채택한 이유는 이미 각종 드라이버에 대한 지원이 충분하고, 메모리 관리, 프로세스 관리, 보안 모델, 네트워킹 등 많은 운영체제 기본 요소들이 이미 구현되어 있고 또한 충분한 시간 동안 검증을 받았기 때문이다.



Libraries

안드로이드 플랫폼에 포함된 라이브러리들은 모두 C나 C++로 작성되었다. Mike는 이 부분이 안드로이드 플랫폼의 강력함의 원천이라고 설명한다.


Surface manager: 실행되는 여러 어플리케이션이 화면에 어떻게 나타나는지를 관리한다.
OpenGL/ES, SGL: 안드로이드 플랫폼 그래픽 라이브러리의 핵심. OpenGL/ES는 3D 그래픽을 지원하며, 장치에 따라 H/W 가속 기능 또한 지원한다. SGL은 대부분의 어플리케이션이 사용하는 2D 그래픽을 위한 것이다. 안드로이드 플랫폼의 그래픽 라이브러리 특징 중 흥미로운 점은 한 어플리케이션에서 3D 그래픽과 2D 그래픽을 혼합해서 사용할 수 있다는 점이다.
Media Framework: Media Framework는 OHA(Open Handset Alliance)의 회원인 PacketVideo에서 지원되는 라이브러리로, 미디어 지원을 위한 각종 코덱을 포함하고 있다.
FreeType: Font를 그려주기 위한 라이브러리
SQLite: Data 저장
WebKit: 구글 브라우저의 코어로 사용되고 있는 오픈 소스 브라우저 엔진으로 모바일 장치의 작은 화면에서도 잘 동작하도록 수정되어 있다.



Android Runtime


Dalvik Virtual Machine: .Class, .Jar 파일을 변환(converting)해서 얻어지는 바이트코드(bytecodes)인 .dex 파일을 실행한다. .dex 파일은 저성능 프로세서(small processor)에서도 잘 동작하도록 효율적인 메모리 사용, 프로세스간 데이터 공유를 위한 자료구조 등을 지원한다. 이러한 효율성 덕분에 Dalvik Virtual Machine은 동시에 여러개의 인스턴스를 실행해서 어플리케이션을 실행할 수 있다.
Core library: Java 언어로 쓰여진 부분으로, Container, Utility, I/O 등 필수적인 기능을 제공한다.



Application Framework

Core library와 마찬가지로 Java 언어로 쓰여진 부분으로, 실제로 대부분의 어플리케이션이 사용하는 툴킷이다.


Activity manager: 어플리케이션의 Life Cycle을 관리하고, common backstack을 포함하고 있어서 다른 프로세스에서 실행 중인 어플리케이션들간의 원활한 이동(navigation)을 지원한다.
Package manager: 장치에 어떤 어플리케이션들이 설치되어 있는지, 각각의 어플리케이션이 어떤 기능을 수행하는지를 관리한다.
Windows manager: 화면에 보이는 Window를 관리하는 부분으로 Library 부분의 Surface manager에 대한 Java 추상화 모듈이라고 볼 수 있다.
Telephony manager: 전화 기능 지원을 위한 API들을 포함하고 있다.
Content provider: 안드로이드 플랫폼의 특이 사항 중 하나로, 어플리케이션간의 data 공유를 가능하게 해주는 역할을 한다. 폰의 전화번호부(contacts) 어플리케이션이 Content manager를 사용하고 있어서, 전화번호나 이름 등의 데이터를 필요로하는 어플리케이션에서는 이를 이용해서 데이터를 가져다 쓸 수 있다.
Resource manager: 지역화된 문자열, 비트맵/벡터 이미지, 레이아웃 정의 파일 등 어플리케이션에서 코드 이외의 부분을 관리한다.
View system: 버튼, 리스트 등과 같은 UI 구성 요소를 제공하며, 이벤트 dispatching, 레이아웃, 드로잉 등을 관리한다.
Location manager: GPS 등을 이용한 위치 기반 서비스에 필요한 기능을 제공한다.
Notification manager: 상단의 Notification bar를 사용할 수 있게 해준다.
XMPP service: XML을 기반으로 한 메세지 기반 미들웨어를 위한 오픈 표준 통신 프로토콜인 XMPP(eXtensible Message and Presence Protocol)을 제공한다.



Applications


전화걸기, 전화번호부 등 기본 어플리케이션 및 사용자 설치 어플리케이션이 위치하는 부분으로, 모든 어플리케이션은 바로 아래의 Application framework에서 제공하는 기능을 이용하여 만들어진다.




한두페이지의 글로 하나의 플랫폼에 대한 이해를 한다는 것은 불가능한 일이지만, 간략하게 안드로이드 플랫폼의 기본 구조에 대해서 정리해 보았다. 일반적인 사용자 어플리케이션을 작성하는 개발자라면 특별히 몰라도 되지만, 아는 만큼 더 나은 어플리케이션을 작성할 수 있지 않을까 생각한다.


댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 소혼 2011.04.20 09:09 신고

    추가로 WebOS가 뭔지 정리 부탁해도 되까? ㅋㅋ

IT/Mobile Platforms | Posted by 철규님(최규철) 2011.03.02 00:59

EFL(Enlightenment Foundation Library)이란 무엇인가?



EFL이란 무엇인가?
by GyuCheol Choi(gc8134.choi@gmail.com) on 01 Mar 2011

삼성 SLP 또는 LiMo4 플랫폼의 아키텍처를 보면(2011/02/23 - [Dev/LiMo/SLP/EFL] - LiMo4? SLP?), UI 프레임워크로 GTK+와 EFL을 지원한다고 나와있다. GTK+는 Gimp ToolKit의 약자로 이미 오래전부터 사용되어 온 프레임워크로 관련 정보를 많이 찾을 수 있지만, EFL에 대한 정보는 아직 많이 제공되고 있지 않다. 간단하게 EFL이 무엇인지 정리를 해보려고 한다.

Enlightenment? EFL?
Enlightenment는 Linux/X11 등을 위한 Windows manager를 의미하기도 하고, 기존의 toolkit 보다 더 적은 작업으로 더 보기 좋은 UI 제작을 가능하게 하는 것을 목표로 하는 프로젝트의 이름을 의미하기도 한다. 이 개발 환경은 휴대폰과 같은 소형기기부터 노트북, 데스크탑과 같은 기기까지 지원한다.

EFL은 Enlightenment Foundation Library의 약자로 Enlightenment windows manager의 GUI 구현을 위한 라이브러리인데, 정확하게는 각각의 목적과 기능을 가진 라이브러리의 셋으로 볼 수 있다.

Enlightenment 홈페이지(http://www.enlightenment.org)에서 EFL의 구조를 찾으면 세 가지의 그림을 찾을 수 있다.

Figure 1. EFL stack with essentials

 
Figure 2. EFL stack by Marketing department


Figure 3. EFL stack in  programmer's view


전체적인 구조를 간단하게 나타내기 위한 것이 Figure 1이며, 상세한 정보를 나타내는 것이 Figure 2와 Figure 3인데 동일한 contents로 이렇게 다른 view가 나온 것에 대해서는 관련된 설명을 보자.

다양한 라이브러리의 구조 설명을 위해서 도입된 박스 형태의 도식(Figure 2)은 상위 레벨은 하위 레벨에 의존성을 가지고, 프로그래머는 상위 레벨의 요소들만 이용해야 하며 하위 레벨의 요소들을 직접 컨트롤해서는 안된다는 의미를 가진다. 하지만 EFL 라이브러리들은 이러한 상하 의존적 관계를 구성하고 있는 것이 아니기 때문에 Figure 2와 같이 상화 관계를 강조한 도식보다는 FIgure 3과 같이 상호 작용을 강조한 도식이 실제적인 EFL의 구조를 설명하는데 더 적합하다.

Figure 3을 정확히 이해하기 위해서는 각각의 요소들이 무엇인지에 대한 이해가 필요하므로, 간단하게 이것에 대해서 알아보고 다시 FIgure 3에 대해서 이야기해 보자.

  • Ecore glue library
    Ecore는 GTK+의 Glib와 비교할 수 있는데, EFL의 주요 요소들을 하나로 모아서 사용자 어플리케이션이 사용할 수 있도록 해주는 역할을 한다. data structure, IPC mechanism, easy networking, helper function 등을 제공하고 UNIX/X 시스템의 일부 common 기능에 대한 abstraction도 제공한다. Graphic적인 요소가 없는 어플리케이션에서도 Ecore를 사용할 수 있다.
  • Evas canvas
    Evas는 강력한 canvas로, X11 toolkit의 canvas widget보다 훨씬 더 진일보한 환경을 제공한다. Evas는 스크린에 어떤 것이 렌더링되었는지에 대한 정보를 모두 보유하고 있으며, 각각의 Evas object들은 "draw and forget" object의 성격을 띈다 . 즉, 사용자가 rectangle을 그리면 이것을 인지하고, 외부 data structure의 도움 없이도 move나 resize 등을 가능하게 하며, 프로그래머는 각 object의 state를 저장하고 있을 필요도 없고, redrawing이나 repainting에 대해서도 신경 쓸 필요가 없다. Evas는 매우 최적화되어 있어서 제한된 memory나 저수준의 processor를 가진 임베디드 시스템에서도 사용이 가능하다. X11의 back-end로 OpenGL이나 Xrender, frame-buffer device에서도 동작한다.
  • Edje layout engine
    Edje를 이용하면 C 코드를 단 한 줄도 코딩하지 않고 GUI를 구현할 수 있다. 인터페이스가 어떻게 구성되고 스크린에 어떻게 나타나며 어떻게 동작하는지만 작성하면, Edje가 low level code와 하나의 테마 파일에 모든 것이 포함된 번들을 만들어준다. 이를 이용하면 어플리케이션을 C 코드에 대해서는 전혀 모르는 graphical part와 GUI에 대해서는 전혀 모르는 functionality part로 나누어서 작성할 수 있다. 덕분에 GUI를 건드리지 않고 기능을 변경하거나, 기능을 변경하지 않고 GUI를 수정하는 등의 작업을 매우 쉽게 할 수 있다. 어플리케이션의 사용자 또한 자신의 테마를 만들어서 곧바로 적용할 수 있다.
  • Eet storage library
    대부분의 테마들은 하나의 파일로 전달되지만 설치 과정에서 압축이 풀리고 어플리케이션은 이 압축이 풀린 테마 파일'들'을 사용한다. Eet는 전혀 다른 방법을 사용하는데, 테마 파일은 압축이 풀리지 않은 상태에 있다가 어플리케이션의 UI를 구성하기 위해 필요한 때 Eet에 의해서 읽혀진다. 또한 Eet는 일반적인 storage의 역할도 한다.
  • Embryo scripting language
    Embryo는 마치 HTML에 Javascript, Flash, AJAX 등이 더해져서 동적인 UI가 가능해진 것 처럼, 테마 구성에 있어서 더 동적인 UI 구조를 만들 수 있게 한다.
  • Epeg thumbnailing library
    가장 많이 사용되고 있는 이미지 포멧이 JPEG이기 때문에, 이에 대한 thumbnail 기능 지원을 위해 JPEG에 최적화된 Epeg이 제공된다.
  • Epsilon thumbnailing library
    Epsilon은 PNT, JPEG 및 imlib2, Evas에서 지원하는 이미지 포멧에 대한 thumbnail을 제공한다. 경우에 따라서는 Epeg를 사용하지 않고 Epsilon을 사용해서 JPEG 파일을 지원할 수도 있다.
  • Esmart utility library
    Esmart는 Edje에 추가적인 능력을 더해주는 helper 라이브러리이다. Esmart를 이용하면 GUI를 위한 컨테이너를 사용할 수도 있고, X root window에 기반한 어플리케이션에서 transparent 효과를 줄 수도 있다. thumbnail 지원을 위한 Epsilon 라이브러리에 대한 인터페이스를 제공하고, 툴킷으로서의 기능(text entries, file dialog box, object drag 등)도 추가해준다.
  • EWL widget set
    EWL을 이용하면 어플리케이션이 위젯의 형태를 띄도록 할 수 있다.
  • Imlib2
    Imlib2는 EFL 이전에 등장한 초고속 이미지 처리 라이브러리로 EFL의 라이브러리는 아니다. 많은 시스템에서 이미지 처리를 위해서 사용되고 있으며 EFL에서는 Epsilon 라이브러리가 대표적이다.

Figure 3. EFL stack in  programmer's view again


이제 다시 Figure 3을 보고 EFL 라이브러리들의 구조에 대해서 알아보자. 

Figure 3을 보면 각각의 라이브러리들은 상하 의존 관계를 가지고 있지 않으며, 상호 연결 관계에 있어서도 어떠한 방향성도 가지지 않는다. 또한 각 모듈의 크기는 전체 EFL에서의 중요도를 나타낸다.

위의 도식을 설명하면, Evas는 명백하게 EFL에서 가장 중요한 요소이며, Edje는 Evas에 그래픽적 요소를 더해주는 infrastructure 역할을 한다. App1은 도식으로 보아 GUI를 지원하지 않는 콘솔 프로그램일 것이며, App2는 일반적인 형태의 어플리케이션, App3는 위젯 형태의 어플리케이션일 것이다.


아래의 공지를 보면 알 수 있지만, EFL은 아직 완성된 형태의 구조를 갖춘 라이브러리로 보기에는 무리가 있다. 
 

Enlightenment News

1.0 Release of core EFL

Carsten Haitzler - Jan 29, 2011 at 03:40 AM

Finally after a long time coming, we are pleased to announce the 1.0 release of the core EFL libraries (With the exception of Eet at 1.4). The following libraries have been released:

You can download the respective libraries from our Download Page.




아직 1.0까지 밖에 릴리즈가 안된 상태이어서 앞으로도 많은 변화가 있을 것으로 예상된다.

홈페이지의 자료를 찾다보면 Doc의 문서와 Release 관련 문서에서 많은 차이점들을 찾을 수 있는데, 정확한(사실은 더 최신의) 정보를 얻기 위해서는 News의 공지를 바탕으로 Release 관련 정보를 확인하는 것이 좋은 방법일 듯 하다.

댓글을 달아 주세요



티스토리 툴바