Inicio aqui, uma série de tutoriais sobre o Wicket, este maravilhoso framework com o qual venho tendo enorme prazer em trabalhar. Fornecendo incríveis facilidades para o desenvolvimento Web em JAVA, o Wicket vem se tornando um dos melhores da categoria.
Minha idéia é seguir a linha de raciocínio que utilizei durante a minha aprendizagem. Entretanto, isso não significa que sou um expert, intocável e mestre Wicket. Ainda estudo e aprendo dia após dia. Portanto, ao constatarem erros, fiquem à vontade para comentar sobre eles. Assim, juntos buscaremos sempre as melhores soluções.
A motivação inicial pra a série de tutoriais foi a falta de documentação, pois o Wicket é relativamente novo e, portanto, ainda carece de tutoriais, exemplos e discussões. Espero, com os artigos, difundir um pouco mais as informações sobre o framework porque
Pois bem, antes de fazermos uma breve introdução sobre o Wicket, gostaria de citar as referências mais utilizadas por desenvolvedores que utilizam o framework atualmente.

Apache Wicket: Site oficial do projeto. Apresenta introdução, documentação sobre alguns componentes e exemplos de utilização.
Reference Library: Pertence ao site oficial. Explica como fazer várias coisas com o Wicket. Uma boa pedida para os iniciantes. Vale a pena conferir.
Wicket in Action: Ótimo livro para quem deseja inicar os estudos. Apresenta uma boa didática. com vários exemplos. O autor vai, durante o livro, construindo um aplicativo para venda de queijos online. Com este exemplo, os leitores aprendem fácil e rapidamente os conceitos importantes do framework.
Wicket Stuff: Possui exemplos e vários projetos relacionados ao Wicket. Podemos encontrar alguns bons componentes para utilizarmos em conjunto com o framework.
Atualmente, existem diversos frameworks para programação JAVA Web, cada qual possuindo prós e contras. Assim, no princípio de um novo projeto, vários programadores chegam a ficar um tanto quanto preocupados no momento da escolha do melhor framework, dadas as inúmeras alternativas, conforme podemos ver na figura a seguir:
Uma possível pergunta pode surgir: “Bom Raphael, se existem tantas opções, porque escolher o Wicket?”
Peço a permissão de responder essa pergunta explicando alguns termos como stateful, stateless e também sobre clareza de código e separação coerente entre os “dois mundos”, no caso, HTML e JAVA.
Creio que todos os interessados em programação já pararam pra pensar em como é fácil (leia-se menos difícil) se programar em Java, visando o desenvolvimento de aplicativos Desktop. A facilidade a que me refiro diz respeito ao controle de componentes/variáveis existentes no projeto. Podemos criar vários painéis/frames/modais sem a necessidade de controlar requisições entre elas. Isso porque, todo esse controle do estado da conexão é “automático”, ou seja, o estado da conexão é sempre mantido. Tal fato, caracteriza Statefull Programming.
Muitas vezes ao utilizarmos aplicações web, imaginamos que a programação é feita igualmente à Desktop. Ao contrário, o protocolo HTTP não fornece nenhuma facilidade “embutida” para continuar interações entre as páginas, ou seja, ele não possui nenhuma informação sobre o estado da aplicação (stateless). Tal tarefa fica a cargo do desenvolvedor.
A técnica comumente utilizada para controlar o estado é passar informações diretamente pela URL, por exemplo:
http://www.raphaelmonroe.com/index.php?page_id=3&opentab=5
O simples código acima ilustra a passagem de parâmetros visando um controle da aplicação. No caso, foi solicitada a página com ID=3 e nela, deve-se abrir a aba 5.
Mas como tudo apresenta falhas, passar informações pela URL possui vários questionamentos à respeito de segurança/autenticação e, nos dias de hoje, é difícil imaginar uma aplicação web, na qual todos os estados são controlados por parâmetros no endereço.

