Top Banner
Apache Wicket
71

Introdução Wicket

May 25, 2015

Download

Technology

Adrián Dantas

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!!!