Este documento apresenta conceitos básicos sobre desenvolvimento para web com Java, incluindo introdução à linguagem Java, primeiros programas, encapsulamento, herança, polimorfismo, controle de fluxo, arrays, persistência e frameworks web como JSF. É escrito por Ricardo Rufino e Willian Magalhães, desenvolvedores Java com experiência em sistemas web.
2. Quem somos? Ricardo Ribeiro Rufino Bacharel em Sistemas de Informação (UNIPAR 2010) Pós-graduando em Des. de Sistemas OO em Java (CESUMAR) Willian Magalhães Bacharel em Sistemas de Informação (UNIPAR 2007) Especialista em Des. de Sistemas para WEB (UEM 2010)
4. O que é Java? Uma linguagem de programação orientada à objetos multiplataforma, criada na década de 90 pela Sun Microsystems e atualmente é mantida pela Oracle.
5. Plataformas Java SE – Java Standard Edition Java EE – Java Enterprise Edition Java ME – Java Micro Edition
11. Encapsulamento curso.entidades.Gente.java ... publicvoidsetNome(String nome) { this.nome = nome; } publicStringgetNome() { returthis.nome; } ... Default (mesmopacote) Public (qualquerum acessa) Private ( somentedentro da classe - getters / setters)
12. Encapsulamento curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Gente g = new Gente(); g.setNome("Willian"); g.setIdade(10); System.out.printf("Olá %s, você tem %d anos de idade.", g.getNome(), g.getIdade()); } }
15. Herança curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Torcedor t = new Torcedor(); t.setNome("Willian"); t.setTime(“ACP"); System.out.printf("%s é torcedor do time %s.", t.getNome(), t.getTime()); } }
26. Sobrecarga curso.app.Principal.java publicclass Principal { publicvoidfazerDormir( Gente gente ) { gente.dormir(); } publicstaticvoidmain(String[] args) { Principal p = new Principal(); p.fazerDormir( new Gente() ); p.fazerDormir( new Homem() ); p.fazerDormir( new Mulher() ); } }
28. If-Else curso.fluxo.IfElse.java ... int idade = 15; booleanamigoDoDono = true; if (idade >= 18 || amigoDoDono == true) { System.out.println(“Pode entrar”); } else { System.out.println(“Não pode entrar”); } ...
29. Switch curso.fluxo.Switch.jSwitchava 1/2 ... int nota = 4; switch (nota / 10) { case 10 : System.out.println("ÔÔÔ NERD! :)"); break; case 9 : System.out.println("Ótimo."); break; case 8 : System.out.println("Bom."); break;
30. Switch curso.fluxo. Switch.java 2/2 case 7 : System.out.println("Pode ser melhor que isso."); break; case 6 : System.out.println("UFAA! quase, quase einn..."); break; default : System.out.println("Ihh, faiô! :("); break; } ...
31. While curso.fluxo.While.java ... int idade = 14; while (idade < 18) { System.out.printf("Com %d eu sou de menor.", idade); idade++; } System.out.printf("Com %d eu sou de MAIOR.", idade); ...
32. Do...While curso.fluxo.While.java ... int contador = 5; do { System.out.println(contador + " - tuuuuuu..."); contador--; } while ( contador > 0); ...
33. For curso.fluxo.For.java ... for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i); for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j)); } } ...
34. Controlando loops curso.fluxo.For.java ... intparaNaTabuadaDo = 3; for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i); for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j)); } if (i == paraNaTabuadaDo) { break; } }
36. Arrays curso.arrays.Array.java ... Torcedor[] torcida = new Torcedor[3]; Torcedor t = new Torcedor(); t.setNome("Carlos"); torcida[0] = t; System.out.println(torcida[0].getNome()); torcida[1] = new Torcedor(); torcida[1].setNome("Juca"); System.out.println(torcida[1].getNome()); ... Torcedor Torcedor null nomeCarlos nomeCarlos torcedores
37. Percorrendo Arrays curso.arrays.Array.java ... // fixa for (int i = 0; i < 3; i++) { System.out.println(torcida[i].getNome()); } // dinâmica for (int j = 0; j < torcida.length; j++) { System.out.println(torcida[j].getNome()); } ...
38. Collections framework Utilizando arrays - Não podemos redimensionar um array (falta de espaço) - É impossível buscar um item diretamente quando não sabemos o índice - Não conseguimos saber quantas posições já foram ou estão populadas (sem métodos auxiliares) API Collections - Possuí estruturas avançadas que facilitam o manuseio das informações
39. Listas curso.entidades.Listas1.java ... ArrayList nomes = new ArrayList(); nomes.add("Juca"); nomes.add("Carlos"); for (int i = 0; i < nomes.size(); i++) { System.out.println(nomes.get(i)); }if(nomes.contains("Carlos")) { System.out.println("tem"); } else { System.out.println("não tem"); } ... ArrayList NÃO é um Array
40. Listas com Generics curso.entidades.Listas1.java ... Torcedor t1 = new Torcedor(); t1.setNome("Juca"); Torcedor t2 = new Torcedor(); t2.setNome(“Carlos"); List<Torcedor> torcedores = new ArrayList<Torcedor>(); torcedores.add(t1); torcedores.add(t2); for (int i = 0; i < torcedores.size(); i++) { System.out.println(torcedores.get(i).getNome()); } ...
42. Persistência JDBC (Java DatabaseConnectivity) - Generaliza a interface com os bancos de dados Aplicação JAVA JDBC API JDBC Driver Manager JDBC Driver JDBC Driver JDBC Driver MYSQL Postgres Oracle
44. Persistência JPA2 e Hibernate - Problemas - Múltiplas sintaxes da linguagem SQL - Orientação à Objetos x Modelo Entidade Relacionamento - Ferramentas ORM (ObjectRelationalMapper) - JPA (Java Persistente API) – especificação / visa padronizar - Hibernate – framework ORM
45. Persistência Exemplo: JPA2-Hibernate (livraria) - Notações (principais) - @Entity – indica que se a classe será persistida no banco Aplicação antes da declaração da classe - @Id – indica atributo como chave primária Aplicação antes da declaração do atributo - @GeneratedValue – indica que o atributo é auto-increment Aplicação depois do @Id @GeneratedValue(strategy= GenerationType.AUTO)
46. Persistência - @Table – indica o nome da tabela (antes do @Entity) Aplicação antes do @Entity @Table(name="Publisher") - @Column – indica um nome para o atributo e algumas restrições Aplicação antes da declaração do atributo @Column(name="publisher_name", nullable=false) - @Transient – in dica qual atributo não serão mapeados para colunas Aplicação antes da declaração do atributo
49. Servidor Web Container - Fornece recursos necessários para a interação Web - Envio e recebimento de mensagens HTTP - Acesso simultâneo - Tomcat e Jetty Servidores de aplicação - JBoss, Glassfish, WebSphere
54. Componentes visuais Componentes visuais - Facilitam nossa vida - Variedades de componentes em sua especificação - Arquitetura de componentes visuais JSF permite criação de novos - PrimeFace (http://www.primefaces.org/) - RichFaces (http://www.jboss.org/richfaces)