SWT/JFace란?
SWT와 JFace를 툴이나 툴셋이라고 말하기도 하지만, SWT/JFace는 본질적으로 소프트웨어 라이브러리입니다.
1. SWT를 이용한 GUI 구축
모든 운영체제는 기본적인 사용자 인터페이스를 이루는 수많은 그래픽 컴포넌트들을 포함하고 있습니다.
SWT를 사용하면 자바 프로그래머는 이러한 컴포넌트에 바로 접근해 자신이 좋아하는 방식으로 환경 및 위치를 설정할 수 있습니다.
SWT는 그래픽 컴포넌트 외에도 이벤트에 대한 접근 방식을 제공합니다. 이는 사용자가 어떤 버튼을 눌렀는지, 어떤 메뉴 항목을 선택했는지를 추적할 수 있다는 의미입니다.
SWT는 여러 가지 기능으로 사용자 인터페이스를 구축할 수 있습니다. 그러나 코드가 길고 복잡한 단점이 있어서, 이클립스 설계자는 두 번째 라이브러리인 JFace를 구축하게 되었습니다.
2. JFace를 이용한 GUI 개발 간소화
JFace를 이용해서 효율이 높아지는 것 중 중요한 한가지는 이벤트입니다. 대부분 사용자 인터페이스에서 서로 다른 이벤트를 요구하는데, 버튼 클릭, 키 누름, 메뉴 선택 등의 서로 다른 이벤트는 같은 기능을 수행합니다.
JFace는 개발자가 큰 GUI를 구축하기 위해 여러 개의 윈도우와 그래픽을 필요로 할 때도 유용합니다. 또한 레지스트리 클래스를 제공하여 SWT 컴포넌트를 구성하고 메모리 할당을 관리하는 데 도움을 줍니다.
3. 자바의 최초 GUI 도구 스윙(Swing)
스윙에서 만들어 내는 품질은 초기에는 매우 매력적이었지만, 개발하기에 너무 복잡하고 실행도 느리다는 단점이 있습니다. 이러한 이유로 데스크탑 애플리케이션에서는 자바 GUI를 거의 사용하지 않았습니다.
스윙은 운영체제와 무관하게 일관된 모양을 띠고 동작하도록 하기 위해서, 사용자 인터페이스를 그리는 과정에 전적으로 개입합니다. 그래서 윈도우나 매킨토시, 유닉스나 리눅스 플랫폼에서 똑같이 보이고 동작합니다. 하지만, JVM이 GUI의 외양과 행위, 모든 측면을 세세하게 관리하기 때문에, 운영체제에서 직접 실행할 때보다 애플리케이션이 느리게 작동합니다.
스윙은 GUI 설계 과정에서 MVC(Model-View-Controller)를 구현하도록 합니다. MVC는 사용자 인터페이스 컴포넌트를 상태 정보, 화면에 보이는 모습, 외부 이벤트에 응답하는 능력의 세 부분으로 나뉩니다. 이러한 관점은 각각 모델(Model), 뷰(View), 컨트롤러(Controller)라고 부릅니다.
스윙의 설계 구조
모델 정보를 외양과 분리함으로써, 스윙은 프로그래밍 방법론적으로 좀 더 유연하고 재사용 가능한 코드를 산출할 수 있도록 했습니다. 하지만 이러한 능력은 화면에 나타나는 각 위젯에 여러 개의 객체를 제공하게 됩니다. 즉, GUI는 더욱 복잡해지고, 이러한 부가적인 할당과 처리로 프로세서에 부하가 걸리게 됩니다.
4. SWT/JFace의 기능
SWT/JFace의 가장 탁월한 점은 운영체제에 직접 접근이 가능합니다. GUI의 그래픽을 다시 만들기보다는, 기반 클랫폼의 중량 컴포넌트(heavyweight components)를 그대로 사용합니다.
SWT/JFace와 운영체제의 상호 소통은 자바 네이티브 인터페이스(JNI, Java Native Interface)를 사용하여 수행합니다.
SWT/JFace는 JNI에 의존하여 운영체제가 만들어 내는 모습을 관리하며, 자신이 모든 작업에 직접 개입하지는 않습니다.
SWT/JFace의 또 다른 중요한 특성은 자동 가비지 콜렉션(AGC)에 의존하지 않습니다. 운영체제 자원에 접근할 때에 주의를 기울일 필요가 있으며, 사전에 결정하지 않고 메모리 해제를 수행하면 문제를 해결하기는 커녕 더 많은 문제를 일으킬 수 있습니다. 자동 객체 처리와 결부된 에러를 막기 위해서, SWT/JFace는 사용하는 자원을 언제 할당 해제할지 결정하도록 합니다. 이러한 과정을 단순화 하기 위해 컴포넌트 클래스에서 disposs() 메소드를 제공한다.
SWT/JFace에서 제공하는 플랫폼
참고 서적 : SWT/JFace in Action
댓글 없음:
댓글 쓰기