ZK (프레임워크)

ZK는 자바로 작성된 오픈 소스 Ajax 웹 애플리케이션 프레임워크로, 거의 프로그래밍 지식이 필요 없이 웹 애플리케이션용 그래픽 사용자 인터페이스를 생성할 수 있다.

ZK의 핵심은 Ajax 기반 사건 기반 메커니즘, 123개 이상의 XUL 및 83개 XHTML 기반 구성 요소, 그리고 사용자 인터페이스 설계를 위한 마크업 언어로 구성된다. 프로그래머는 기능이 풍부한 XUL/XHTML 구성 요소로 애플리케이션 페이지를 설계하고, 최종 사용자 활동에 의해 트리거된 이벤트에 따라 이를 조작한다. 이는 데스크톱 GUI 기반 애플리케이션에서 발견되는 프로그래밍 모델과 유사하다.

ZK는 구성 요소의 콘텐츠 동기화와 클라이언트 및 서버 간의 이벤트 파이프라인 처리가 엔진에 의해 자동으로 수행되고, Ajax 배관 코드가 웹 애플리케이션 개발자에게 완전히 투명한 서버 중심 접근 방식을 사용한다. 따라서 최종 사용자는 데스크톱 애플리케이션과 유사한 상호 작용 및 응답성을 얻는 동시에, 프로그래머의 개발은 데스크톱 애플리케이션과 유사한 단순성을 유지한다.

ZK는 표준 웹 요청-응답 메커니즘을 사용하지 않으며 쿼리 매개 변수가 있는 GET 요청 또는 POST 요청을 통해 서버로 폼 필드를 전송하지 않는다. 대신, 각 화면 위젯의 내부 상태를 업데이트하기 위해 AJAX 요청이 서버로 전송된다. 브라우저에서 ZK는 웹 페이지의 JSON 설명만 다운로드하고 클라이언트 렌더러를 사용하여 이를 UI로 변환한다. 이는 매우 효율적이며 면밀히 검사하면 모든 것을 한 번에 다운로드하지 않는다. 클라이언트와 서버 간의 트래픽을 보면 페이지 렌더링이 최종적으로 완료될 때까지 클라이언트와 브라우저 간에 여러 요청이 오가는 것을 알 수 있다.

선택적 클라이언트 측 사용자 지정은 개발자가 소위 서버+클라이언트 퓨전을 통해 클라이언트 측 리소스를 활용하여 사용자 지정 및 Ajax 트래픽을 줄일 수 있게 한다.

스윙과 유사한 방식의 구성 요소 기반 프로그래밍 외에도, ZK는 ZUML이라는 풍부한 사용자 인터페이스 정의를 위한 마크업 언어를 지원한다.

 ZUML은 비프로그래머 개발자가 사용자 인터페이스를 직관적으로 설계하도록 설계되었다.
 ZUML을 통해 개발자는 모질라 XUL 언어 및 XHTML과 같은 다른 마크업 언어를 동일한 페이지에 원활하게 혼합할 수 있다.
 ZUML을 통해 개발자는 순수 자바 언어(재구성된 BeanShell에 의해 해석됨)로 스크립트를 내장하고 EL 표현식을 사용하여 구성 요소를 조작하고 데이터에 액세스할 수 있다.

 기능 

