SlideShare a Scribd company logo
EFL 살펴보기
(Enlightenment Foundation Libraries)
박춘언 (hermet@hermet.pe.kr)
2014 EFL 한국 커뮤니티 세미나
2014.10.26
22
삼성전자 소프트웨어 센터 근무
타이젠 플랫폼 UIFW 개발 (2009 ~ )
EFL 오픈 소스 커미터 활동 (2011 ~ )
EFL 국내 활성화를 위한 EFL Korea Community 운영 중
Blog. www.hermet.pe.kr
Email. hermet@hermet.pe.kr
박 춘 언
33
EFL 이란?
• GUI 애플리케이션 개발 툴킷
• 애플리케이션 구현에 필요한 다양한 편의 기능 제공
EFL Building Blocks
44
EFL 이란?
• 애플리케이션에서 EFL로 할 수 있는 것들
• GUI
• 테마
• 애니메이션
• 위젯
• 사용자 입력 이벤트 (키, 마우스 …)
• 모바일, 데스크탑 지원
• IPC / 소켓 통신
• 3D 그래픽
• 비디오/사운드 출력
• 기타
55
EFL 이란?
• 타이젠 앱 개발
66
EFL 이란?
• EFL 적용 사례
•I-Kitchen
•Electrolux + ProFUSION, Brazil
•http://www.youtube.com/watch?v=5ZpxHgBoi0s
77
EFL 이란?
• EFL 적용 사례
• NX300M
< (unofficial) EFL Logo>
88
EFL 이란?
• EFL 적용 사례
• 삼성 기어 2, 기어 2 네오, 기어 S
99
Enlightenment 란?
• 원래는 윈도우 관리자 이름
• 처음에는 GNOME 윈도우 관리자로서 제공
• 현재는 프로젝트 이름
• 윈도우 관리자와 라이브러리로 구성
• Enlightenment 데스크탑/윈도우 관리자
• E16(DR16), E17(DR17), E18(DR18), E19(DR19)
• EFL (Enlightenment Foundation Libraries)
1010
Enlightenment 란?
Enlightenment 윈도우 관리자
1111
EFL 역사
EFLImlib2Imlib/Fnlib
Enlightenment
(0.1 – 0.19x)
1996 1999 20142001
EFL 1.11
1212
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.
1313
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) >
1818
EFL 특징 - 메모리
< QmlMiner (QT) >< elemines (EFL) >
1919
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 크기 호환성
2424
EFL 특징 – 애니메이션
• 여러 라이브러리에서 애니메이션 편의 기능 제공
• edje
• elementary
• efx
EFL 특징 – 언어 바인딩
• C++
• Lua
• Python
• Javascript
• Ruby
• Vala
• Perl
• …
EFL 특징 – H/W 가속
• OpenGL, OpenGL-ES
• MMX, SSE3, NEON과 같은 SIMD 벡터 연산 활용
2727
EFL 특징 – No Threadsafe
• Thread Safe 하지 않음
• Use
• Ecore_Thread
• Ecore_Pipe
2828
EFL 특징 – 플랫폼 호환성
• 리눅스, 윈도우, 맥, BSD …
• 모듈화
• 환경 변수
• eina
2929
EFL 특징 – 진입 장벽
• 애플리케이션 개발자들이 여러 설정을 직접 결정해야 함
• 익히는데 시간이 필요
• 오픈 소스 커뮤니티 또는 EFL 한국 커뮤니티에 문의
• 충분하지 않은 튜토리얼과 책!
EFL 블록 다이어그램
Embryo
Eet
Evas
Ecore
Edje
Eina
Efreet EldbusEthumb
Elementary
Applications, Libraries, Services
BASE OPERATIING SYSTEM /DISPLAY ETC.
BINDINGS(Elev8, python, perl, vala …)
Eio Eeze
Elementary
Emotion
3131
EFL 라이브러리 - EINA
Eina
자료 구조 라이브러리
3232
EFL 라이브러리 - EVAS
Evas (E + canVAS)
캔버스/렌더링 엔진
3333
EFL 라이브러리 - ECORE
Ecore (E + Core)
이벤트 루프 라이브러리
3434
EFL 라이브러리 - EDJE
Edje
고급 GUI 레이아웃 & 스크립트 지원
라이브러리
3535
EFL 라이브러리 - ELEMENTARY
Elementary
위젯 라이브러리
3636
EFL Libraries – 기타
● 데이터 코딩/디코딩 및 압축 (Eet)
● 바이트코드 가상 머신 (Embryo)
● Freedesktop.org 표준화 지원 (Efreet)
● Dbus 통합 레퍼 라이브러리 (Eldbus)
● 비디오/오디오 재생 라이브러리 (Emotion)
3737
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 레퍼런스
감사합니다.