Creio que quase todos os desenvolvedores JAVA Web, iniciaram seus estudos e projetos (e ainda continuam) seguindo o caminho : Servlets, JSP, JSF, Facelets, RichFaces e por ae vai. Um dos motivos que levam os desenvolvedores para essa estrada, é a quantidade de informações/documentação/exemplos existentes na web. Evidencia-se aqui, um grande problema para os desenvolvedores : a falta de conhecimento teórico.
Em muitos fóruns que frequento, me deparo com inúmeras dúvidas que poderiam ser respondidas com um mínimo de conhecimento teórico. Assim, desenvolvedores vêm utilizando exemplos da net para “aplicações sérias” no âmbito corporativo, sem ao menos se preocuparem com o que estão fazendo, “remendando” e “arresorvendo na gambiarra”, literalmente. Não estou aqui crucificando frameworks e/ou programadores, só estou alertando para o fato de que “teoria é preciso”.
Como falei em JSF, gostaria de indicar um dos melhores posts que já vi à respeito: “O que todo bom desenvolvedor JSF deveria saber”
Bom, mas porque falar em clareza de código? No site oficial do Wicket, encontramos a seguinte frase à respeito do desenvolvimento em JSP, tendo em vista a presença de código JAVA + HTML :
JSP is by far the worst offender, allowing the embedding of Java code directly in web pages, but to some degree almost all of the frameworks from the list (except Tapestry) above introduce some kind of special syntax to your HTML code.
A evolução das empresas de TI contribui para maiores “divisões” em projetos. A idéia de Webmasters, os quais faziam design, código, etc já está ultrapassada. Hoje, encontramos designers, coders, testers, dentre outros. Aqui, evidencia-se um importante requisito: organização e clareza em todas as partes do projeto, visto que muitas empresas até mesmo terceirizam serviços de design. Portanto, quanto maior a separação entre HTML + CSS e JAVA, maior o rendimento e sucesso de um projeto.
Ao se programar com o Wicket, você esquece que está desenvolvendo um aplicativo web. Isso porque o desenvolvedor está livre para programar em JAVA com todos os conceitos de orientação a objeto, o qual é stateful. Ou seja, você estará desenvolvendo componentes stateful para um ambiente stateless!! WTF!!!
Essa é a grande “sacada” do Wicket. O controle do estado da aplicação é automático.
Um outro aspecto importantíssimo que me ajudou muito, é possibilidade de herança, tanto no JAVA quanto no HTML!!! Basta utilizarmos namespaces pré-definidos e compatíveis com xhtml.
Com o Wicket o controle é feito orientado à componentes e não à páginas. Tal fato visa facilitar os programadores desktop acostumados com o Swing e awt. Vale ressaltar também o fato de que você nunca verá “códigos lógicos” em páginas HTML, as quais apresentarão somente códigos estáticos, sendo a lógica totalmente desenvolvida em JAVA. Por exemplo, se você deseja imprimir na tela uma lista de clientes, basta o seguinte código HTML, ficando a definição do dataview para o código JAVA:
1 2 3 4 5 6 7 | <table>
<tr wicket:id="clientsList">
<td>
<span wicket:id=”client_name” />
</td>
</tr>
</table> |
Para terminar e não deixar o post muito extenso, uma frase que resume bem os conceitos do Wicket, retirada do site oficial:
Wicket is all about simplicity. There are no configuration files to learn in Wicket. Wicket is a simple class library with a consistent approach to component structure. In Wicket, your web applications will more closely resemble a Swing application than a JSP application. If you know Java (and especially if you know Swing), you already know a lot about Wicket.
“Wicket é simplicidade. Não é necessário aprender a criar arquivos de configuração (como aqueles imensos xml’s de outros frameworks, pois com o wicket é tudo automático). Wicket é uma biblioteca que permite uma programação muito próxima á programação por componentes, pois com este framework, sua aplicação será mais parecida com uma aplicação Swing do que uma mesma JSP. Se você conhece Java (especificamente o Swing), você já possui grande conhecimento sobre o Wicket.”
Em próximos posts, iniciaremos nossos estudos através de exemplos práticos, abordando desde a configuração da IDE até a criação de suas primeiras aplicações utilizando o Wicket.
Até Mais,
[]’s





