전체적인 구조를 간단하게 나타내기 위한 것이 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 라이브러리들의 구조에 대해서 알아보자.
Figure 3을 보면 각각의 라이브러리들은 상하 의존 관계를 가지고 있지 않으며, 상호 연결 관계에 있어서도 어떠한 방향성도 가지지 않는다. 또한 각 모듈의 크기는 전체 EFL에서의 중요도를 나타낸다.
위의 도식을 설명하면, Evas는 명백하게 EFL에서 가장 중요한 요소이며, Edje는 Evas에 그래픽적 요소를 더해주는 infrastructure 역할을 한다. App1은 도식으로 보아 GUI를 지원하지 않는 콘솔 프로그램일 것이며, App2는 일반적인 형태의 어플리케이션, App3는 위젯 형태의 어플리케이션일 것이다.
아래의 공지를 보면 알 수 있지만, EFL은 아직 완성된 형태의 구조를 갖춘 라이브러리로 보기에는 무리가 있다.
Enlightenment News
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:
- Eina - 1.0.0
- Eet - 1.4.0
- Evas - 1.0.0
- Ecore - 1.0.0
- Embryo - 1.0.0
- Edje - 1.0.0
- E_Dbus - 1.0.0
- Efreet - 1.0.0
- Eeze - 1.0.0
You can download the respective libraries from our Download Page.
홈페이지의 자료를 찾다보면 Doc의 문서와 Release 관련 문서에서 많은 차이점들을 찾을 수 있는데, 정확한(사실은 더 최신의) 정보를 얻기 위해서는 News의 공지를 바탕으로 Release 관련 정보를 확인하는 것이 좋은 방법일 듯 하다.
'IT > Mobile Platforms' 카테고리의 다른 글
[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 |
바다(bada), 삼성의 첫번째 스마트폰 플랫폼 이야기 (0) | 2011.02.22 |
Install JDK and set environment variables for Java (0) | 2010.11.12 |
댓글을 달아 주세요