400px|섬네일|ZK6 기반 iDempiere의 웹 UI 인터페이스
 단순한 자바. ZK는 "자바스크립트 없는 Ajax" 접근 방식으로 유명하며, 개발자가 Ajax와 자바스크립트에 대한 지식 없이도 풍부한 웹 애플리케이션을 투명하게 구축할 수 있도록 한다.
 부트스트랩 지원과 함께 반응형 디자인 테마
 HTML 5 및 CSS 3 지원
 100개 이상의 Ajax 구성 요소는 UI 디자이너에게 엔터프라이즈 Ajax 애플리케이션의 요구 사항을 충족하는 다양한 풍부한 기능 구성 요소를 제공한다.
 ZUML은 풍부한 사용자 인터페이스 디자인을 HTML 페이지 작성과 유사하게 만든다. ZUML은 XML에 사용 가능한 모든 기능을 상속하는 XUL의 변형이며, UI 정의를 런타임 논리에서 분리한다.
 다중 사건 기반 GUI 디자인 패턴을 지원하는 사건 기반 구성 요소 모델(데스크톱 프로그래밍 모델과 유사).
 모델-뷰-컨트롤러 (MVC), 모델-뷰-프레젠터 및 모델-뷰-뷰모델 (MVVM) 디자인 패턴 지원
 UI 뷰와 데이터 및 POJO 간의 CRUD 및 상태 동기화를 자동화하는 ZUML 페이지 내 주석을 통한 데이터 바인딩 기능.
 스프레드시트, 피벗 테이블 및 달력과 같은 애플리케이션 구성 요소.
 자바 (Beanshell)를 통한 스크립팅 내장 지원. 이는 사용자 인터페이스 및 백엔드 프로그래밍 모두에 통합된 프로그래밍 언어를 사용할 수 있다는 점에서 중요한 이점이다. 자바스크립트 (라이노), 루비 (JRuby), 파이썬 (자이썬) 및 그루비와 같은 다른 언어의 서버측 자바 스크립팅에 대한 선택적 지원.
 JSP 사용자 지정 태그 라이브러리, JSF 지원, 포틀릿 및 서블릿 필터를 통해 기존 웹 프레임워크와 통합을 지원한다. 스프링 및 하이버네이트를 지원한다.
 프로그래머가 새로운 사용자 지정 UI 컨트롤을 만들 수 있도록 확장 가능하다. 컨트롤 그룹은 매크로 구성 요소로 재사용할 수 있다.
 ZK 차트를 사용한 광범위한 차트 작성

 XUL과의 차이점 
 ZK는 HTML을 생성하는 서버측 프레임워크이므로 클라이언트측에 게코의 존재 여부에 의존하지 않아 어떤 브라우저에서도 이식 가능하다. ZK는 ZUML (xul 및 xhtml) 서버측 페이지를 입력으로 받아 브라우저용 dhtml을 출력한다.
 ZK는 서버에서 자바로 사용자 인터페이스 논리를 처리한다. 이는 논리를 생성하는 데 사용할 수 있는 스크립팅 엔진 및 애플리케이션 라이브러리 선택의 폭을 넓힌다. dhtml 효과에 대한 서버 로드를 줄이기 위해 클라이언트 측 액션 기능을 사용하여 프레젠테이션 효과를 브라우저에 위임할 수 있다. 단일 애플리케이션 컨테이너에서 서버의 애플리케이션 논리를 실행하면 브라우저에서 DOM을 광범위하게 프로그래밍하는 경우에 비해 교차 브라우저 및 브라우저 버전 테스트 양이 줄어든다.
 ZK와 XUL은 구성 요소의 중복되는 부분 집합을 가지고 있지만, ZK는 자체적인 고유한 구성 요소 집합을 가지고 있다. 구성 요소 라이브러리는 사용자 지정 구성 요소로 확장될 수 있다. 매크로 구성 요소는 구성 요소의 복합체로 정의될 수 있다.
 ZK는 서버측 데이터 바인딩 주석을 제공하여 UI 구성 요소를 서버측 데이터에 선언적으로 바인딩한다.
 룩 앤드 필 차이.

 시스템 요구 사항 
 JRE 버전 1.5 이상
 서블릿 2.3 이상을 지원하는 웹 서버

 프로그래밍 기술의 전제 조건 

 필수 
 자바 또는 그루비, 라이노 (자바 자바스크립트), JRuby (자바 루비) 또는 자이썬 (자바 파이썬)과 같은 자바 스크립팅 엔진 언어의 기본 지식
 HTML 및 XUL의 기본 지식

 선택 사항 
 연결 논리 (서버에서 실행)를 작성하기 위한 스크립팅 언어 지식:
 BeanShell (자바 인터프리터), 자바스크립트, 그루비, 루비, 스칼라 및 파이썬
 객체 지향 프로그래밍
 서블릿 프로그래밍
 Ajax
 자바스크립트 (클라이언트 측)
 선언적 데이터 바인딩
 JSTL 스타일 표현 언어

 ZUML 
ZUML (ZK 사용자 인터페이스 마크업 언어)은 풍부한 사용자 인터페이스 정의를 위한 마크업 언어이다.
 ZUML은 비프로그래머가 ZUML 마크업을 사용하여 사용자 인터페이스를 효율적으로 설계할 수 있도록 설계되었다.
 ZUML을 통해 개발자는 모질라 XUL 언어 및 XHTML과 같은 다른 마크업 언어를 동일한 페이지에 원활하게 혼합할 수 있다.
 ZUML을 통해 개발자는 순수 자바 언어(재구성된 BeanShell에 의해 해석됨)로 스크립트를 내장하고 EL 표현식을 사용하여 구성 요소를 조작하고 데이터에 액세스할 수 있다.
 ZUML은 ZK에 의해 지원된다.
 공식 문서: ZUML 참조

 클라이언트 측 기술 

ZK는 서버 중심 프레임워크이다. 기술적으로 클라이언트 측 구현에 대해 알 필요가 없다. 이는 자바 모바일 VM에서 ZK 모바일이 실행되는 방식이다.

ZK 5.0부터 소위 서버+클라이언트 퓨전 아키텍처가 도입되었다. 개발자는 원하는 경우 클라이언트 측 위젯에 직접 액세스할 수 있다. ZK 클라이언트 엔진은 jQuery를 기반으로 한다. 기술적으로 jQuery 호환 라이브러리 및 위젯을 사용할 수 있다.

 추가 기능 

 같이 보기 

 리치 웹 애플리케이션 프레임워크 목록
 자바스크립트 프레임워크 비교
 Ajax 프레임워크 목록
 자바스크립트 기반 위젯 툴킷 목록

 각주 

 외부 링크 

 

분류:자바 플랫폼
분류:웹 프레임워크
분류:자바 라이브러리
분류:자바 플랫폼, 엔터프라이즈 에디션
분류:Ajax
분류:리치 인터넷 애플리케이션 프레임워크