Introdução Wicket

6.767 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.767
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.179
Ações
Compartilhamentos
0
Downloads
145
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Introdução Wicket

    1. 1. Apache Wicket
    2. 2. Nosso contexto <ul><li>Há uma enorme demanda por sistemas web </li></ul><ul><li>Os ciclos de desenvolvimento ficaram curtos </li></ul><ul><li>As entregas são frequentes </li></ul>
    3. 3. Por que Wicket? <ul><li>Wicket é um framework web permite o desenvolvimento rápido e indolor de aplicativos web </li></ul>
    4. 4. O sonho de todo programador programador é
    5. 5. Criar um aplicativo de sucesso
    6. 6. Para ficar bilionário como
    7. 7. Bill Gates
    8. 8. Influente como…
    9. 9. Steve Jobs
    10. 10. Reconhecido como…
    11. 11. Linus Torvald
    12. 12. E viver sossegado como…
    13. 13. Um bebê
    14. 14. Wicket pode fazer isso tudo?
    15. 15. NÃO!!!!
    16. 16. Suas idéias é que trazem o sucesso!
    17. 17. Wicket pode ajudá-lo a torná-las reais
    18. 18. Mais um framework web?
    19. 19. Sobre os “outros” frameworks
    20. 20. Um pouco de história <ul><li>A maior parte dos frameworks web Java são baseados num modelo MVC chamado de “Modelo 2”. </li></ul>
    21. 21. O Modelo 2
    22. 22. Deficiências do modelo 2 <ul><li>Abstração rasa da natureza stateless do procotolo HTTP. </li></ul><ul><li>Administração manual do estado da IU </li></ul><ul><li>Excesso de artefatos </li></ul><ul><li>Difícil aprendizado </li></ul><ul><li>Baixa reutilização de código </li></ul><ul><li>Impossibilidade de criar IU complexas </li></ul>
    23. 23. Arquitetura Típica do Modelo 2
    24. 24. Conseqüências <ul><li>Induz a criação de código procedural. </li></ul><ul><li>Excesso de plumbing code </li></ul><ul><li>Progresso lento </li></ul><ul><li>Alto custo </li></ul>
    25. 25. Resultado final <ul><li>Processo propenso à erros </li></ul><ul><li>Dificuldade na evolução e manutenção </li></ul><ul><li>Estresse </li></ul><ul><li>Desespero </li></ul><ul><li>Apátia </li></ul>
    26. 26. Foto do resultado final
    27. 27. Programador em fim de projeto
    28. 28. Você merece mais que isso!!!
    29. 29. Lembra do sonho?
    30. 30. Wicket pode te ajudar.
    31. 31. Como ele difere dos demais?
    32. 32. Uma palavra:
    33. 33. Simplicidade
    34. 34. De que forma?
    35. 35. Utilizando componentes
    36. 36. Sobre orientação à componentes <ul><li>A aplicação é construida a partir de componentes reutilizáveis </li></ul><ul><li>Componentes possuem estado </li></ul><ul><li>Componentes possuem comportamento </li></ul>
    37. 37. Componentes combinados criam soluções
    38. 38. História <ul><li>Criado por um Jonathan Locke, ex-membro da equipe de engenharia do Swing UI da Sun </li></ul><ul><li>Versão 1.0 lançada em 2004 </li></ul><ul><li>Em 2007 torna-se um projeto da Apache Software Foundation </li></ul>
    39. 39. Influências Echo Swing API
    40. 40. Vantagens <ul><li>Código-aberto </li></ul><ul><li>Simples </li></ul><ul><li>Orientado a componentes </li></ul><ul><li>Separação de responsabilidades </li></ul><ul><li>Gerenciamento transparente do estado </li></ul><ul><li>Não requer configurações em XML </li></ul><ul><li>Integração a outros frameworks (Spring, Hibernate) </li></ul>
    41. 41. Como Wicket faz tudo isso?
    42. 42. + <HTML>
    43. 43. Na prática
    44. 44. Na prática public 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> + =
    45. 45. Conceitos <ul><li>Componente </li></ul><ul><li>Modelos </li></ul><ul><li>Templates </li></ul><ul><li>Application </li></ul><ul><li>Session </li></ul>
    46. 46. Componente Wicket <ul><li>Bloco fundamental da aplicação </li></ul><ul><li>Responsável sua própria apresentação </li></ul><ul><li>Responde eventos </li></ul><ul><li>Componentes podem ser aninhados numa árvore </li></ul><ul><li>Mantém os dados num objeto modelo </li></ul><ul><li>Existem mais de 220 componentes no Wicket Core e no Wicket Extensions </li></ul>
    47. 47. Componentes Wicket
    48. 48. Componentes Wicket <ul><li>Cada instância possui um ID único </li></ul><ul><li>O template deve conter um markup equivalente identificado pelo atributo wicket:id </li></ul><ul><li>Java </li></ul><ul><ul><li>new Label (“ telefone ”,”011-222-1111”); </li></ul></ul><ul><li>HTML </li></ul><ul><ul><li><span wicket:id =“ telefone” > XXX </span> </li></ul></ul>
    49. 49. Componentes Wicket <ul><li>Podem estar associados ou não a um template HTML próprio. </li></ul>
    50. 50. Componentes Wicket <ul><li>Componentes com templates associados </li></ul><ul><ul><li>Page, Panel, Border, Fragment </li></ul></ul><ul><ul><li>A classe e template do componente devem estar no mesmo pacote e ter o mesmo nome </li></ul></ul><ul><ul><li>Exemplo: </li></ul></ul><ul><ul><li>src/com/acme/comp/ Slider.java </li></ul></ul><ul><ul><li>src/com/acme/comp/ Slider.html </li></ul></ul>
    51. 51. Componentes Wicket <ul><li>Componentes sem templates associados </li></ul><ul><ul><li>Label, Button, DropDown, Link, Form e outros </li></ul></ul><ul><ul><li>Seus templates encontram-se junto a uma superclasse </li></ul></ul>
    52. 52. Conceitos <ul><li>Componente </li></ul><ul><li>Modelos </li></ul><ul><li>Templates </li></ul><ul><li>Application </li></ul><ul><li>Session </li></ul>
    53. 53. Modelos <ul><li>Implementam a interface Imodel </li></ul><ul><li>Encapsulam os objetos de domínio </li></ul><ul><li>Ligam os componentes aos objetos do domínio </li></ul>
    54. 54. Modelos <ul><li>Exemplos: </li></ul><ul><li>add (new Label (“ nome ”, “ João ”)); </li></ul><ul><li>add (new Label (“ nome ”, new PropertyModel ( pessoa , “ nome ”))); </li></ul><ul><li><span wicket:id =“ nome” > XYZ </span> </li></ul>
    55. 55. Conceitos <ul><li>Componente </li></ul><ul><li>Modelos </li></ul><ul><li>Templates </li></ul><ul><li>Application </li></ul><ul><li>Session </li></ul>
    56. 56. Templates <ul><li>Escritos em HTML </li></ul><ul><li>Os webdesigner pode trabalhar com suas ferramentas favoritas </li></ul><ul><li>As ligações com os componentes são feitas por meio do atributo wicket:id </li></ul>
    57. 57. Conceitos <ul><li>Componente </li></ul><ul><li>Modelos </li></ul><ul><li>Templates </li></ul><ul><li>Application </li></ul><ul><li>Session </li></ul>
    58. 58. Application <ul><li>Ponto de entrada da aplicação web </li></ul><ul><li>Iniciação </li></ul><ul><li>Configuração </li></ul><ul><li>Configurada no web.xml </li></ul><ul><li>Define página home </li></ul>
    59. 59. Conceitos <ul><li>Componente </li></ul><ul><li>Modelos </li></ul><ul><li>Templates </li></ul><ul><li>Application </li></ul><ul><li>Session </li></ul>
    60. 60. Session <ul><li>Mantém o estado da aplicação para um usuário </li></ul><ul><li>Podem ser personalizadas </li></ul><ul><li>Com sessões personalizadas pode-se conhecer o que pode ser armazenado nelas </li></ul><ul><li>Sessões personalizadas são type-safe </li></ul>
    61. 61. Criando aplicações com Wicket
    62. 62. Criando aplicações com Wicket <ul><li>A forma mais rápida é utilizando um archetype maven </li></ul><ul><li>$ mvn archetype:create </li></ul><ul><li>-DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.4 -DgroupId= com.acme -DartifactId= agenda </li></ul><ul><li>$ cd agenda </li></ul><ul><li>$ mvn eclipse:eclipse </li></ul>
    63. 63. Criando aplicações com Wicket <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> Agenda </title> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><h1>Endereços</h1> </li></ul><ul><li><table> </li></ul><ul><li><tr> </li></ul><ul><li><td><span> Adrián Dantas </span></td> </li></ul><ul><li><td><span> 880-2600 </span></td> </li></ul><ul><li><td><span> Analista </span></td> </li></ul><ul><li></tr> </li></ul><ul><li></table> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    64. 64. Criando aplicações com Wicket <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> Agenda </title> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><h1>Endereços</h1> </li></ul><ul><li><table> </li></ul><ul><li><tr wicket:id=&quot;registros&quot; > </li></ul><ul><li><td><span> Adrián Dantas </span></td> </li></ul><ul><li><td><span> 880-2600 </span></td> </li></ul><ul><li><td><span> Analista </span></td> </li></ul><ul><li></tr> </li></ul><ul><li></table> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    65. 65. Criando aplicações com Wicket <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><title> Agenda </title> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><h1>Endereços</h1> </li></ul><ul><li><table> </li></ul><ul><li><tr wicket:id=&quot;registros&quot; > </li></ul><ul><li><td><span wicket:id=&quot;nome&quot; > Adrián Dantas </span></td> </li></ul><ul><li><td><span wicket:id=”telefone&quot; > 880-2600 </span></td> </li></ul><ul><li><td><span wicket:id=”profissao&quot; > Analista </span></td> </li></ul><ul><li></tr> </li></ul><ul><li></table> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
    66. 66. Criando aplicações com Wicket <ul><li>package com.acme.paginas; </li></ul><ul><li>import org.apache.wicket.PageParameters; </li></ul><ul><li>import org.apache.wicket.markup.html.WebPage; </li></ul><ul><li>import org.apache.wicket.markup.html.basic.Label; </li></ul><ul><li>public class ListaPage extends WebPage { </li></ul><ul><li>public ListaPage (final PageParameters parameters ) { </li></ul><ul><li>// Configuracao dos componentes da pagina </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
    67. 67. Criando aplicações com Wicket <ul><li>public class ListaPage extends WebPage { </li></ul><ul><li>public ListaPage( final PageParameters parameters) { </li></ul><ul><li>add(registrosListView = new ListView(&quot;registros&quot;, registrosList) { </li></ul><ul><li>protected void populateItem(ListItem item) { </li></ul><ul><li>final Registro registro = </li></ul><ul><li>(Registro) item.getModelObject(); </li></ul><ul><li>item.add( new Label(&quot;nome&quot;, registro.getNome())); </li></ul><ul><li>item.add( new Label(&quot;telefone&quot;, registro.getTelefone())); </li></ul><ul><li>item.add( new Label(&quot;profissao&quot;, registro.getProfissao())); </li></ul><ul><li>} </li></ul><ul><li>}); </li></ul><ul><li>} </li></ul>
    68. 68. Resumo <ul><li>Wicket fornece um ambiente rápido de desenvolvimento de aplicações web </li></ul><ul><li>Os desenvolvedores podem se concentrar na lógica de negócios </li></ul><ul><li>Utiliza componentes em Java e HTML para apresentação </li></ul><ul><li>É simples e divertido! </li></ul>
    69. 69. Referências <ul><li>Website </li></ul><ul><ul><li>http://wicket.apache.org/ </li></ul></ul><ul><li>Wiki </li></ul><ul><ul><li>http://cwiki.apache.org/WICKET/ </li></ul></ul><ul><li>IRC </li></ul><ul><ul><li>Nos servidores Freenode </li></ul></ul><ul><ul><li>##wicket@irc.freenode.net </li></ul></ul>
    70. 70. Perguntas
    71. 71. OBRIGADO!!!

    ×