[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)

45
EFL 살펴보기 (Enlightenment Foundation Libraries) 박춘언 ([email protected]) 2014 EFL 한국 커뮤니티 세미나 2014.10.26

Transcript of [KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)

EFL 살펴보기 (Enlightenment Foundation Libraries)

박춘언 ([email protected])

2014 EFL 한국 커뮤니티 세미나

2014.10.26

2 2

삼성전자 소프트웨어 센터 근무

타이젠 플랫폼 UIFW 개발 (2009 ~ )

EFL 오픈 소스 커미터 활동 (2011 ~ )

EFL 국내 활성화를 위한 EFL Korea Community 운영 중

Blog. www.hermet.pe.kr

Email. [email protected]

박 춘 언

3 3

EFL 이란?

• GUI 애플리케이션 개발 툴킷

• 애플리케이션 구현에 필요한 다양한 편의 기능 제공

EFL Building Blocks

4 4

EFL 이란?

• 애플리케이션에서 EFL로 할 수 있는 것들

• GUI

• 테마

• 애니메이션

• 위젯

• 사용자 입력 이벤트 (키, 마우스 …)

• 모바일, 데스크탑 지원

• IPC / 소켓 통신

• 3D 그래픽

• 비디오/사운드 출력

• 기타

5 5

EFL 이란?

• 타이젠 앱 개발

7 7

EFL 이란?

• EFL 적용 사례

• NX300M

< (unofficial) EFL Logo>

8 8

EFL 이란?

• EFL 적용 사례

• 삼성 기어 2, 기어 2 네오, 기어 S

9 9

Enlightenment 란?

• 원래는 윈도우 관리자 이름

• 처음에는 GNOME 윈도우 관리자로서 제공

• 현재는 프로젝트 이름

• 윈도우 관리자와 라이브러리로 구성

• Enlightenment 데스크탑/윈도우 관리자

• E16(DR16), E17(DR17), E18(DR18), E19(DR19)

• EFL (Enlightenment Foundation Libraries)

10 10

Enlightenment 란?

Enlightenment 윈도우 관리자

11 11

EFL 역사

EFL Imlib2 Imlib/Fnlib

Enlightenment

(0.1 – 0.19x)

1996 1999 2014 2001

EFL 1.11

12 12

EFL in 타이젠?

Graphics and UI consist of the system graphic and UI stacks, which includes the EFL

(Enlightenment Foundation Libraries), an X11-based window management system, input

methods, and OpenGL® ES*.

The heart of the Graphics component, the EFL, is a suite of libraries. It is for creating rich graphics with ease, for all UI resolutions. The libraries build UIs in layers, allowing for 3D

transformations and more. The EFL includes the Evas canvas API library and the elementary

widget library.

13 13

EFL 특징

• 성능

• 저사용 메모리

• 다양한 백엔드 엔진 지원

• GUI와 프로그램 로직 분할

• 변경 가능한 테마

• 스크린 크기 호환성

• 애니메이션

• 다국어 지원

• H/W 가속

• 이식성

• 진입 장벽

• 자료 부족

EFL 특징 - 성능

GTK+, QT 대비?

• 타이젠 전신 모델에서는 GTK+, X11, DirectFB 혼합 사용

• EFL 도입 후 큰 성능 개선 이룸

• 다양한 시나리오에서 고성능 소프트웨어 렌더링

• 다년간 OpenGL & OpenGL ES 지원

• 일반 스마트폰 기기에서 60fps 성능 출력

EFL 특징 - 성능

GTK+, QT 대비?

• Unity 대비 Enlightenment의 메모리 사용량

• X11 기반의 “failsafe” 영역의 메모리 사용량 • Unity (11.04) – 168Mb

• Enlightenment 0.17 – 65Mb

• Unity와 Enlightenment의 제공 기능이 비슷

• 컴퍼지터(OpenGL), 풀스크린 월페이퍼, 애플리케이션 런처, 아이콘,

파일 관리자 등

EFL 특징 - 메모리

• 모바일 기기의 메모리 제약 • 128Mb, 256Mb, maybe 512Mb

• 모바일 기기는 대부분 swap 이용 불가 • Flash 메모리는 수명이 존재하며 쓰기 횟수에 제한적임

• 저가형 기기에서는 GPU가 미탑재 • 소프트웨어 렌더링으로 대체

• OpenGL 은 경우에 따라 비효율 • 텍스처는 성능에 유리할 수 있으나 메모리 사용량이 증가함

