Autor: Thiago Baesso  Procaci ZK - Utilizando Ajax sem Javascript
Roteiro: Apresentar conceitos do Framework; Exemplificar o uso.
Porque utilizar o ZK ? Necessidade de aplicações com interfaces ricas; Interfaces ricas    grandes esforços; Esforços com interfaces ricas    possível desvio do foco do desenvolvimento (regras de negócio). Propósito do ZK: Tornar o desenvolvimento de interfaces web simples.  Em outras palavras, facilitar a confecção de interfaces ricas.
Evolução das páginas web  Páginas HTML Estáticas Páginas HTML Dinâmicas (DHTML) Páginas com Flash, Applets Páginas com uso de Ajax
Um pouco sobre Ajax Pode-se entender como a próxima geração do DHTML; Forte dependência de Javascript para capturar eventos e manipular a representação visual de uma página; Não depende de algum tipo de plugin para que a aplicação funcione (ao contrário de Flash e Applets); Maior interação (usuário x sistema).
Com a maturação da tecnologia Ajax..  Aparecimento de vários frameworks (como o ZK); O ZK Framework.. Facilita a incorporação de Ajax na aplicações Java Web; Dispensa conhecimentos de Javascript; Possui uma linguagem de marcação (similar ao HTML) denomidade ZUML. Gera código Javascript, HTML através da ZUML
ZK User Interface Markup Language - ZUML Linguagem de marcação de mais alto nível; Define a interface através de componentes (ex. Grid, datebox, captcha); Interface amigável com todo HTML, Javascript e CSS gerados a partir da ZUML.
Possibilidade de configurar atributos (como na decimalbox).  O input gerado assumirá valores nos moldes do atributo format Exemplo ZUML
Funcionamento do ZK (Arquitetura) O ZK possui 3 módulos responsáveis por incorporar Ajax a uma aplicação: ZK loader; ZK AU ( asynchronous update ) engine; ZK client engine. Ressaltando que o que ZK loader e o ZK AU engine rodam do lado do servidor e são compostos por Servlets Java. O ZK cliente engine é composto por cógido Javascript (roda no lado do cliente).
 
1 : Sempre um cliente faz a requisição de uma página através da URL, o ZK loader interpreta a requisição, gera a página HTML correspondente (baseado no código ZUML referente à URL requisitada) e cria objetos no servidor que permitirão a manipulação da interface da página.
2: Em seguida, o ZK loader envia a página HTML gerada para o cliente juntamente com o ZK client engine. O ZK client engine irá residir no “lado do cliente” e será responsável por monitorar os eventos disparados pelo browser.
3: Se qualquer evento for disparado no cliente, o ZK client engine irá enviá-lo (através de uma requisição Ajax) para o ZK AU engine localizado no servidor.
4: O ZK AU engine recebe a requisição Ajax, atualiza os objetos que manipulam os componentes de interface e retorna uma resposta para o cliente, relatando as modificações que página deverá sofrer.
5: Assim que o ZK client engine recebe a resposta, ele atualiza a representação visual da página
Funcionamento do ZK (resumo) ZK loader    carrega página; ZK AU engine e ZK client engine    tornam fácil a comunicação Ajax (objetos no servidor dispensam a programação Javascript); Qualquer componente definido em ZUML terá um objeto para a manipulação da visão no servidor. Vantagem:  O ZK prevê vários problemas de compatibilidade entre browsers.
Injetando Ajax em uma aplicação com o ZK Exemplo prático ressaltando conceitos apresentados. Ambiente Eclipse Ganymede; Tomcat 6.0.
Novo projeto no eclipse
Escolhendo o tipo de aplicação (Dynamic Web Project)
Nome do projeto: zkdemo Servidor: Apache Tomcat
Configurações Finais Fazer download do ZK em  http://www.zkoss.org/download/ e extrair os jars para a pasta WEB-INF/lib do projeto. Configurar o web.xml (vide user guide –  copiar e colar). Já podemos começar a desenvolver o nosso exemplo inicial e rever os conceitos apresentados de forma prática.
Pacotes e classes do exemplo hello.zul    arquivo com o código ZUML da página. HelloWindow.java    classe java que irá manipular a página hello.zul Obs.: A extensão .zul é a utilizada para os arquivos que contêm código ZUML.
HelloWindow.java hello.zul
Atributo use aponta para HelloWindow HelloWindow.java hello.zul
Atributo use aponta para HelloWindow Ação do botão HelloWindow.java hello.zul
Atributo use aponta para HelloWindow Recupera o objeto que manipula a textbox através do id Ação do botão Manipula valor da textbox HelloWindow.java hello.zul
Aplicação Funcionando Só acessar    http://localhost:8080/zkdemo/hello.zul
Entendendo o Funcionando
Dica para desenvolvedores Utilizar o ZK Studio. Plug-in do eclipse que facilita o desenvolvimento de aplicações que utilizam o ZK
Configurando o ZK Studio Vá no menu help e clique em Software Updates
Clique em Add Site Configurando o ZK Studio
Configurando o ZK Studio Adicione em location: http://studioupdate.zkoss.org/studio/update
Configurando o ZK Studio Selecione a url do ZK Studio e clique em install
Referências http://www.zkoss.org/ ZK – Ajax without Javascript Framework; Henry Chen, Robbie Cheng (2007) Revista Mundo Java  - edição 36

