티스토리 뷰

프로그래밍/java

Java - JavaFX 시작하기

박스여우 2016. 10. 13. 09:45

안녕하세요 박스여우입니다. 오늘은 GUI 개발을 위한 JavaFX에 대해 알아보도록 하겠습니다.

 

Swing은 가라!

JavaFX는 기존 Java의 표준 GUI 라이브러리인 Swing을 대체하기 위해 개발되었지만 훨씬 가볍고 강력합니다. GUI에서 컴포넌트를 호출할 때 애니메이션 전환, 흐림 효과나 drop shadow등과 같은 효과(effect)들은 유저 경험에 큰 변화를 만들 수 있는 중요한 요소 입니다. 이러한 요소들은 작고 디테일해서 크게 신경쓰지 않는 부분이지만, 응용 애플리케이션에 도입하게 되면 세련된 UI를 만들 수 있습니다. 이와같은 애니메이션과 전환 효과 등은 Swing으로 구현이 가능하지만 매우 고통스러운 작업을 거쳐야 구현이 가능합니다. 특별한 컴포넌트를 만들기 위해서는 셀 수도 없을만큼 paintComponent()를 오버라이드 하여 커스터마이징을 해야 합니다. 하지만 JavaFX는 이를 단 몇줄의 코드 만으로 가능하게 만들어 줍니다.

 


또, JavaFX는 많은 상황에서 필요로 하는 이벤트 리스너와 같은 부가적인 바인딩 속성들을 줄일 수 있도록 도와줘서 복잡한 코드를 더 간결하게 만들 수 있습니다. 또한 JavaFX는 매우 깔끔하게 모델과 뷰, 컨트롤러 사이를 분리해 줍니다.(MVC 모델) view는 FXML로, model은 JavaFX 속성의 콜렉션으로, 컨트롤러는 전달된 UI 컴포넌트를 가지고 의존성 주입을 활용합니다.

 

 

Swing vs SWT vs HTML5 vs JavaFX
새로운 애플리케이션을 만들게 될때 Swing이나 SWT는 고려해야 될 대상이 되지 못할 것 같습니다. JavaFX와 HTML5만이 남은 선택지가 되어 고민을 해야 겠지요. 둘 중 누가 완벽하게 이겼다고 단정지을 수 없지만 둘 중 하나를 골라야 한다면 각각의 특성을 고려해야 합니다.

HTML5는 다양한 플랫폼(휴대폰, 태블릿, 데스크톱)뿐만 아니라 다양한 OS(윈도우, 맥, 리눅스)를 지원합니다. 또한 도움을 얻을 수 있는 대형 개발 커뮤니티와 다양한 오픈소스와 프레임워크가 있습니다. 하지만 다양한 플랫폼의 용이성을 얻는 대신 브라우저 내에서만 작동해야 한다는 단점이 있습니다.

 

JavaFX로 개발을 하게 된다면 유저의 컴퓨터에 무언가를 설치해야 한다는 단점이 있지만 만약 전혀 문제가 되지 않는다면 JavaFX를 사용하여 브라우저를 벗어나고 Java의 성능을 맘껏 활용할 수 있습니다.

 

JavaFX의 장점

Java API : JavaFX는 Java로 개발된 클래스와 인터페이스들이 모인 Java 라이브러리입니다. 따라서 JavaFX는 JRuby나 Scala와 같은 JVM 위에서 작동되는 스크립트에서도 사용될 수 있습니다.


FXML : FXML은 유저 인터페이스를 정의하기 위한 XML 마크업 언어입니다. 디자이너는 직접 FXML을 텍스트 편집기로 작성할 수도 있고, 씬 빌더의 GUI를 통해 Visual Stuido의 Window Form 에디터 처럼 편리하게 화면을 구성할 수도 있습니다. 위에서 말씀드렸다 싶이 JavaFX는 FXML을 통해 View를 model과 Controller로부터 분리해 줍니다.

 

WebView : JavaFX는 WebKit 기반의 웹브라우저를 내장할 수 있으며 이를 WebView라고 합니다. WebView에서 동작하는 Java Script는 Java

API를 호출할 수도 있으며, Java API 또한 WebView 내의 Java Script를 호출할 수 있습니다.

 

