JavaFX 1.2의 5가지 주요 기능

Java FX 2009/06/26 17:23 Posted by Sun

Joshua Marinacci의 블로그

사실 저는 이번 주 휴가를 즐기고 있기 때문에 내 보스에게 이 게시물에 대해 알리지 말아 주셨으면 합니다. 저는 단지 JavaFX 1.2에 새로이 추가된 굉장한 것들을 한시라도 빨리 여러분에게 알리고 싶어 글을 쓰는 것이니까요. 그러니 모두 조용!

JavaOne에서 발표한 JavaFX 관련 기능 중 상당수는 미래에 출시될 제품과 관련된 것이거나 아직 릴리스되지 않은 것들과 관련이 있습니다. 이 글에서는 이러한 내용을 다루지 않을 것입니다. JavaOne에서 너무 많은 것들이 논의되었기 때문에 새 JavaFX의 핵심 사항 중 몇 개를
빠트리지는 않았나 걱정되네요. 그렇기 때문에 이 글에서는 지금 당장 다운로드하여 작업할 수 있는 것들에 대해 다룰 것입니다. 또, 이전 코드명이 Marina였고 지금은 JavaFX 1.2로 불리는 JavaFX의 새 버전으로 논의를 한정하려 합니다.
그럼 이쯤에서 제가 가장 주요하다고 여기는 기능에 대해 알아볼까요?

JavaFX 1.2의 5가지 주요 기능

Linux 및 Solaris 지원

Linux 및 Solaris에서 JavaFX를 지원할 수 있게 되기까지 참으로 기나긴 여정을 거쳐왔습니다.
이와 같은 지원은 썬의 빌드 시스템에서 항상 핵심적으로 다루어졌고 1.0 릴리스에서 완벽하길 그 무엇보다 희망했지만 역부족이었습니다. 그래서 불철주야 노력한 결과 탄생한 것이 베타 릴리스입니다. 썬의 목표는 JavaFX 환경에서 Windows 및 Mac 플랫폼과 동일하게 Solaris 및 Linux 플랫폼을 지원하는 것입니다. JavaFX는 모든 스크린(데스크탑/모바일/TV)과 모든 OS(Mac/Win/Linux/Solaris)에서 하나의 자바를 사용하는 것입니다. JavaFX 1.2는 이러한 목표를 향해 한 걸음 더 다가갈 수 있도록 지원합니다.

기능 중 일부는 아직 작동하지 않고, 이러한 이유로 JavaFX 1.2를 베타 릴리스로 부르고 있긴 하지만 출발점이 되기에는 충분합니다. 비디오 지원을 위해 새로 도입된 GStreamer는 이전에는 없던 주요 기능 중 하나입니다. Linux 배포판과 구성에 따라 그래픽 하드웨어의 속도가 가속화될 수도 있습니다. 비정형 창(shaped window)은 아직 지원되지 않습니다.
기본 JRE에 존재하는 버그 때문이죠. 그러나 그래픽 개발자들이 Java 6 및 OpenJDK와 함께 픽스가 배포될 것이라고 하니 JavaFX의 다음 릴리스가 출시되기를 기다리지 않고도 곧 동그란 창 등의 비정형 창을 만나볼 수 있을 것이라 기대합니다.

[스크린샷]
컨트롤 및 레이아웃

JavaFX의 그래픽은 우수하지만 1.0 릴리스에서는 한 개의 기본적인 UI 컨트롤(TextBox)만 제공합니다. 텍스트 컨트롤만을 사용하여 비즈니스 중심의 애플리케이션을 만들기란 다소 어렵습니다. 하지만 이제 모든 것이 바뀌었습니다. JavaFX 1.2에는 21세기에 맞게 고안된 실제 UI 컨트롤이 있습니다. Swing의 장단점을 모두 분석한 후 장기적으로 지향해야 할 UI 툴킷의 방향에 대해 연구하였고, 그 결과 지금 시점에 적합한 애플리케이션을 구축하도록 지원하는 새로운 컨트롤과 레이아웃 API가 탄생한 것입니다.
새로운 컨트롤에는 다음과 같은 몇몇 특징이 있습니다.

