일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 하이퍼바이저
- 고려대학교
- 패턴 인식
- 파이썬
- BAM
- 삼성소프트웨어멤버십
- SSM
- 신경망
- NarwalFreo
- 물걸레로봇청소기추천
- 물걸레자동세척로봇청소기
- 나르왈프레오
- 삼성
- 빅데이터
- 증강현실
- 동아리
- 멤버십
- 가상화
- Bidirectional Associative Memory
- Google App Engine
- 갤럭시탭S8울트라
- Neural Network
- Python
- 신경회로망
- 구글 앱 엔진
- 패턴인식
- hopfield network
- 삼성전자 소프트웨어멤버십 SSM
- 인공지능
- Friendship
- Today
- Total
정보공간_1
[3기 신촌 최기환] JAVA FX 소개 본문
안녕하세요. 신촌멤버십 21-2기 최기환입니다.
저는 이번에 RIA(Rich Internet Application) 플랫폼 종류중에 하나인 JAVA FX 에 대해 소개해 드리고자 합니다.
JAVA FX 는 자바 언어를 기반으로 다양한 미디어와 내용을 제공하고
화려한 UI 를 가진 어플리케이션을 제작 할 수 있는 플랫 폼입니다.
JAVA FX 로 제작한 프로그램
기존 JAVA Swing 을 이용한 개발 보다 UI 구성이 더 간편하고 고수준의 그래픽 작업을 수행할 수 있습니다.
먼저 JAVA FX 의 구조에 대해 알아보도록 하겠습니다.
JavaFX public API
다양한 사용자 어플리케이션 제작을 위한 자유도와 유연성 제공, 자바 플랫폼을 포함
Quantum Toolkit
Prism, Glass Windowing Toolkit 을 JavaFX 에서 사용할 수 있도록 연결해주며 렌더링과 이벤트 핸들링과 관련된 스레딩 규칙을 관리
Prism
JavaFX 화면의 Resterization 과 Rendering 을 담당
Glass Windowing Toolkit
윈도우, 타이머, 이벤트 큐를 관리하고 JavaFX 플랫폼을 native operation system 과 의 연결을 담당
기존의 자바를 사용한 라이브러리를 모두 이용 가능하며 JavaFX 어플리케이션 내에 Java Swing 화면을 띄우는 것 또한 가능합니다.
JavaFX 의 장점으로는 Visual Layout Tool 과 css 파일지원이 있습니다.
안드로이드 개발과 WPF 플랫폼 기반의 개발과 같이 Visual Layout Tool 을 사용해 드래그앤 드랍방식의 개발이
가능하며 스윙에서 동일한 인터페이스를 만들기 위해 필요한 더 장황한 일련의 메소드 콜과 분명히 대조됩니다.
또한 .NET Framework 기반의 어플리케이션과는 달리 Window 와 Linux, Mac OS 모두에서 작동이 가능합니다.
가장 큰 단점은 현재 주류 기술이 아니기 때문에 오픈 프로젝트와 같은 자료가 많지 않다는 것입니다.
또한 타 플랫폼 대비 퍼포먼스가 떨어지고 플랫폼의 안정성이 아직 완전히 정착되지 못했습니다.
JavaFX 어플리케이션 개발을 위해서는
JavaFX SDK, NetBeansIDE, JavaFX SceneBuilder 를 설치해야 하며 이클립스 IDE 환경에 익숙한 사용자는
NetBeans 에서도 동일한 단축키를 이용해 자잘한 버그 없이 쾌적한 개발을 진행 할 수 있습니다.
JavaFX 개발에서 기존 Swing 과 가장 큰 차이점은 Event 처리 방식에 있습니다.
JavaFX Event 의 Properties 는 Event Type, Source, Target Property 로 구성됩니다.
Source 는 event 가 발생한 객체, Target 은 발생한 이벤트가 전달되는 마지막 노드를 뜻합니다.
이벤트 전달 과정은 총 4단계로 이루어 집니다.
이벤트가 발생 했을 때 시스템은 내부적인 룰에 따라 target 이 되는 노드를 결정한다.
키 이벤트의 경우 포커스가 잡혀있는 노드, 마우스 이벤트의 경우 커서가 위치해 있는 노드로 선택된다.
2.Route construction
최초의 event route 는 buildEventDispatchChain() 메소드를 통해 만들어진 event dispatch chain 을 통해
결정된다.
event route 는 default 로 최상위 노드인 stage 부터 이벤트가 발생한 노드 까지이며 route 중간의
event filter 와 event handler 로 인해 변경 될 수도 있다.
이 단계 동안 이벤트는 어플리케이션의 root 노드에서 event dispatch chain 의 target 노드 까지 전달된다.
만약 중간에 존재 하는 노드 중 filter 가 등록된 노드가 있다면 해당 filter 가 불린다.
filter 가 event 를 consume() 함수를 이용해 소모하지 않는다면 이벤트는 결국 target 에 전달 될 것이다.
event 가 target 에 도착하고 event 에 대한 모든 filter 가 작업을 끝낸 후 event 는 다시 target 에서 root node 로 돌아간다. Chain 중 handler 가 등록된 node 가 있다면 handler 가 호출된다.
이벤트 처리 예)
Triangle 클릭 이벤트 발생
이벤트 발생시 커서가 위치 해 있는 Triangle 노드가 타겟 으로 선택 됩니다.
event route 가 Stage 부터 Triangle 까지 생성되며(기본 값) 루트를 따라
이벤트가 Stage부터 Triangle 까지 전달 됩니다.
전달되는 동안 filter 가 존재하면 호출되고 등록된 handler 가 있다면 역시 호출됩니다.
클릭이벤트가 Group 노드에 까지만 영향을 끼치고 싶다면 Group 단계에서 이벤트를 consume() 하면 됩니다.
인터넷 자료가 많지않지만 개발 레퍼런스는 굉장히 잘 정리되어 있습니다.
http://www.oracle.com/technetwork/java/javafx/documentation/index.html
JavaFX 에 대한 개략적인 소개와 가장 큰 차이점인 Event 처리에 대해 알아보았습니다.
여러 플랫폼에서 작동해야 하고 다양한 UI 를 제공해야 하는 프로그램을 개발해야 할 때
JavaFX 에 대해서도 고려해 보시기 바랍니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[3기 신촌 윤기백] Hadoop의 이해 1편 - BigData와 HDFS (1) | 2013.02.05 |
---|---|
[3기 전주 전환규] RAM을 이용한 Function-Simulation (0) | 2013.02.04 |
[3기 강북 김승현] Linux 2.6 Device Driver 개발환경 구축 (0) | 2013.01.28 |
[3기 강남 백정의] Jquery를 활용한 ajax 활용 및 crossdomain (0) | 2013.01.28 |
[3기 강남 이소영] 포토샵의 이미지 파일 형식 (0) | 2013.01.28 |