More Related Content

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

Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스
Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스
Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스
Daniel Juyung Seo
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
Young Soo Kim
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
강 민우
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
NDOORS
 
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
Sanghun Yun
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Daniel Juyung Seo
 
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
Daniel Juyung Seo
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발MinGeun Park
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim
 
1. klaytn intro
1. klaytn intro1. klaytn intro
1. klaytn intro
전 민규
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
Sewon Ann
 
1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이
Young Jin Suh
 
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
Amazon Web Services Korea
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
JinKyoungHeo
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
Chris Ohk
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5NAVER D2
 
[온라인 세미나 발표자료] RAD Studio XE7!
[온라인 세미나 발표자료] RAD Studio XE7![온라인 세미나 발표자료] RAD Studio XE7!
[온라인 세미나 발표자료] RAD Studio XE7!
Devgear
 

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

Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스
Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스
Tizen 핵심 툴킷 EFL로 빠르고 가벼운 앱 개발하기 - SOSCON 2014 삼성오픈소스컨퍼런스
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
 
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
1. klaytn intro
1. klaytn intro1. klaytn intro
1. klaytn intro
 
-
--
-
 
-
--
-
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이
 
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5
 
[온라인 세미나 발표자료] RAD Studio XE7!
[온라인 세미나 발표자료] RAD Studio XE7![온라인 세미나 발표자료] RAD Studio XE7!
[온라인 세미나 발표자료] RAD Studio XE7!
 

More from EnlightenmentProject

