Por que eu devo ler este artigo: O artigo apresenta do framework Apache Wicket para desenvolvimento de sistemas web na plataforma Java. Para que serve: É utilizado para o desenvolvimento de sistemas web. Diferentemente da maioria dos frameworks web em Java, o Wicket usa uma abordagem orientada a componentes, o que torna o desenvolvimento de tais sistemas parecido com o desenvolvimento de sistemas Desktop. Em que situação o tema é útil: O uso do Apache Wicket é interessante quando se deseja criar aplicações web utilizando componentes prontos, de forma a aumentar a produtividade no desenvolvimento. Tais componentes podem variar desde simples links a componentes mais complexos, que utilizam tecnologias como AJAX. Além disso, o Wicket possui mecanismos que resolvem alguns problemas comuns no desenvolvimento web, como o gerenciamento de estado ao clicar no botão voltar do browser.

Desenvolvimento Web com Apache Wicket - Resumo Devman:O Apache Wicket é um framework para o desenvolvimento de aplicações web com Java. Diferentemente da maioria dos outros frameworks web, que baseiam-se em interceptação de requisições HTTP e execução de ações, o Wicket é orientado a componentes e o seu estilo de programação é parecido com o de aplicações desktop. Nele, cada página é construída a partir de uma classe Java e um arquivo HTML. Os componentes da página são objetos adicionados à página e associados a tags HTML. A utilização de componentes torna bem simples a utilização de tecnologias como AJAX. Para se ter um link acionado por AJAX, por exemplo, basta substituir o componente padrão para links (o componente Link) por um componente de um tipo diferente (o AjaxFallbackLink). Tais características tornam o Wicket um framework bastante interessante e a sua adoção tem crescido consideravelmente nos últimos anos, desde que se tornou parte dos projetos da fundação Apache.

Programação Orientada a Componentes em ambientes web

Crie sistemas web com o mesmo estilo de programação dos sistemas desktop

Introdução

O Apache Wicket é um framework orientado a componentes para o desenvolvimento de aplicações web com Java. Essa característica o torna diferente da maioria dos outros frameworks como, por exemplo, Struts ou Spring MVC, que baseiam-se na interceptação de requisições HTTP e a execução de ações associadas a essa requisição. No Wicket, uma ação é iniciada através de um evento enviado para determinado componente. Existem outros frameworks web orientados a componentes, por exemplo, Tapestry e JSF. A Figura 1 apresenta um gráfico que mostra, no eixo X, alguns modelos de programação em ambientes web, e, no eixo Y, o quão fácil é programar nesses modelos. É possível perceber ao longo do gráfico que no modelo de Servlets ou JSPs estamos programando sem utilizar frameworks e, por isso, temos uma menor facilidade de desenvolvimento. Percebe-se também que o WebWork e o Struts são frameworks que se encaixam melhor no modelo MVC, enquanto que o Wicket e o JSF se encaixam no modelo de Componentes.

 Modelo de Programação x Facilidade de Desenvolvimento
Figura 1. Modelo de Programação x Facilidade de Desenvolvimento[1]

Características

  • A configuração do Wicket não exige a criação/manipulação de XMLs;
  • O seu modelo de programação Orientado a Componentes torna o desenvolvimento de sistemas web parecido com o desenvolvimento de sistemas desktop com Swing. As páginas web e componentes do Wicket são objetos Java, que suportam encapsulamento, herança e eventos;
  • O Wicket não mistura HTML com código Java nem faz uso de taglibs. Os arquivos HTML possuem apenas código HTML e são associados com classes Java através de atributos chamados Wicket ids, existentes nos elementos HTML. Como o Wicket trabalha com HTML puro, os trabalhos do desenvolvedor e do web designer realmente podem ser independentes;
  • Validação de dados simples, flexível e fácl de estender;
  • É possível usar os recursos de localização em páginas HTML, imagens e vários outros recursos;
  • Capacidade de suportar o botão Voltar do navegador através do gerenciamento de versões das páginas. Quando um usuário submete um form ou clica em um link de uma página que foi acessada através do botão Voltar, o Wicket é capaz de identificar se a aplicação ficou em um estado inválido e, nesse caso, redirecionar o usuário para um aviso de página expirada;
  • O Wicket possui componentes que são simples de usar e desenvolver;
  • Possibilidade de funcionamento em ambientes em cluster sem nenhuma configuração adicional. Como o Wicket faz uso de sessão para armazenar os estados dos componentes, pode ser necessário fazer ajustes no mecanismo de replicação do estado dos componentes;
  • O Wicket elimina a necessidade de gerenciar atributos em sessão manualmente. As páginas e componentes são transparentemente armazenados em sessão. Todos os objetos armazenados em sessão podem participar da replicação em um cluster;
  • Capacidade de gerar imagens dinamicamente simplesmente através da implementação de um método paint(), de forma parecida com o Swing;
  • O Wicket possui componentes para listagens de dados que são muito fáceis de usar. Alguns componentes fornecem também suporte a paginação de listas, com ou sem suporte a Ajax;
  • Facilidade de integração com outros frameworks, como Spring e Hibernate.

Observando as características apresentadas, percebemos que algumas das mesmas também estão presentes em outros frameworks, conforme exemplos listados na Tabela 1. Entretanto, o que torna o Apache Wicket diferente é a unificação dessas características em um único framework, simples, eficiente e completo.

Característica Framework
Desenvolvimento através de componentes JavaServer Faces, Tapestry
Utilização de HTML para criação das Views Tapestry
Configuração sem utilização de XML Stripes
Tabela 1. Exemplos de características do Wicket presentes em outros frameworks de desenvolvimento web

Alguns conceitos importantes

Para facilitar o entendimento do Wicket é importante definir dois conceitos que serão bastante utilizados no processo de desenvolvimento de software com o mesmo: os componentes e os modelos.

Componentes

Um componente é um artefato reutilizável de software que implementa uma interface, que pode ser substituído por outro que implementa a mesma interface. No Wicket, componentes são coisas como links, text fields, formulários, etc. Os componentes do Wicket são organizados de forma hierárquica, da mesma forma que componentes HTML são organizados. A Figura 2 mostra, em forma de árvore, um exemplo dessa essa estrutura hierárquica, na qual existe um componente Page que possui como filhos um ListView (utilizado para listagens de dados) e um Form (que representa um formulário). O Form possui ainda três componentes filhos, um TextField (campo de texto com uma linha), uma TextArea (campo de texto com várias linhas) e um Button (botão).

Exemplo de organização hierárquica de componentes
Figura 2. Exemplo de organização hierárquica de componentes

Todos os componentes do Wicket foram desenvolvidos para serem estendidos. Essa extensão é realizada comumente através da utilização de classes anônimas, conforme será apresentado posteriormente na seção “Testando mais recursos”.

Modelos

Os componentes do Apache Wicket manipulam e exibem dados de um domínio específico. Uma possível forma de realizar essa manipulação ou exibição dos objetos do domínio seria passar esses objetos para os componentes. Entretanto, isso não seria conveniente, pois o componente não saberia que atributos desses objetos ele deveria apresentar e/ou manipular em uma página web. Para essa apresentação e/ou manipulação, precisamos de uma abstração entre o componente e o objeto de domínio, que é fornecida no Wicket através dos modelos. Esses modelos encapsulam objetos de domínio e fornecem aos componentes os mecanismos específicos para que eles saibam trabalhar com tais objetos. Um objeto encapsulado em um modelo é chamado de model object.

...
Quer ler esse conteúdo completo? Tenha acesso completo