Swing 호환성 : 기존에 개발된 Swing 어플리케이션은 새로운 JavaFX 어플리케이션으로 쉽게 업그레이드 될 수 있습니다.

 

하드웨어 가속 그래픽 파이프라인 : JavaFX의 그래픽은 그래픽 렌더링 파이프라인(Prism)을 기반으로 합니다. Prism은 지원되는 그래픽 카드나 GPU에서 부드럽고 빠른 그래픽 처리를 지원합니다. 만일 지원하는 GPU가 없는 경우에는 디폴트로 제공되는 Java 2D 소프트웨어 스택이 사용됩니다.
 

고성능의 미디어 엔진 : 미디어 파이프라인은 웹 미디어 컨텐츠의 재생을 지원합니다. GStreamer를 기반으로 하며 안정적이고 지연이 적은 프레임웍입니다. Java언어를 이용해 영상처리, 영상 스트리밍 등의 프로그램들을 개발할때는 JavaFX를 이용하는 것이 유리합니다.
 

Self-contained 배포 모델 : Self-contained 배포 모델은 필요한 어플리케이션 리소스와 Java/JavaFX 런타임까지 하나로 뭉쳐서 해당 플랫폼의 인스톨 패키지 형태로 만드는 걸 의미합니다. 이는 JavaFX의 여러가지 배포 모델 중 하나이며 가장 트러블이 작게 발생하는 배포 방식입니다.

 

이클립스에서 JavaFX 사용하기

우선 이클립스에서 JavaFX를 사용하기 위해서는 e(fx)clipse라는 플러그인을 다운받아야 합니다. 자세한 설명은 https://www.eclipse.org/efxclipse/install.html 요기에 나와있지만 영어가 귀찮으시다면 아래 과정들을 따라하시면 됩니다.

 

상단 툴 바의 Help - Install New Software를 클릭!

 

Work With: 부분에 플러그인을 다운받는 주소(http://download.eclipse.org/efxclipse/updates-released/2.4.0/site)를 입력한 뒤에 하단에 뜨게 되는 설치할 플러그인 리스트에서 e(fx)clipse - install만 체크해 주신뒤 Next등을 눌러 진행해 주세요. 설치가 완료되면 이클립스가 한번 재시작 됩니다.

 

 

 

다음으로 GUI를 에딧팅 하는 Scene Builder를 설치하기 위해 http://www.oracle.com/technetwork/java/javafxscenebuilder-1x-archive-2199384.html 요기에 접속한 뒤 스크롤을 내리다 보면 위와 같이 JavaFX Scene Builder 2.0 Related Downloads가 있습니다.

 

Accept License Agreement를 체크하신 뒤에 자신의 플랫폼에 맞는 Scene Builder를 다운받은 후 설치하시면 됩니다. 저 같은 경우 윈도우라 msi를 통해 설치 했습니다.

 

이제 마지막 단계 입니다. 바로 이클립스에서 JavaFX의 GUI를 수정하기 위해 Scene Builder를 연동하는 작업입니다.

다시 한번 상단의 툴바 에서 Window - Preferences를 클릭!

 

좌측의 메뉴에서 General-Editors-File Associations를 선택한 뒤에 Associated editors의 Add 버튼을 클릭!

 

External programs를 체크한 후에 Browse를 통해 Scene Builder.exe를 찾아줍시다.

 

저 같은 경우 Scene Builder가 설치된 경로는 다음과 같습니다. C:\Program Files (x86)\Oracle\JavaFX Scene Builder 2.0

JavaFX Scene Builder 2.0.exe를 선택해 준후 Ok를 눌러 적용해 주시면 마지막 단계도 끝이 납니다.

 

이제부터 이클립스에서 JavaFX를 개발하고 에디팅 할 수 있습니다. 실제적으로 JavaFX를 다루거나 깊이 들어가는 단계는 다음 포스팅 부터 차근차근 진행하겠습니다.

 

 

 

해당 포스팅은 국내 및 해외 블로그를 참고하여 작성되었습니다.
https://rterp.wordpress.com/2016/02/16/javafx-vs-swing-vs-html5-my-interview-with-alexander-casall/

http://btsweet.blogspot.kr/2014/03/javafx.html

댓글
댓글쓰기 폼
Total
498,444
Today
26
Yesterday
452
링크
«   2020/10   »
        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 31
글 보관함