EFL 특징 - 메모리

< QmlMiner (QT) > < elemines (EFL) >

18 18

EFL 특징 - 메모리

< QmlMiner (QT) > < elemines (EFL) >

19 19

EFL 특징 - 메모리

EFL 특징 – 벡엔드 엔진

• X11 (OpenGL, Xlib & XCB)

• Wayland (OpenGL & SHM)

• Direct Framebuffer

• DRM

• Memory buffers

• PS3 Native

• Windows (GDI & DirectDraw)

• ETC

EFL 특징 – 독립된 로직 / GUI

EFL 특징 – 테마

다양한 Look & Feel을 지원하기 위한 테마 변경 가능

EFL 특징 – GUI 크기 호환성

24 24

EFL 특징 – 애니메이션

• 여러 라이브러리에서 애니메이션 편의 기능 제공

• edje

• elementary

• efx

EFL 특징 – 언어 바인딩

• C++

• Lua

• Python

• Javascript

• Ruby

• Vala

• Perl

• …

27 27

EFL 특징 – No Threadsafe

• Thread Safe 하지 않음

• Use

• Ecore_Thread

• Ecore_Pipe

28 28

EFL 특징 – 플랫폼 호환성

• 리눅스, 윈도우, 맥, BSD …

• 모듈화

• 환경 변수

• eina

29 29

EFL 특징 – 진입 장벽

• 애플리케이션 개발자들이 여러 설정을 직접 결정해야 함

• 익히는데 시간이 필요

• 오픈 소스 커뮤니티 또는 EFL 한국 커뮤니티에 문의

• 충분하지 않은 튜토리얼과 책!

EFL 블록 다이어그램

Embryo

Eet

Evas

Ecore

Edje

Eina

Efreet Eldbus Ethumb

Elementary

Applications, Libraries, Services

BASE OPERATIING SYSTEM /DISPLAY ETC.

BINDINGS(Elev8, python, perl, vala …)

Eio Eeze

Elementary

Emotion

31 31

EFL 라이브러리 - EINA

Eina

자료 구조 라이브러리

32 32

EFL 라이브러리 - EVAS

Evas (E + canVAS)

캔버스/렌더링 엔진

33 33

EFL 라이브러리 - ECORE

Ecore (E + Core)

이벤트 루프 라이브러리

34 34

EFL 라이브러리 - EDJE

Edje

고급 GUI 레이아웃 & 스크립트 지원 라이브러리

35 35

EFL 라이브러리 - ELEMENTARY

Elementary

위젯 라이브러리

36 36

EFL Libraries – 기타 ● 데이터 코딩/디코딩 및 압축 (Eet)

● 바이트코드 가상 머신 (Embryo)

● Freedesktop.org 표준화 지원 (Efreet)

● Dbus 통합 레퍼 라이브러리 (Eldbus)

● 비디오/오디오 재생 라이브러리 (Emotion)

37 37

EFL 라이브러리 – 기타 ● 비동기 입출력 (Eio)

● Udev 하드웨어 탐지 (Eeze)

● 썸네일 (Ethumb)

● V8 런타임 기반 자바스크립트 엔진 (Elev8)

● 물리 엔진 (EPhysics)

EFL 오픈 소스 커뮤니티 • 공식 사이트

• www.enlightenment.org

• 메일링 리스트

• http://lists.sourceforge.net/lists/listinfo/enlightenment-devel

• http://lists.sourceforge.net/lists/listinfo/enlightenment-announce

• http://lists.sourceforge.net/lists/listinfo/enlightenment-users

• IRC

• irc.freenode.net/6667

• #e, #edevelop

• GIT

• $ git clone http://git.enlightenment.org/core/efl.git

• $ git clone http://git.enlightenment.org/core/elementary.git

• $ git clone http://git.enlightenment.org/core/enlightenment.git

EFL 오픈 소스 커뮤니티

전 세계 66명의 EFL 커미터

EFL 레퍼런스

http://docs.enlightenment.org

EFL 레퍼런스

http://git.enlightenment.org/core/efl.git/tree/src/examples

EFL 레퍼런스

Elementary 테스트 애플리케이션 (elementary_test)

소스코드

elementary/src/bin/test*.c

EFL 레퍼런스

Elementary Config 애플리케이션 (elementary_config)

월간 마이크로 소프트웨어 연재 (2012.07 ~ 2012.11)

EFL 레퍼런스

감사합니다.