Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desenvolvendo para WEB com JAVA

3,760 views

Published on

Material utilizado durante o curso de Desenvolvendo para WEB com JAVA, realizado na UNIPAR campus Paranavaí em julho de 2011.

Published in: Technology, News & Politics
  • Be the first to comment

  • Be the first to like this

Desenvolvendo para WEB com JAVA

  1. 1. Desenvolvendo para WEB com JAVA<br />
  2. 2. Quem somos?<br />Ricardo Ribeiro Rufino<br />Bacharel em Sistemas de Informação (UNIPAR 2010)<br />Pós-graduando em Des. de Sistemas OO em Java (CESUMAR)<br />Willian Magalhães<br />Bacharel em Sistemas de Informação (UNIPAR 2007)<br />Especialista em Des. de Sistemas para WEB (UEM 2010)<br />
  3. 3. INTRODUÇÃO<br />
  4. 4. O que é Java?<br />Uma linguagem de programação orientada à objetos multiplataforma, criada na década de 90 pela Sun Microsystems e atualmente é mantida pela Oracle.<br />
  5. 5. Plataformas<br />Java SE – Java Standard Edition<br />Java EE – Java Enterprise Edition<br />Java ME – Java Micro Edition<br />
  6. 6. Conceitos básicos<br />JRE – Java RuntimeEnviroment (APIs + JVM)<br />JVM – Java Virtual Machine<br />JDK – Java Developer Kit (compilador + bibliotecas)<br />Bytecode<br />Bytecode JAVA<br />Classe JAVA<br />Compilador JAVA<br />JVM<br />Sistema Operacional<br />
  7. 7. PRIMEIRO PROGRAMA<br />
  8. 8. Primeiro programa<br />curso.app.Primeiro.java<br />publicclass Primeiro {<br />publicstaticvoidmain(Stringargs[]) {<br />System.out.println(“Meu primeiro programa”);<br /> }<br />}<br />
  9. 9. Variáveis<br />curso.entidades.Gente.java<br />publicclass Gente {<br />privateString nome;<br />privateint idade;<br />}<br />Primitivas (valor namemória)<br />- boolean, char, int, long, float, double<br />Referência(endereço de memória)<br />- Boolean, Character, String, Integer, Long, Float, Double<br />
  10. 10. ENCAPSULAMENTO<br />
  11. 11. Encapsulamento<br />curso.entidades.Gente.java<br />...<br />publicvoidsetNome(String nome) {<br />this.nome = nome;<br /> }<br />publicStringgetNome() {<br />returthis.nome;<br /> }<br />...<br />Default (mesmopacote)<br />Public (qualquerum acessa)<br />Private ( somentedentro da classe - getters / setters)<br />
  12. 12. Encapsulamento<br />curso.app.Principal.java<br />publicclass Principal {<br />publicstaticvoidmain(String[] args) {<br /> Gente g = new Gente();<br />g.setNome("Willian");<br />g.setIdade(10);<br />System.out.printf("Olá %s, você tem %d anos de idade.n", g.getNome(), g.getIdade());<br /> }<br />}<br />
  13. 13. HERANÇA<br />
  14. 14. Herança<br />curso.entidades.Torcedor.java<br />publicclass Torcedor extends Gente {<br />privateString time;<br />publicvoidsetTime(String time) {<br />this.time = time;<br /> }<br />publicStringgetTime() {<br />returnthis.time;<br /> }<br />}<br />
  15. 15. Herança<br />curso.app.Principal.java<br />publicclass Principal {<br />publicstaticvoidmain(String[] args) {<br /> Torcedor t = new Torcedor();<br />t.setNome("Willian");<br />t.setTime(“ACP");<br />System.out.printf("%s é torcedor do time %s.n", t.getNome(), t.getTime()); <br /> }<br />}<br />
  16. 16. REESCRITA<br />
  17. 17. Reescrita<br />curso.entidades.Acpiano.java<br />publicclassAcpianoextends Torcedor {<br />publicvoidsetTime(String time) {<br />this.time = “ACP”;<br /> }<br />}<br />Mesmaassinatura no método<br />
  18. 18. Reescrita<br />curso.app.Principal.java<br />publicclass Principal {<br />publicstaticvoidmain(String[] args) {<br />Acpiano a = new Acpiano();<br />a.setTime(“Cianorte");<br />System.out.printf("%s é meu time.n", t.getTime()); <br /> }<br />}<br />
  19. 19. SOBRECARGA<br />
  20. 20. Sobrecarga<br />curso.entidades.Gente.java<br />...<br /> // novo método<br />publicvoidsetNome(String nome, String sobrenome) {<br />this.nome = nome + " " + sobrenome;<br />}<br />...<br />Assinaturadiferente no método<br />
  21. 21. Sobrecarga<br />curso.app.Principal.java<br />publicclass Principal {<br />publicstaticvoidmain(String[] args) {<br /> Gente g = new Gente();<br />g.setNome("Willian", "Magalhães");<br />System.out.printf("Meu nome: %s.n", g.getNome()); <br /> }<br />}<br />
  22. 22. POLIMORFISMO<br />
  23. 23. Polimorfismo<br />curso.entidades.Gente.java<br />...<br />publicvoiddormir() {<br />System.out.println(“GENTE dormindo zzz...");<br /> }<br />...<br />
  24. 24. Polimorfismo<br />curso.entidades.Homem.java<br />publicclassHomem extends Gente {<br />publicvoid dormir() {<br />System.out.println(“HOMEM dormindo zzz...");<br />}<br />}<br />
  25. 25. Polimorfismo<br />curso.entidades.Mulher.java<br />publicclassMulher extends Gente {<br />publicvoid dormir() {<br />System.out.println(“MULHER dormindo zzz...");<br />}<br />}<br />
  26. 26. Sobrecarga<br />curso.app.Principal.java<br />publicclass Principal {<br />publicvoidfazerDormir( Gente gente ) {<br />gente.dormir();<br /> }<br />publicstaticvoidmain(String[] args) {<br /> Principal p = new Principal();<br />p.fazerDormir( new Gente() );<br />p.fazerDormir( new Homem() );<br />p.fazerDormir( new Mulher() );<br />}<br />}<br />
  27. 27. CONTROLE DE FLUXO<br />
  28. 28. If-Else<br />curso.fluxo.IfElse.java<br />...<br />int idade = 15;<br />booleanamigoDoDono = true;<br />if (idade >= 18 || amigoDoDono == true) {<br />System.out.println(“Pode entrar”);<br /> } else {<br />System.out.println(“Não pode entrar”);<br /> }<br />...<br />
  29. 29. Switch<br />curso.fluxo.Switch.jSwitchava<br />1/2<br />...<br />int nota = 4;<br /> switch (nota / 10) {<br /> case 10 :<br />System.out.println("ÔÔÔ NERD! :)");<br /> break;<br /> case 9 :<br />System.out.println("Ótimo.");<br /> break;<br /> case 8 :<br />System.out.println("Bom.");<br /> break;<br />
  30. 30. Switch<br />curso.fluxo. Switch.java<br />2/2<br /> case 7 :<br />System.out.println("Pode ser melhor que isso.");<br /> break;<br /> case 6 :<br />System.out.println("UFAA! quase, quase einn...");<br /> break; <br /> default :<br />System.out.println("Ihh, faiô! :(");<br /> break; <br /> }<br />...<br />
  31. 31. While<br />curso.fluxo.While.java<br />...<br />int idade = 14;<br />while (idade < 18) { <br />System.out.printf("Com %d eu sou de menor.n", idade);<br /> idade++;<br /> }<br />System.out.printf("Com %d eu sou de MAIOR.n", idade);<br />...<br />
  32. 32. Do...While<br />curso.fluxo.While.java<br />...<br />int contador = 5;<br /> do {<br />System.out.println(contador + " - tuuuuuu...");<br /> contador--;<br /> } while ( contador > 0);<br />...<br />
  33. 33. For<br />curso.fluxo.For.java<br />...<br /> for (int i = 1; i <= 10; i++) {<br />System.out.println("Tabuada do " + i);<br /> for (int j = 1; j <= 10; j++) {<br />System.out.println(i + " X " + j + " = " + (i * j));<br /> }<br /> }<br />...<br />
  34. 34. Controlando loops<br />curso.fluxo.For.java<br />...<br />intparaNaTabuadaDo = 3;<br /> for (int i = 1; i <= 10; i++) {<br />System.out.println("Tabuada do " + i);<br /> for (int j = 1; j <= 10; j++) {<br />System.out.println(i + " X " + j + " = " + (i * j));<br /> }<br />if (i == paraNaTabuadaDo) {<br /> break;<br /> }<br />}<br />
  35. 35. ARRAYS E COLEÇÕES<br />
  36. 36. Arrays<br />curso.arrays.Array.java<br />...<br /> Torcedor[] torcida = new Torcedor[3];<br /> Torcedor t = new Torcedor();<br />t.setNome("Carlos");<br /> torcida[0] = t;<br />System.out.println(torcida[0].getNome());<br /> torcida[1] = new Torcedor();<br /> torcida[1].setNome("Juca");<br />System.out.println(torcida[1].getNome());<br />...<br />Torcedor<br />Torcedor<br />null<br />nomeCarlos<br />nomeCarlos<br />torcedores<br />
  37. 37. Percorrendo Arrays<br />curso.arrays.Array.java<br />...<br /> // fixa<br /> for (int i = 0; i < 3; i++) {<br />System.out.println(torcida[i].getNome());<br /> }<br /> // dinâmica<br /> for (int j = 0; j < torcida.length; j++) {<br />System.out.println(torcida[j].getNome());<br /> }<br />...<br />
  38. 38. Collections framework<br />Utilizando arrays<br />- Não podemos redimensionar um array (falta de espaço)<br />- É impossível buscar um item diretamente quando não sabemos o índice<br />- Não conseguimos saber quantas posições já foram ou estão populadas (sem métodos auxiliares)<br />API Collections<br />- Possuí estruturas avançadas que facilitam o manuseio das informações<br />
  39. 39. Listas<br />curso.entidades.Listas1.java<br />...<br />ArrayList nomes = new ArrayList();<br />nomes.add("Juca");<br />nomes.add("Carlos");<br /> for (int i = 0; i < nomes.size(); i++) {<br />System.out.println(nomes.get(i));<br /> }if(nomes.contains("Carlos")) {<br />System.out.println("tem");<br /> } else {<br />System.out.println("não tem");<br /> }<br />...<br />ArrayList NÃO é um Array<br />
  40. 40. Listas com Generics<br />curso.entidades.Listas1.java<br />...<br /> Torcedor t1 = new Torcedor();<br /> t1.setNome("Juca");<br /> Torcedor t2 = new Torcedor();<br /> t2.setNome(“Carlos");<br />List<Torcedor> torcedores = new ArrayList<Torcedor>();<br />torcedores.add(t1);<br />torcedores.add(t2);<br /> for (int i = 0; i < torcedores.size(); i++) {<br />System.out.println(torcedores.get(i).getNome());<br /> }<br />...<br />
  41. 41. PERSISTÊNCIA<br />
  42. 42. Persistência<br />JDBC (Java DatabaseConnectivity)<br />- Generaliza a interface com os bancos de dados<br />Aplicação JAVA<br />JDBC API<br />JDBC Driver Manager<br />JDBC Driver<br />JDBC Driver<br />JDBC Driver<br />MYSQL<br />Postgres<br />Oracle<br />
  43. 43. Persistência<br />Exemplo: JDBC (livraria)<br />- SQL Injection<br />- Fábrica de conexões<br />
  44. 44. Persistência<br />JPA2 e Hibernate<br />- Problemas<br />- Múltiplas sintaxes da linguagem SQL<br /> - Orientação à Objetos x Modelo Entidade Relacionamento<br />- Ferramentas ORM (ObjectRelationalMapper)<br /> - JPA (Java Persistente API) – especificação / visa padronizar<br /> - Hibernate – framework ORM<br />
  45. 45. Persistência<br />Exemplo: JPA2-Hibernate (livraria)<br />- Notações (principais)<br /> - @Entity – indica que se a classe será persistida no banco<br /> Aplicação antes da declaração da classe<br /> - @Id – indica atributo como chave primária<br /> Aplicação antes da declaração do atributo<br /> - @GeneratedValue – indica que o atributo é auto-increment<br /> Aplicação depois do @Id<br /> @GeneratedValue(strategy= GenerationType.AUTO)<br />
  46. 46. Persistência<br />- @Table – indica o nome da tabela (antes do @Entity)<br /> Aplicação antes do @Entity<br /> @Table(name="Publisher")<br /> - @Column – indica um nome para o atributo e algumas restrições<br /> Aplicação antes da declaração do atributo<br /> @Column(name="publisher_name", nullable=false)<br /> - @Transient – in dica qual atributo não serão mapeados para colunas<br /> Aplicação antes da declaração do atributo<br />
  47. 47. WEB<br />
  48. 48. Entendendo a WEB<br />Internet<br />Usuário<br />Servidor<br />
  49. 49. Servidor<br />Web Container<br />- Fornece recursos necessários para a interação Web<br /> - Envio e recebimento de mensagens HTTP<br /> - Acesso simultâneo<br />- Tomcat e Jetty<br />Servidores de aplicação<br />- JBoss, Glassfish, WebSphere<br />
  50. 50. Conteúdo<br />Servlets ou JSP<br />Frameworks<br />- JSF<br />- Struts<br />- Spring <br />
  51. 51. JSF<br />
  52. 52. O framework<br />Agilidade<br />Componente prontos<br />XHTML<br />ManagedBeans<br />Class Java<br />Facelets<br />Componentes visuais<br />BD<br />
  53. 53. O framework<br />Exemplo: Loteria<br />
  54. 54. Componentes visuais<br />Componentes visuais<br />- Facilitam nossa vida<br />- Variedades de componentes em sua especificação<br />- Arquitetura de componentes visuais JSF permite criação de novos<br /> - PrimeFace (http://www.primefaces.org/)<br />- RichFaces (http://www.jboss.org/richfaces)<br />
  55. 55. Componentes visuais<br />Exemplo: ComponentesVisuais<br />
  56. 56. Navegação<br />Navegação estática implícita<br /> - nome da página<br />Navegação estática explicita<br /> - faces-config.xml<br />Navegação dinâmica implícita<br /> - Bean retorna nome da página<br />Navegação dinâmica explicita<br /> - Beanretora nome (faces-config.xml)<br />
  57. 57. Navegação<br />Exemplo: Navegação<br />
  58. 58. Bibliografia<br />LIVROS<br />- Java como Programar<br />SITES<br /><ul><li>http://www.algaworks.com/
  59. 59. http://www.caelum.com.br/apostilas/
  60. 60. http://www.k19.com.br/</li></li></ul><li>Links<br />SLIDES<br />http://www.slideshare.com/wmagalhaes<br />BIBLIOTECAS<br />http://www.megaupload.com/?d=5CIYLRG9<br />
  61. 61. Contatos<br />Ricardo Rufino<br />E-mail/MSN: ricardo.rufino@yahoo.com.br<br />Willian Magalhães<br />E-mail/MSN: will_magalhaes@yahoo.com.br<br />
  62. 62. BRIGADO<br />

×