introdução wicket

71
Apache Wicket

Upload: adrian-dantas

Post on 25-May-2015

6.309 views

Category:

Technology


5 download

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.

TRANSCRIPT

Page 1: Introdução Wicket

Apache Wicket

Page 2: Introdução Wicket

Nosso contexto

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

Page 3: Introdução Wicket

Por que Wicket?

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

Page 4: Introdução Wicket

O sonho de todo programador programador é

Page 5: Introdução Wicket

Criar um aplicativo de sucesso

Page 6: Introdução Wicket

Para ficar bilionário como

Page 7: Introdução Wicket

Bill Gates

Page 8: Introdução Wicket

Influente como…

Page 9: Introdução Wicket

Steve Jobs

Page 10: Introdução Wicket

Reconhecido como…

Page 11: Introdução Wicket

Linus Torvald

Page 12: Introdução Wicket

E viver sossegado como…

Page 13: Introdução Wicket

Um bebê

Page 14: Introdução Wicket

Wicket pode fazer isso tudo?

Page 15: Introdução Wicket

NÃO!!!!

Page 16: Introdução Wicket

Suas idéias é que trazem o sucesso!

Page 17: Introdução Wicket

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

Page 18: Introdução Wicket

Mais um framework web?

Page 19: Introdução Wicket

Sobre os “outros” frameworks

Page 20: Introdução Wicket

Um pouco de história

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

Page 21: Introdução Wicket

O Modelo 2

Page 22: Introdução Wicket

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

Page 23: Introdução Wicket

Arquitetura Típica do Modelo 2

Page 24: Introdução Wicket

Conseqüências

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

Page 25: Introdução Wicket

Resultado final

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

Page 26: Introdução Wicket

Foto do resultado final

Page 27: Introdução Wicket

Programador em fim de projeto

Page 28: Introdução Wicket

Você merece mais que isso!!!

Page 29: Introdução Wicket

Lembra do sonho?

Page 30: Introdução Wicket

Wicket pode te ajudar.

Page 31: Introdução Wicket

Como ele difere dos demais?

Page 32: Introdução Wicket

Uma palavra:

Page 33: Introdução Wicket

Simplicidade

Page 34: Introdução Wicket

De que forma?

Page 35: Introdução Wicket

Utilizando componentes

Page 36: Introdução Wicket

Sobre orientação à componentes

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

• Componentes possuem estado• Componentes possuem comportamento

Page 37: Introdução Wicket

Componentes combinados criam soluções

Page 38: Introdução Wicket

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

Page 39: Introdução Wicket

Influências

Echo

Swing API

Page 40: Introdução Wicket

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)

Page 41: Introdução Wicket

Como Wicket faz tudo isso?

Page 42: Introdução Wicket

+ <HTML>

Page 43: Introdução Wicket

Na prática

Page 44: Introdução Wicket

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>

+

=

Page 45: Introdução Wicket

Conceitos

• Componente• Modelos• Templates• Application• Session

Page 46: Introdução Wicket

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

Page 47: Introdução Wicket

Componentes Wicket

Page 48: Introdução 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>

Page 49: Introdução Wicket

Componentes Wicket

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

Page 50: Introdução Wicket

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

Page 51: Introdução Wicket

Componentes Wicket

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

superclasse

Page 52: Introdução Wicket

Conceitos

• Componente• Modelos• Templates• Application• Session

Page 53: Introdução Wicket

Modelos

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

domínio

Page 54: Introdução Wicket

Modelos

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

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

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

Page 55: Introdução Wicket

Conceitos

• Componente• Modelos• Templates• Application• Session

Page 56: Introdução Wicket

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

Page 57: Introdução Wicket

Conceitos

• Componente• Modelos• Templates• Application• Session

Page 58: Introdução Wicket

Application

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

Page 59: Introdução Wicket

Conceitos

• Componente• Modelos• Templates• Application• Session

Page 60: Introdução Wicket

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

Page 61: Introdução Wicket

Criando aplicações com Wicket

Page 62: Introdução 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

Page 63: Introdução Wicket

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>

Page 64: Introdução Wicket

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>

Page 65: Introdução Wicket

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>

Page 66: Introdução Wicket

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}

}

Page 67: Introdução Wicket

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()));}

});}

Page 68: Introdução Wicket

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!

Page 69: Introdução Wicket

Referências

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

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

• IRCNos servidores Freenode ##[email protected]

Page 70: Introdução Wicket

Perguntas

Page 71: Introdução Wicket

OBRIGADO!!!