Zk Framework

  • 1.
    Autor: Thiago Baesso Procaci ZK - Utilizando Ajax sem Javascript
  • 2.
    Roteiro: Apresentar conceitosdo Framework; Exemplificar o uso.
  • 3.
    Porque utilizar oZK ? Necessidade de aplicações com interfaces ricas; Interfaces ricas  grandes esforços; Esforços com interfaces ricas  possível desvio do foco do desenvolvimento (regras de negócio). Propósito do ZK: Tornar o desenvolvimento de interfaces web simples. Em outras palavras, facilitar a confecção de interfaces ricas.
  • 4.
    Evolução das páginasweb Páginas HTML Estáticas Páginas HTML Dinâmicas (DHTML) Páginas com Flash, Applets Páginas com uso de Ajax
  • 5.
    Um pouco sobreAjax Pode-se entender como a próxima geração do DHTML; Forte dependência de Javascript para capturar eventos e manipular a representação visual de uma página; Não depende de algum tipo de plugin para que a aplicação funcione (ao contrário de Flash e Applets); Maior interação (usuário x sistema).
  • 6.
    Com a maturaçãoda tecnologia Ajax.. Aparecimento de vários frameworks (como o ZK); O ZK Framework.. Facilita a incorporação de Ajax na aplicações Java Web; Dispensa conhecimentos de Javascript; Possui uma linguagem de marcação (similar ao HTML) denomidade ZUML. Gera código Javascript, HTML através da ZUML
  • 7.
    ZK User InterfaceMarkup Language - ZUML Linguagem de marcação de mais alto nível; Define a interface através de componentes (ex. Grid, datebox, captcha); Interface amigável com todo HTML, Javascript e CSS gerados a partir da ZUML.
  • 8.
    Possibilidade de configuraratributos (como na decimalbox). O input gerado assumirá valores nos moldes do atributo format Exemplo ZUML
  • 9.
    Funcionamento do ZK(Arquitetura) O ZK possui 3 módulos responsáveis por incorporar Ajax a uma aplicação: ZK loader; ZK AU ( asynchronous update ) engine; ZK client engine. Ressaltando que o que ZK loader e o ZK AU engine rodam do lado do servidor e são compostos por Servlets Java. O ZK cliente engine é composto por cógido Javascript (roda no lado do cliente).
  • 10.
  • 11.
    1 : Sempreum cliente faz a requisição de uma página através da URL, o ZK loader interpreta a requisição, gera a página HTML correspondente (baseado no código ZUML referente à URL requisitada) e cria objetos no servidor que permitirão a manipulação da interface da página.
  • 12.
    2: Em seguida,o ZK loader envia a página HTML gerada para o cliente juntamente com o ZK client engine. O ZK client engine irá residir no “lado do cliente” e será responsável por monitorar os eventos disparados pelo browser.
  • 13.
    3: Se qualquerevento for disparado no cliente, o ZK client engine irá enviá-lo (através de uma requisição Ajax) para o ZK AU engine localizado no servidor.
  • 14.
    4: O ZKAU engine recebe a requisição Ajax, atualiza os objetos que manipulam os componentes de interface e retorna uma resposta para o cliente, relatando as modificações que página deverá sofrer.
  • 15.
    5: Assim queo ZK client engine recebe a resposta, ele atualiza a representação visual da página
  • 16.
    Funcionamento do ZK(resumo) ZK loader  carrega página; ZK AU engine e ZK client engine  tornam fácil a comunicação Ajax (objetos no servidor dispensam a programação Javascript); Qualquer componente definido em ZUML terá um objeto para a manipulação da visão no servidor. Vantagem: O ZK prevê vários problemas de compatibilidade entre browsers.
  • 17.
    Injetando Ajax emuma aplicação com o ZK Exemplo prático ressaltando conceitos apresentados. Ambiente Eclipse Ganymede; Tomcat 6.0.
  • 18.
  • 19.
    Escolhendo o tipode aplicação (Dynamic Web Project)
  • 20.
    Nome do projeto:zkdemo Servidor: Apache Tomcat
  • 21.
    Configurações Finais Fazerdownload do ZK em http://www.zkoss.org/download/ e extrair os jars para a pasta WEB-INF/lib do projeto. Configurar o web.xml (vide user guide – copiar e colar). Já podemos começar a desenvolver o nosso exemplo inicial e rever os conceitos apresentados de forma prática.
  • 22.
    Pacotes e classesdo exemplo hello.zul  arquivo com o código ZUML da página. HelloWindow.java  classe java que irá manipular a página hello.zul Obs.: A extensão .zul é a utilizada para os arquivos que contêm código ZUML.
  • 23.
  • 24.
    Atributo use apontapara HelloWindow HelloWindow.java hello.zul
  • 25.
    Atributo use apontapara HelloWindow Ação do botão HelloWindow.java hello.zul
  • 26.
    Atributo use apontapara HelloWindow Recupera o objeto que manipula a textbox através do id Ação do botão Manipula valor da textbox HelloWindow.java hello.zul
  • 27.
    Aplicação Funcionando Sóacessar  http://localhost:8080/zkdemo/hello.zul
  • 28.
  • 29.
    Dica para desenvolvedoresUtilizar o ZK Studio. Plug-in do eclipse que facilita o desenvolvimento de aplicações que utilizam o ZK
  • 30.
    Configurando o ZKStudio Vá no menu help e clique em Software Updates
  • 31.
    Clique em AddSite Configurando o ZK Studio
  • 32.
    Configurando o ZKStudio Adicione em location: http://studioupdate.zkoss.org/studio/update
  • 33.
    Configurando o ZKStudio Selecione a url do ZK Studio e clique em install
  • 34.
    Referências http://www.zkoss.org/ ZK– Ajax without Javascript Framework; Henry Chen, Robbie Cheng (2007) Revista Mundo Java - edição 36