-모든 컨트롤은 CSS로 스킨 적용이 가능하기 때문에 모든 애플리케이션에 걸쳐 디자이너가 동일한 느낌을 주는 컨트롤을 만들 수 있습니다.
-새로운 모던 디자인 "Caspian"으로 모든 OS와 모바일 장치에서 편안함을 느낄 수 있습니다.
-공통 프로파일에 컨트롤이 있기 때문에 데스크탑 뿐만 아니라 모든 장치에서 컨트롤을 사용할 수 있습니다.
-진행률 표시기 및 하이퍼 링크 등의 표준 기능에 대한 컨트롤이 새로이 제공됩니다.
-모두 JavaFX 씬 그래프(scene graph) 위에 구축되므로 AWT를 낭비하는 일이 없습니다.

컨트롤과 더불어 중요한 것이 AWT 레이아웃과 관련된 최대 문제점을 해결해주는 새 레이아웃 시스템입니다. 이제 아주 간편히 레이아웃을 애니메이션과 혼합할 수 있으며 단 몇 줄의 코드만 작성하여 사용자 정의 레이아웃을 만들 수 있습니다. 또한 컨트롤을 사용하여 여러 화면에서 실행될 수 있는 실제 비즈니스 애플리케이션을 구축할 수도 있습니다.

현재 컨트롤 목록에는 몇 개의 컨트롤이 누락되어 있습니다. 특히 테이블과 트리가 없다는 것을 아래 그림에서 확인할 수 있습니다. 그렇다고 해서 이에 대한 계획이 없는 것은 아니며, 단지 시간이 충분하지 않았고 릴리스 출시를 연기하고 싶지 않았기에 현재로서는 아래의 컨트롤만 제공된다는 점을 알아주시기 바랍니다.

사용자 삽입 이미지

차트
컨트롤과 함께 비즈니스 애플리케이션 구축에 있어 가장 중요한 기능 중 하나가 차트입니다. 따라서 JavaFX에 차트 기능을 추가해 달라는 요청도 상당히 많았으며, 이에 따라 원형 차트, 분산형 차트 및 막대형 차트 등의 표준 차트 유형을 JavaFX에 포함시켰습니다. 이러한 차트는 사용이 간편하며 손쉽게 사용자 정의할 수 있습니다. 또한 몇 줄의 코드 작성만으로도 직접 차트 유형을 생성할 수 있습니다. 다음은 차트의 몇몇 예입니다.

사용자 삽입 이미지
사용자 삽입 이미지

데이터: 지속성, RSS/Atom 및 작업

이전에는 자바 코드로 드롭 다운하는 방법으로만 데이터 작업을 수행할 수 있었습니다. 물론 이 방법도 괜찮았지만 모바일 자바 코드와 데스크탑 자바 코드가 다르기 때문에 문제가 됩니다. 또한 모든 형태의 자바에는 영구 데이터에 대한 자체 특수 API가 있습니다. 이 문제를 해결하기 위해 썬은 JavaFX 공통 프로파일에 대한 새로운 지원을 통해 플랫폼 간 차이를 숨겨 사용자가 애플리케이션 코딩에만 집중할 수 있도록 지원합니다. 다음은 새로 지원되는 내용입니다.

-javafx.io.Storage: 모든 클라이언트 플랫폼에서 로컬로 데이터 영구 저장
-javafx.data.feed.*: RSS 및 Atom 데이터 피드를 위한 빌트인 지원
-DateTime, Math 및 Properties: JavaFX 클래스
-javafx.async.* 기본 클래스: 자바 기반 작업을 구현하기 위한 간단한 방법을 비롯하여 JavaFX의 모든 비동기 작업을 위한 클래스

속도!

