JFace

JFace는 이클립스에서 사용되는 일반적인 사용자 인터페이스(UI)를 구현하기 위해 사용되는 툴킷(toolkit)이다.
JFace는 API와 구현에 있어서 윈도 시스템에 독립적이고 하위 그래픽 사용자 인터페이스(GUI)인 SWT를 숨기지 않고 같이 사용되도록 구현되어 있다.

주요 기능은 액션(actions)과 뷰어(viewers)로서 액션은 사용자의 명령이 어떠한 UI에서 발생되었는지를 상관하지 않고 동일하게 처리할 수 있는 추상적인 매커니즘을 제공하고 뷰어는 특정 모델 기반의 SWT 위젯(widget)의 어댑터가 되어 자료를 목록(lists), 테이블(tables), 트리(trees) 형태로 표현하는 기능을 간략히 할 수 있도록 제공한다.

위 내용을 포함한 JFace가 제공하는 기능은 다음과 같다.

 MVC가 적용된, 필터, 정렬, 업데이트 기능을 갖춘 뷰어들을 제공한다.
 액션을 정의하고, 적절한 위치에 배치하는(메뉴, 툴바, 버튼) 기능을 제공한다.
 표준 대화상자 및 마법사를 제공한다.
 이미지, 글꼴등을 관리하는 레지스트리를 제공한다.

사용

SWT와의 사용 
JFace는 하위 UI 시스템인 SWT를 대체하기 위하여 만들어진 것이 아니고 자주 쓰이는 UI Framework을 추상화 하도록 만들어졌기 때문에 단독으로는 쓰일 수 없고 SWT와 같이 사용해야 한다. 따라서 SWT/JFace와 같이 병기하여 표기하는 일이 많다.

스윙과의 차이 
스윙(Swing)은 자바 1.1 버전부터 지원하는 그래픽 라이브러리로 기존의 AWT의 단점을 보완하고자 여러 플랫폼에서 동일한 모양으로 실행될 수 있도록 만들어진 자바 표준 그래픽 라이브러리이다.
그러나 느린 속도와 복잡한 개발방식, 그리고 윈도 시스템별로 다른 UI를 제공하지 못하는 한계로 인하여 일반 사용자를 대상으로 한 프로그램에서는 대중적으로 사용되지 못하였다.

그에 반에 SWT/JFace는 해당 윈도 시스템의 화면 구성 컴퍼넌트를 직접 사용하기 때문에 실행하는 윈도 시스템별로 해당 시스템 고유의 그래픽을 보여줄 수 있고 속도 또한 빠르다.

다만 이러한 구현을 위해 내부적으로 JNI(Java Native Interface)를 사용하므로 자바의 기본적인 Write Once, Run Everywhere(한번만 작성하여 VM이 존재하는 어디든 구동한다.)라는 원칙을 지키지는 못한다.
그러나 주요 OS와 윈도 시스템을 지원하므로 대부분의 경우 플랫폼에 큰 제약을 받지 않는다.

그리고 이클립스 3.2버전 이상의 SWT/JFace에서는 Swing 뿐만 아니라 AWT와도 같이 사용할 수 있는 기능을 제공한다.

버전별 종속성 
JFace는 이클립스와 함께 쓰일 수도 있고 RCP(Rich Client Platform) 형태로 별도의 프로그램으로 실행될 수 있다.(이클립스 버전 3.2부터 SWT, org.eclipse.equinox.common, org.eclipse.core.commands만 의존성을 가짐.)

이클립스 버전 3.3부터는 OSGi와 관계된 의존성 추가로 인하여 org.osgi.framework가 추가되었다.

각주

같이 보기 
 SWT

외부 링크 
  이클립스 JFace 위키 페이지

위젯 툴킷
이클립스 라이선스 소프트웨어