JFace
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
JFace는 GUI 위젯 시스템 위에 위치하는 계층으로, 일반적인 UI 프로그래밍 작업을 처리하기 위한 클래스를 제공한다. 모델-뷰-컨트롤러 프로그래밍을 표준 위젯 툴킷으로 가져오며, 뷰어, 액션, 레지스트리, 대화 상자 및 마법사 등의 기능을 제공한다. 개발자는 JFace를 통해 기본적인 위젯 시스템 관련 문제 해결에 대한 부담을 덜고 특정 애플리케이션 구현에 집중할 수 있다. JFace는 SWT에 의존하며, 이클립스 워크벤치는 JFace와 SWT 모두를 기반으로 구축되었다. JFace는 SWT와 함께 사용되며, 자바 Swing과 비교하여 속도가 빠르고 각 윈도우 시스템의 고유한 그래픽을 보여줄 수 있다.
더 읽어볼만한 페이지
- 이클립스 라이선스 소프트웨어 - JUnit
JUnit은 자바 환경에서 단위 테스트를 위한 프레임워크로, 반복적인 테스트 실행을 통해 버그 수정에 용이하며, 어노테이션 기반의 간편한 테스트 코드 작성과 IDE 통합을 지원하여 개발 효율성을 높인다. - 이클립스 라이선스 소프트웨어 - Eclipse (소프트웨어)
이클립스는 IBM에서 개발한 자바 기반의 통합 개발 환경으로, OSGi 서비스 플랫폼을 런타임 아키텍처로 사용하며, 플러그인을 통해 기능을 확장할 수 있고, 이클립스 퍼블릭 라이선스를 따르며, 한국어를 지원한다. - 위젯 툴킷 - Tk (소프트웨어)
Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다. - 위젯 툴킷 - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다.
JFace - [IT 관련 정보]에 관한 문서 | |
---|---|
JFace 정보 | |
![]() | |
개발자 | Eclipse Foundation |
최신 릴리스 버전 | 3.9.1 |
최신 릴리스 날짜 | 2013년 7월 25일 |
운영체제 | 크로스 플랫폼 |
사용 언어 | 다국어 |
종류 | 자바 플랫폼용 위젯 툴킷 |
라이선스 | Eclipse Public License |
웹사이트 | https://wiki.eclipse.org/JFace |
2. 구조
JFace는 SWT과 같은 위젯 시스템 위에 위치하는 계층으로, 일반적인 UI 프로그래밍 작업을 처리하기 위한 클래스를 제공한다.[1] 이는 모델-뷰-컨트롤러 프로그래밍 방식을 SWT로 가져온다.[1]
JFace의 주요 목표는 개발자가 기본적인 위젯 시스템이나 거의 모든 UI 애플리케이션에서 공통적으로 발생하는 문제를 해결하는 것에 신경 쓰지 않고, 특정 애플리케이션의 구현에 집중할 수 있도록 개발자의 부담을 덜어주는 것이다.[1] 이를 위해 JFace는 위젯을 채우고, 정렬하고, 필터링하고, 업데이트하는 작업을 처리하는 뷰어(Viewer), 사용자가 자신의 동작을 정의하고 메뉴 항목이나 버튼 등에 할당할 수 있게 하는 액션(Action), 이미지 및 글꼴을 저장하는 레지스트리(Registry), 표준 대화 상자(Dialog) 및 마법사(Wizard) 프레임워크 등을 제공한다.[1] 이러한 기능들에 대한 자세한 내용은 각 하위 섹션에서 다룬다.
JFace를 개발할 때 이클립스 그룹의 주요 관심사는 어떤 경우에도 프로그래머로부터 SWT 구성 요소 구현을 숨기지 않겠다는 것이었다.[1] JFace는 SWT에 전적으로 의존하지만, SWT는 JFace에 의존하지 않는다.[1] 또한, 이클립스 워크벤치는 JFace와 SWT 모두를 기반으로 구축되었으며, 경우에 따라 JFace를 우회하여 SWT에 직접 액세스하기도 한다.[1]
2. 1. 뷰어 (Viewer)
JFace는 위젯의 내용을 채우고 정렬하며, 필터링하고 업데이트하는 등 반복적인 작업을 대신 처리해주는 뷰어(Viewer) 클래스를 제공한다. 이를 통해 개발자는 모델-뷰-컨트롤러 방식의 프로그래밍을 SWT 환경에서 보다 쉽게 구현할 수 있다.2. 2. 액션 (Action)
JFace는 사용자가 직접 '액션(Action)'을 정의할 수 있는 기능을 제공한다. 이렇게 정의된 액션은 메뉴 항목, 툴바 항목, 푸시 버튼 등 특정 UI 구성 요소에 연결하여 사용할 수 있다. 이를 통해 개발자는 특정 동작을 정의하고 이를 다양한 UI 요소에서 재사용하기 용이하다.2. 3. 레지스트리 (Registry)
이미지 및 글꼴을 저장하는 레지스트리를 제공한다.2. 4. 대화 상자 및 마법사
JFace는 표준 대화 상자와 마법사를 정의하고, 사용자와 복잡한 상호 작용을 구축하기 위한 프레임워크를 제공한다.3. 사용
다음은 JFace를 사용한 기본적인 Hello World 프로그램이다.
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class HelloWorld extends ApplicationWindow {
public static void main(String[] args) {
new HelloWorld().run();
}
public HelloWorld() {
super(null);
}
public void run() {
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
protected Control createContents(Composite parent) {
Label label = new Label(parent, SWT.CENTER);
label.setText("Hello, World");
return label;
}
}
3. 1. SWT와의 관계
JFace는 하위 UI 시스템인 SWT를 대체하기 위해 만들어진 것이 아니라, 자주 사용되는 UI 프레임워크를 추상화하도록 설계되었다. 따라서 JFace는 단독으로 사용될 수 없으며 반드시 SWT와 함께 사용해야 한다. 이 때문에 'SWT/JFace'와 같이 함께 표기하는 경우가 많다.JFace는 위젯 시스템 위에 위치하는 계층으로, 일반적인 UI 프로그래밍 작업을 처리하기 위한 클래스를 제공한다. 이는 모델 뷰 컨트롤러 프로그래밍 방식을 표준 위젯 툴킷으로 가져오는 역할을 한다. JFace가 제공하는 주요 기능은 다음과 같다.
- 위젯을 채우고, 정렬하고, 필터링하고, 업데이트하는 번거로운 작업을 처리하는 뷰어 클래스를 제공한다.
- 사용자가 자신의 동작을 정의하고 해당 동작을 메뉴 항목, 도구 항목, 푸시 버튼 등 특정 구성 요소에 할당할 수 있도록 하는 액션 기능을 제공한다.
- 이미지 및 글꼴을 저장하는 레지스트리를 제공한다.
- 표준 대화 상자와 마법사를 정의하고, 사용자와의 복잡한 상호 작용을 구축하기 위한 프레임워크를 제공한다.
JFace의 주요 개발 목표는 개발자가 기본적인 위젯 시스템이나 거의 모든 UI 애플리케이션에서 공통적으로 발생하는 문제를 해결하는 데 신경 쓰지 않고, 특정 애플리케이션의 구현 자체에 집중할 수 있도록 개발자의 부담을 덜어주는 것이다.
JFace를 개발할 때 이클립스 그룹은 어떤 경우에도 프로그래머로부터 SWT 구성 요소의 구현을 숨기지 않겠다는 원칙을 세웠다. JFace는 SWT에 전적으로 의존하지만, SWT는 JFace에 의존하지 않는다. 또한, 이클립스 워크벤치는 JFace와 SWT 모두를 기반으로 구축되었으며, 경우에 따라서는 JFace를 거치지 않고 SWT에 직접 접근하기도 한다.
3. 2. 스윙 (Swing)과의 차이
스윙은 자바 1.1 버전부터 지원된 그래픽 라이브러리로, 기존 AWT의 단점을 보완하고 여러 플랫폼에서 동일한 모양으로 실행되도록 만들어진 자바 표준 그래픽 라이브러리이다. 그러나 실행 속도가 느리고 개발 방식이 복잡하며, 운영체제별로 다른 사용자 인터페이스(UI)를 제공하지 못하는 한계 때문에 일반 사용자를 대상으로 한 프로그램에서는 널리 사용되지 못했다.이에 반해 SWT/JFace는 해당 운영체제의 화면 구성 컴포넌트를 직접 사용한다. 따라서 실행하는 운영체제 고유의 그래픽을 보여줄 수 있고 속도 또한 빠르다는 장점이 있다.
다만, 이러한 구현을 위해 내부적으로 JNI(Java Native Interface)를 사용하므로, 자바의 기본 원칙인 '한 번 작성하면 어디서든 실행된다'(Write Once, Run Everywhere)는 원칙을 완전히 지키지는 못한다. 그러나 주요 운영체제와 윈도 시스템을 대부분 지원하므로 실제 사용에 있어 플랫폼 제약이 크지는 않다.
또한, 이클립스 3.2 버전 이상에서는 SWT/JFace와 스윙뿐만 아니라 AWT와도 함께 사용할 수 있는 기능을 제공한다.[3]
3. 3. 버전별 종속성
JFace는 이클립스와 함께 사용될 수도 있고, RCP(Rich Client Platform) 형태로 별도의 프로그램으로 실행될 수도 있다.이클립스 버전 3.2부터 JFace는 SWT, `org.eclipse.equinox.common`, `org.eclipse.core.commands`에만 의존성을 가진다.[4]
이클립스 버전 3.3부터는 OSGi와 관련된 의존성이 추가되어 `org.osgi.framework`가 필요하게 되었다.
4. 예제
다음은 JFace를 사용한 기본적인 Hello World 프로그램이다.
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class HelloWorld extends ApplicationWindow {
public static void main(String[] args) {
new HelloWorld().run();
}
public HelloWorld() {
super(null);
}
public void run() {
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
protected Control createContents(Composite parent) {
Label label = new Label(parent, SWT.CENTER);
label.setText("Hello, World");
return label;
}
}
참조
[1]
문서
Eclipse programmer's guide entry on JFace
http://help.eclipse.[...]
[2]
문서
Eclipse programmer's guide entry on JFace
http://help.eclipse.[...]
[3]
문서
SWT FAQ
http://www.eclipse.o[...]
[4]
문서
Eclipse Bug 49497 [RCP] JFace dependency on org.eclipse.core.runtime enlarges standalone JFace applications
https://bugs.eclipse[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com