썬은 모든 JavaFX 업데이트의 속도를 개선하는 것을 목표로 삼고 있으며 이러한 목표를 달성했다고 자부합니다. JavaFX 1.2의 전체적인 속도는 1.1 및 1.0의 속도보다 한층 더 개선되었습니다. 시작 시간, 메모리 사용량 및 그래픽 성능 측면에서는 JavaFX의 모든 부분에서 사용자 경험을 향상시켰습니다. 특정 작업의 경우에는 이전 릴리스에 비해 속도가 최대 3배 정도 향상되었음을 확인할 수 있으실 겁니다.

속도 향상을 이루기 위해 플랫폼의 거의 모든 부분을 재조명했다고 해도 과언이 아닙니다. 컴파일러를 살펴보자면, 다중 상속(multiple inheritance)을 사용하던 것에서 믹스인(mixin)을 사용하도록 바뀌었습니다. 그 결과 다중 상속에 잘못된 이름을 부여하는 코너 케이스(corner case)가 대부분 사라졌고 개발자들은 90%의 상황에서 원하는 결과를 얻을 수 있게 되었습니다. 또한 부수적으로 컴파일된 기본적인 바이트코드가 크기 면에서 더 작아지고 속도 면에서 더 빨라지는 쾌거를 이루었습니다.

그래픽 팀은 씬에 대한 업데이트를 보다 지능적으로 처리하는 씬그래프(scenegraph)를 설계하기 위해 많은 시간과 노력을 들였으며, 그 결과 리페인트(repaint) 수를 줄이고 응답이 빠른 사용자 인터페이스를 개발하는 데 성공했습니다.

이와 더불어 비디오 및 오디오 스택 전반과 기본 그래픽 파이프라인에 걸쳐 버그를 수정했으며, 시작 시간을 줄이고 웹 시작 성능을 개선하기 위해 JavaSE 6 업데이트 14에 대해 많은 작업을 수행하였습니다. 따라서 JavaFX 1.2의 전반적인 속도는 이전 릴리스의 그것보다 한층 더 빠르며 사용 역시 수월합니다.

사용자 삽입 이미지

단지 시작에 불과

위에 언급한 5가지 기능은 JavaFX 1.2에 대한 수많은 개선 사항 중 일부에 불과합니다. 더 주목해야 할 점은 이것이 장장 2년 이상 걸리는 JRE 릴리스 주기에 따라 이룬 성과가 아닌, 단기 JavaFX 플랫폼 정기 릴리스를 위한 원대한 계획의 일부라는 점입니다. 릴리스가 작은 단위로 보다 자주 출시된다면 품질이 우수한 소프트웨어를 한층 더 빨리 제공할 수 있을 뿐만 아니라 사용자의 피드백 또한 보다 빠르게 반영할 수 있을 것입니다. JavaFX 1.2에 추가되길 바라는 기능이 있다면 javafx-jira.kenai.com으로 의견이나 관련 파일을 보내 주십시오.

이제 저는 다시 한 주간의 휴가를 즐기며 다음 릴리스에 대해 생각해 보는 시간을 가지려 합니다. JavaFX 1.2를 어떻게 생각하시며 어떤 용도로 사용하고 있는지 알려 주시면 더 나은 플랫폼 개발을 위한 밑거름으로 활용하겠습니다.

이 글의 영문 원본은
Top 5 Most Important Features in JavaFX 1.2
에서 보실 수 있습니다.


 

"Java FX" 카테고리의 다른 글

2009/06/26 17:23 2009/06/26 17:23

TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/793

댓글을 달아 주세요

  1. 김성수  수정/삭제  댓글쓰기

    JavaFX 1.2 기능이 좋아졌네요. 전에 JavaFX에 관심이 많았지만 한동안 손을 놔서 곧 JavaFX에 눈을 돌려야 겠네요.
    좋은 글 감사합니다.

    2009/07/06 10:08
  2. hoon  수정/삭제  댓글쓰기

    챠트 기능이 강화 됐다고 하는데.... JSP 화면내에 그래프나 챠트 구현 할 수 있나요?? 할수있다면 가이드 같은 것은 없을까요?

    2009/08/06 16:40
[로그인][오픈아이디란?]

◀ Prev 1  ... 81 82 83 84 85 86 87 88 89  ... 806  Next ▶