Download - EFL 살펴보기 (Enlightenment Foundation Libraries) 박춘언 ([email protected]) 2014 EFL 한국 커뮤니티 세미나
22
삼성전자 소프트웨어 센터 차세대 컴퓨팅 랩 근무타이젠 UIFW 개발 (2009 ~ )
EFL 오픈 소스 커미터 활동 (2011 ~ )
타이젠 , EFL 국내 활성화를 위한 EFL Korea Community 운영 중Blog. www.hermet.pe.kr
Email. [email protected]
박 춘 언
기타 활동 - 서적
44
EFL 이란 ?
• GUI 애플리케이션 개발 툴킷
• 유용한 기능을 제공하기 위한 라이브러리 모음
• 애플리케이션 작성 시 어렵고 복잡한 GUI 편의 기능 요소들을 제공
EFL Building Blocks
55
EFL 이란 ?• 애플리케이션에서 EFL 로 할 수 있는 것들
• 적은 메모리 사용
• 고성능
• 메인 루프
• 위젯
• 확장성
• 테마
• GUI
66
EFL 이란 ?• 애플리케이션에서 EFL 로 할 수 있는 것들
• 애니메이션
• 타이머
• File Descriptor
• 사용자 입력 이벤트 ( 키 , 마우스 … )
• IPC 통신
• Socket 통신
•etc.
77
EFL 이란 ?• 타이젠 앱 개발
88
EFL 이란 ?• EFL 적용 사례
•I-Kitchen
•Electrolux + ProFUSION, Brazil
•http://www.youtube.com/watch?v=5ZpxHgBoi0s
99
EFL 이란 ?• EFL 적용 사례
•Elixir (Freebox)
•French Internet Set-top box
http://www.universfreebox.com/article/10269/Demonstration-d-une-application-meteo-sur-Freebox
1010
EFL 이란 ?• EFL 적용 사례
•NX300M
< (unofficial) EFL Logo>
1111
EFL 이란 ?• EFL 적용 사례
•Samsung Gear 2/ Gear 2 Neo
1212
Enlightenment 란 ?• 원래는 윈도우 관리자 이름
• 처음에는 GNOME 윈도우 관리자로서 제공
• 현재는 프로젝트 이름
• 윈도우 관리자와 라이브러리로 구성
• Enlightenment Desktop/Window Manager
• E16(DR16), E17(DR17), E18(DR18), E19(DR19)
• EFL (Enlightenment Foundation Libraries)
• http://www.enlightenment.org
< Enlightenment Logo >
1313
Enlightenment 란 ?
Enlightenment Window Manager
1414
EFL in Tizen?
Graphics and UI consist of the system graphic and UI stacks, which includes the EFL (En-lightenment 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, al-lowing for 3D transformations and more. The EFL includes the Evas canvas API library and the elementary widget library.
1515
EFL 역사
EFLImlib2Imlib/Fnlib
Enlighten-ment
(0.1 - 0.16.x)
1996 1999 20142001
Enlighten-ment
(0.17 - 0.19)
EFL 1.11
* Current EFL verision is 1.7 in Tizen 2.3 Beta
1616
EFL 특성 정리• 성능
• 저사용 메모리
• 다양한 백엔드 엔진 지원
• GUI 와 프로그램 로직 분할
• 변경 가능한 테마
• 스크린 크기 호환성
• 애니메이션
• 다국어 지원
• H/W 가속
• 이식성
• 진입 장벽
• 자료 부족
EFL 특성 - 성능
GTK+, QT 비교 ?
• 과거 타이젠 전신 모델에서는 GTK+, X11, DirectFB 를 혼합하여 사용했었음
• EFL 을 도입 후 큰 성능 개선 이룸• 다양한 시나리오에서 소프트웨어 렌더링이 매우 빠름• 다년간 OpenGL & OpenGL ES 지원• 일반 스마트폰 기기에서 60fps 성능 출력
EFL 특성 - 성능
GTK+, QT 비교 ?
• Unity 대비 Enlightenment 의 메모리 사용량
• EFL 을 도입 후 큰 성능 개선 이룸• 다양한 시나리오에서 소프트웨어 렌더링이 매우 빠름• 다년간 OpenGL & OpenGL ES 지원• 일반 스마트폰 기기에서 60fps 성능 출력
EFL Characteristics - Memory• Why is EFL being used as opposed to GTK+
or Qt or something else?• Memory (Ubuntu 11.04) beyond base X11 “fail-
safe” session• Unity – 168Mb• Enlightenment 0.17 – 65Mb
• Numbers based on “free” minus disk cache and buf-fers – Base 199Mb
• Both Unity and Enlightenment have roughly simi-lar features and setup• Compositor (OpenGL), fullscreen wallpaper, launcher,
icons, filemanager, etc.
EFL Characteristics - Memory• Mobile devices ship with limited memory
• 128Mb, 256Mb, maybe 512Mb
• These devices almost never use swap• Flash has limited writes, so swap can hurt device lifespan
• Lower end devices may not have GPU's• Require decent software rendering to make up for it
• OpenGL has overhead that may not be worth it for all situations• Textures keeps speed, but lose memory & more
EFL Characteristics - Memory
< QmlMiner (QT) >< elemines (EFL) >
2222
EFL Characteristic - Memory
< QmlMiner (QT) >< elemines (EFL) >
2323
EFL Characteristic - Memory
EFL Characteristics - Backened• X11 (OpenGL, Xlib & XCB)• Wayland (OpenGL & SHM)• Direct Framebuffer• DRM• Memory buffers• PS3 Native• Windows (GDI & DirectDraw)• ETC
EFL Characteristics – Logic/GUI Spearation
EFL Characteristics – Themeable다양한 Look & Feel 을 지원하기 위한 테마 변경 가능
EFL Characteristics – Scalable UI
2828
EFL Characteristic – Animation
• Animations supported by various layers
•evas
•edje
•elementary
•efx
EFL Characteristics – Bindings• C++• Lua• Python• Javascript• Ruby• Vala• Perl• …
EFL Characteristics – H/W Accel.• OpenGL, OpenGL-ES• Uses SIMD vector such as MMX, Neon
3131
EFL Characteristic – Not Threadsafe• EFL is not threadsafe
• Use
•ecore_thread
•ecore_pipe
3232
EFL Characteristic – Flexible
• Many libraries
• Many features
• Runs on various environment.
• Modularized
3333
EFL Characteristic – Flexible
• Too many libraries
• Too many features
• Runs on various environment
•Test cost
• Too flexible
3434
EFL Characteristic – Flexible
• Entrance barrier
• Application developers should consider many things.
•Spend much time
•Recommend to be consulted by EFL open source or HQ EFL team.
• NO TUTORIAL, NO BOOK!
EFL Block Diagram
Embryo
Eet
Evas
EcoreEdje
Eina
Efreet EldbusEthumb
Elementary
Applications, Libraries, Services
BASE OPERATIING SYSTEM /DISPLAY ETC.
BINDINGS(Elev8, python, perl, vala …)
Eio Eeze
Elementary
Emotion
3636
EFL Libraries - EINA
Eina
a library for
data types and some useful tools.
3737
EFL Libraries - EVAS
Evas (E + canVAS)
A highly optimized
canvas/rendering library
3838
EFL Libraries - ECORE
Ecore (E + Core)
a clean and tiny event loop library
with many convenience modules.
3939
EFL Libraries - EDJE
Edje
a complex graphical design &
layout library.
4040
EFL Libraries - ELEMENTARY
Elementary
a widget set.
4141
EFL Libraries – ETC.● Data codec and storage (Eet)● Bytecode VM (Embryo)● Freedesktop.org standards support (Efreet)● Dbus integration and wrapping (Edbus)● Video/Audio Playback library (Emotion)
4242
EFL Libraries – ETC.● Asynchronous I/O (Eio)● Udev hardware detection (Eeze)● Thumbnailer & cacher (Ethumb)● V8 Javascript base runtime (Elev8)● Physics simulation integration and visual effects.
(EPhysics)
EFL Opensource Community• Official Website
• www.enlightenment.org
• Mailing List• http://lists.sourceforge.net/lists/listinfo/enlightenment-devel • http://lists.sourceforge.net/lists/listinfo/enlightenment-an-
nounce• 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 오픈 소스 커뮤니티World-Wide Developers
• 66 Committers• 21 committers are working for Samsung
EFL References
http://docs.enlightenment.org
EFL References
http://git.enlightenment.org/core/efl.git/tree/src/examples
EFL References
Elementary Test Application (elementary_test)
Source
elementary/src/bin/test*.c
EFL ReferencesElementary Config Application (elementary_config)
EFL References
Enventor Application (enventor)
http://download.enlightenment.org/rel/apps/enventor/enventor-0.3.2.tar.gz
Thank you