Introdução Wicket

Preview:

DESCRIPTION

Um breve intrução ao framework web Wicket. Esta apresentação está focada em demonstrar as vantagens do wicket que são: simplicidade e agilidade.

Citation preview

Apache Wicket

Nosso contexto

• Há uma enorme demanda por sistemas web• Os ciclos de desenvolvimento ficaram curtos• As entregas são frequentes

Por que Wicket?

• Wicket é um framework web permite o desenvolvimento rápido e indolor de aplicativos web

O sonho de todo programador programador é

Criar um aplicativo de sucesso

Para ficar bilionário como

Bill Gates

Influente como…

Steve Jobs

Reconhecido como…

Linus Torvald

E viver sossegado como…

Um bebê

Wicket pode fazer isso tudo?

NÃO!!!!

Suas idéias é que trazem o sucesso!

Wicket pode ajudá-lo a torná-las reais

Mais um framework web?

Sobre os “outros” frameworks

Um pouco de história

• A maior parte dos frameworks web Java são baseados num modelo MVC chamado de “Modelo 2”.

O Modelo 2

Deficiências do modelo 2

• Abstração rasa da natureza stateless do procotolo HTTP.

• Administração manual do estado da IU• Excesso de artefatos• Difícil aprendizado• Baixa reutilização de código• Impossibilidade de criar IU complexas

Arquitetura Típica do Modelo 2

Conseqüências

• Induz a criação de código procedural.• Excesso de plumbing code• Progresso lento• Alto custo

Resultado final

• Processo propenso à erros • Dificuldade na evolução e manutenção• Estresse• Desespero• Apátia

Foto do resultado final

Programador em fim de projeto

Você merece mais que isso!!!

Lembra do sonho?

Wicket pode te ajudar.

Como ele difere dos demais?

Uma palavra:

Simplicidade

De que forma?

Utilizando componentes

Sobre orientação à componentes

• A aplicação é construida a partir de componentes reutilizáveis

• Componentes possuem estado• Componentes possuem comportamento

Componentes combinados criam soluções

História

• Criado por um Jonathan Locke, ex-membro da equipe de engenharia do Swing UI da Sun

• Versão 1.0 lançada em 2004• Em 2007 torna-se um projeto da Apache

Software Foundation

Influências

Echo

Swing API

Vantagens

• Código-aberto• Simples• Orientado a componentes• Separação de responsabilidades• Gerenciamento transparente do estado• Não requer configurações em XML• Integração a outros frameworks (Spring,

Hibernate)

Como Wicket faz tudo isso?

+ <HTML>

Na prática

Na práticapublic class OlaMundo extends WebPage {

public OlaMundo() {add(new Label(“mensagem”, “Ola, mundo!!!”));

}}

<html><body>

<h1 wicked:id=“message”>TEXTO A SER SUBSTITUIDO </h1></body></html>

<html><body>

<h1 wicked:id=“message”>Ola, mundo!!!</h1></body></html>

+

=

Conceitos

• Componente• Modelos• Templates• Application• Session

Componente Wicket

• Bloco fundamental da aplicação• Responsável sua própria apresentação• Responde eventos• Componentes podem ser aninhados numa

árvore• Mantém os dados num objeto modelo• Existem mais de 220 componentes no Wicket

Core e no Wicket Extensions

Componentes Wicket

Componentes Wicket

• Cada instância possui um ID único• O template deve conter um markup

equivalente identificado pelo atributo wicket:id

• Javanew Label(“telefone”,”011-222-1111”);

• HTML<span wicket:id=“telefone”>XXX</span>

Componentes Wicket

• Podem estar associados ou não a um template HTML próprio.

Componentes Wicket

• Componentes com templates associados– Page, Panel, Border, Fragment– A classe e template do componente devem estar

no mesmo pacote e ter o mesmo nome

Exemplo:src/com/acme/comp/Slider.javasrc/com/acme/comp/Slider.html

Componentes Wicket

• Componentes sem templates associados– Label, Button, DropDown, Link, Form e outros– Seus templates encontram-se junto a uma

superclasse

Conceitos

• Componente• Modelos• Templates• Application• Session

Modelos

• Implementam a interface Imodel• Encapsulam os objetos de domínio• Ligam os componentes aos objetos do

domínio

Modelos

Exemplos:add(new Label(“nome”, “João”));

add(new Label(“nome”, new PropertyModel(pessoa, “nome”)));

<span wicket:id=“nome”>XYZ</span>

Conceitos

• Componente• Modelos• Templates• Application• Session

Templates

• Escritos em HTML• Os webdesigner pode trabalhar com suas

ferramentas favoritas• As ligações com os componentes são feitas

por meio do atributo wicket:id

Conceitos

• Componente• Modelos• Templates• Application• Session

Application

• Ponto de entrada da aplicação web• Iniciação• Configuração• Configurada no web.xml• Define página home

Conceitos

• Componente• Modelos• Templates• Application• Session

Session

• Mantém o estado da aplicação para um usuário

• Podem ser personalizadas• Com sessões personalizadas pode-se conhecer

o que pode ser armazenado nelas• Sessões personalizadas são type-safe

Criando aplicações com Wicket

Criando aplicações com Wicket

• A forma mais rápida é utilizando um archetype maven$ mvn archetype:create

-DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.4 -DgroupId=com.acme-DartifactId=agenda$ cd agenda$ mvn eclipse:eclipse

Criando aplicações com Wicket<html><head><title>Agenda</title></head><body><h1>Endereços</h1><table><tr><td><span>Adrián Dantas</span></td><td><span>880-2600</span></td><td><span>Analista</span></td></tr></table></body></html>

Criando aplicações com Wicket<html><head><title>Agenda</title></head><body><h1>Endereços</h1><table><tr wicket:id="registros"><td><span>Adrián Dantas</span></td><td><span>880-2600</span></td><td><span>Analista</span></td></tr></table></body></html>

Criando aplicações com Wicket<html><head><title>Agenda</title></head><body><h1>Endereços</h1><table><tr wicket:id="registros"><td><span wicket:id="nome">Adrián Dantas</span></td><td><span wicket:id=”telefone">880-2600</span></td><td><span wicket:id=”profissao">Analista</span></td></tr></table></body></html>

Criando aplicações com Wicketpackage com.acme.paginas;

import org.apache.wicket.PageParameters;import org.apache.wicket.markup.html.WebPage;import org.apache.wicket.markup.html.basic.Label;

public class ListaPage extends WebPage {public ListaPage(final PageParameters parameters) {

// Configuracao dos componentes da pagina}

}

Criando aplicações com Wicketpublic class ListaPage extends WebPage {public ListaPage(final PageParameters parameters) {

add(registrosListView = new ListView("registros", registrosList) {protected void populateItem(ListItem item) {

final Registro registro = (Registro) item.getModelObject();item.add(new Label("nome", registro.getNome()));item.add(new Label("telefone",

registro.getTelefone()));item.add(new Label("profissao",

registro.getProfissao()));}

});}

Resumo

• Wicket fornece um ambiente rápido de desenvolvimento de aplicações web

• Os desenvolvedores podem se concentrar na lógica de negócios

• Utiliza componentes em Java e HTML para apresentação

• É simples e divertido!

Referências

• Website– http://wicket.apache.org/

• Wiki– http://cwiki.apache.org/WICKET/

• IRCNos servidores Freenode ##wicket@irc.freenode.net

Perguntas

OBRIGADO!!!

Recommended