Sapphire

위클립스
이동: 둘러보기, 찾기

사파이어(Sapphire)는 실제 UI 라이브러리를 사용하는 대신, 메타 모델을 이용하여 모델에 대한 편집 의도를 기술하면 UI를 만들어주는 프레임워크이다. UI 설계 작업이 매우 직관적이고 읽기 쉬워져 대량의 UI를 작성하거나 유지보수하는 것을 매우 쉽게 만든다.

[편집] 철학

Java가 처음 릴리즈 된 뒤, 데스크탑 UI를 작성하는 방식은 큰 변화가 없었다. 기술은 물론 바뀌었지만(AWT, Swing, SWT 등등), 기본적인 원칙은 변함이 없다. 개발자는 어떤 위젯을 사용할지, 어떻게 배치할 것인지, 데이터를 어떻게 저장하고 편집하며 동기화할 것인지를 결정해야 했다.

심지어 최고 수준의 개발자도 UI 컴포넌트가 다른 UI 컴포넌트에게 직접 메시지를 전달하는 실수를 저지른다. (모델이나 서비스를 거치지 않고) 레이아웃을 잡거나 데이터 바인딩 문제를 디버깅 하는데에도 과도한 시간이 투입된다.

사파이어(Sapphire)는 UI 작성을 더 높은 추상화 수준의 작업으로 높이는 것을 목적으로 한다. 가장 핵심적인 전제는, 실제 위젯들을 이용하지 않고 UI 작성 블록이 완성되어야 한다는 것이다. 실제 위짓을 이용하는 대신, 속성 모델과 속성 편집기를 이용하여 이 작업이 이뤄진다.

속성 편집기는 주어진 속성과 연관된 메타데이터를 분석하고, 적절한 에디터 위젯을 랜더링 하며 바인딩을 책임진다. 데이터는 동기화 되고, 모델은 검증(Validate)을 거쳐 UI에 표시되며, 컨텐트 어시스트등과 같은 기능등이 제공된다.

이 근본적인 변화는 개발자들이 UI 프레임워크를 대하는 방식을 바꾼다. 개발자들은 시스템에게 어떻게 문제를 해결할 것인지를 기술하는 대신, 어떤 목적을 해결할 것인지 의도를 기술한다.

[편집] 비교 예시

사파이어를 사용할 때, 다음과 같은 식으로 이야기한다:

person 객체의 LastName 속성을 편집하고 싶어

SWT등과 같은 위짓을 이용해 같은 작업을 할 때 다음과 같이 이야기해야 한다:

레이블 하나 만들고, 텍스트 박스도 하나 만들고, 나란히 놓아줘. 그 다음 person 객체의 LastName속성 값을 아까 만든 텍스트 박스에 집어 넣고, 편집이 일어나면.....

일을 하는 것도 어렵지만, 이러한 코드를 통해 원래 목적과 의도를 파악하는 것은 더 힘들어진다. 결과적으로 UI는 모순을 갖기 쉽고 유지보수하기가 어려워 진다.

개인 도구
이름공간
변수
행위
포탈
탐색
도움
도구모음