정보공간_1

[3기 신촌 최기환] JAVA FX 소개 본문

IT 놀이터/Elite Member Tech & Talk

[3기 신촌 최기환] JAVA FX 소개

알 수 없는 사용자 2013. 1. 28. 23:37

안녕하세요. 신촌멤버십 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단계로 이루어 집니다.

1.Target selection

이벤트가 발생 했을 때 시스템은 내부적인 룰에 따라 target 이 되는 노드를 결정한다.

키 이벤트의 경우 포커스가 잡혀있는 노드, 마우스 이벤트의 경우 커서가 위치해 있는 노드로 선택된다.


2.Route construction

최초의 event route buildEventDispatchChain() 메소드를 통해 만들어진 event dispatch chain 을 통해 

결정된다.

event route default 로 최상위 노드인 stage 부터 이벤트가 발생한 노드 까지이며 route 중간의 

event filter event handler 인해 변경 될 수도 있다


3.Event capturing

이 단계 동안 이벤트는 어플리케이션의 root 노드에서 event dispatch chain target 노드 까지 전달된다

만약 중간에 존재 하는 노드filter 가 등록된 노드가 있다면 해당 filter 가 불린다.

filter event consume() 함수를 이용해 소모하지 않는다면 이벤트는 결국 target 에 전달 될 것이다.


4.Event bubbling

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 에 대해서도 고려해 보시기 바랍니다.