[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
EnlightenmentProject
 
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
EnlightenmentProject
 
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
EnlightenmentProject
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
EnlightenmentProject
 
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
EnlightenmentProject
 
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary	[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
EnlightenmentProject
 
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
EnlightenmentProject
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
EnlightenmentProject
 
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)EnlightenmentProject
 
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
EnlightenmentProject
 

More from EnlightenmentProject (14)

[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
 
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
 
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
 
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
 
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
 
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
 
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
 
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
 
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary	[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
 
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
 
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
 
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
 

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

  • 1. EFL 살펴보기 (Enlightenment Foundation Libraries) 박춘언 (hermet@hermet.pe.kr) 2014 EFL 한국 커뮤니티 세미나 2014.10.26
  • 2. 22 삼성전자 소프트웨어 센터 근무 타이젠 플랫폼 UIFW 개발 (2009 ~ ) EFL 오픈 소스 커미터 활동 (2011 ~ ) EFL 국내 활성화를 위한 EFL Korea Community 운영 중 Blog. www.hermet.pe.kr Email. hermet@hermet.pe.kr 박 춘 언
  • 3. 33 EFL 이란? • GUI 애플리케이션 개발 툴킷 • 애플리케이션 구현에 필요한 다양한 편의 기능 제공 EFL Building Blocks
  • 4. 44 EFL 이란? • 애플리케이션에서 EFL로 할 수 있는 것들 • GUI • 테마 • 애니메이션 • 위젯 • 사용자 입력 이벤트 (키, 마우스 …) • 모바일, 데스크탑 지원 • IPC / 소켓 통신 • 3D 그래픽 • 비디오/사운드 출력 • 기타
  • 6. 66 EFL 이란? • EFL 적용 사례 •I-Kitchen •Electrolux + ProFUSION, Brazil •http://www.youtube.com/watch?v=5ZpxHgBoi0s
  • 7. 77 EFL 이란? • EFL 적용 사례 • NX300M < (unofficial) EFL Logo>
  • 8. 88 EFL 이란? • EFL 적용 사례 • 삼성 기어 2, 기어 2 네오, 기어 S
  • 9. 99 Enlightenment 란? • 원래는 윈도우 관리자 이름 • 처음에는 GNOME 윈도우 관리자로서 제공 • 현재는 프로젝트 이름 • 윈도우 관리자와 라이브러리로 구성 • Enlightenment 데스크탑/윈도우 관리자 • E16(DR16), E17(DR17), E18(DR18), E19(DR19) • EFL (Enlightenment Foundation Libraries)
  • 12. 1212 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. 1313 EFL 특징 • 성능 • 저사용 메모리 • 다양한 백엔드 엔진 지원 • GUI와 프로그램 로직 분할 • 변경 가능한 테마 • 스크린 크기 호환성 • 애니메이션 • 다국어 지원 • H/W 가속 • 이식성 • 진입 장벽 • 자료 부족
  • 14. EFL 특징 - 성능 GTK+, QT 대비? • 타이젠 전신 모델에서는 GTK+, X11, DirectFB 혼합 사용 • EFL 도입 후 큰 성능 개선 이룸 • 다양한 시나리오에서 고성능 소프트웨어 렌더링 • 다년간 OpenGL & OpenGL ES 지원 • 일반 스마트폰 기기에서 60fps 성능 출력
  • 15. EFL 특징 - 성능 GTK+, QT 대비? • Unity 대비 Enlightenment의 메모리 사용량 • X11 기반의 “failsafe” 영역의 메모리 사용량 • Unity (11.04) – 168Mb • Enlightenment 0.17 – 65Mb • Unity와 Enlightenment의 제공 기능이 비슷 • 컴퍼지터(OpenGL), 풀스크린 월페이퍼, 애플리케이션 런처, 아이콘, 파일 관리자 등
  • 16. EFL 특징 - 메모리 • 모바일 기기의 메모리 제약 • 128Mb, 256Mb, maybe 512Mb • 모바일 기기는 대부분 swap 이용 불가 • Flash 메모리는 수명이 존재하며 쓰기 횟수에 제한적임 • 저가형 기기에서는 GPU가 미탑재 • 소프트웨어 렌더링으로 대체 • OpenGL 은 경우에 따라 비효율 • 텍스처는 성능에 유리할 수 있으나 메모리 사용량이 증가함
  • 17. EFL 특징 - 메모리 < QmlMiner (QT) >< elemines (EFL) >
  • 18. 1818 EFL 특징 - 메모리 < QmlMiner (QT) >< elemines (EFL) >
  • 19. 1919 EFL 특징 - 메모리
  • 20. EFL 특징 – 벡엔드 엔진 • X11 (OpenGL, Xlib & XCB) • Wayland (OpenGL & SHM) • Direct Framebuffer • DRM • Memory buffers • PS3 Native • Windows (GDI & DirectDraw) • ETC
  • 21. EFL 특징 – 독립된 로직 / GUI
  • 22. EFL 특징 – 테마 다양한 Look & Feel을 지원하기 위한 테마 변경 가능
  • 23. EFL 특징 – GUI 크기 호환성
  • 24. 2424 EFL 특징 – 애니메이션 • 여러 라이브러리에서 애니메이션 편의 기능 제공 • edje • elementary • efx
  • 25. EFL 특징 – 언어 바인딩 • C++ • Lua • Python • Javascript • Ruby • Vala • Perl • …
  • 26. EFL 특징 – H/W 가속 • OpenGL, OpenGL-ES • MMX, SSE3, NEON과 같은 SIMD 벡터 연산 활용
  • 27. 2727 EFL 특징 – No Threadsafe • Thread Safe 하지 않음 • Use • Ecore_Thread • Ecore_Pipe
  • 28. 2828 EFL 특징 – 플랫폼 호환성 • 리눅스, 윈도우, 맥, BSD … • 모듈화 • 환경 변수 • eina
  • 29. 2929 EFL 특징 – 진입 장벽 • 애플리케이션 개발자들이 여러 설정을 직접 결정해야 함 • 익히는데 시간이 필요 • 오픈 소스 커뮤니티 또는 EFL 한국 커뮤니티에 문의 • 충분하지 않은 튜토리얼과 책!
  • 30. EFL 블록 다이어그램 Embryo Eet Evas Ecore Edje Eina Efreet EldbusEthumb Elementary Applications, Libraries, Services BASE OPERATIING SYSTEM /DISPLAY ETC. BINDINGS(Elev8, python, perl, vala …) Eio Eeze Elementary Emotion
  • 31. 3131 EFL 라이브러리 - EINA Eina 자료 구조 라이브러리
  • 32. 3232 EFL 라이브러리 - EVAS Evas (E + canVAS) 캔버스/렌더링 엔진
  • 33. 3333 EFL 라이브러리 - ECORE Ecore (E + Core) 이벤트 루프 라이브러리
  • 34. 3434 EFL 라이브러리 - EDJE Edje 고급 GUI 레이아웃 & 스크립트 지원 라이브러리
  • 35. 3535 EFL 라이브러리 - ELEMENTARY Elementary 위젯 라이브러리
  • 36. 3636 EFL Libraries – 기타 ● 데이터 코딩/디코딩 및 압축 (Eet) ● 바이트코드 가상 머신 (Embryo) ● Freedesktop.org 표준화 지원 (Efreet) ● Dbus 통합 레퍼 라이브러리 (Eldbus) ● 비디오/오디오 재생 라이브러리 (Emotion)
  • 37. 3737 EFL 라이브러리 – 기타 ● 비동기 입출력 (Eio) ● Udev 하드웨어 탐지 (Eeze) ● 썸네일 (Ethumb) ● V8 런타임 기반 자바스크립트 엔진 (Elev8) ● 물리 엔진 (EPhysics)
  • 38. 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
  • 39. EFL 오픈 소스 커뮤니티 전 세계 66명의 EFL 커미터
  • 42. EFL 레퍼런스 Elementary 테스트 애플리케이션 (elementary_test) 소스코드 elementary/src/bin/test*.c
  • 43. EFL 레퍼런스 Elementary Config 애플리케이션 (elementary_config)
  • 44. 월간 마이크로 소프트웨어 연재 (2012.07 ~ 2012.11) EFL 레퍼런스