Desenvolvendo para WEB com JAVA
Quem somos?Ricardo Ribeiro RufinoBacharel em Sistemas de Informação (UNIPAR 2010)Pós-graduando em Des. de Sistemas OO em Java (CESUMAR)Willian MagalhãesBacharel em Sistemas de Informação (UNIPAR 2007)Especialista em Des. de Sistemas para WEB (UEM 2010)
INTRODUÇÃO
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.
PlataformasJava SE – Java Standard EditionJava EE – Java Enterprise EditionJava ME – Java Micro Edition
Conceitos básicosJRE – Java RuntimeEnviroment (APIs + JVM)JVM – Java Virtual MachineJDK – Java Developer Kit (compilador + bibliotecas)BytecodeBytecode JAVAClasse JAVACompilador JAVAJVMSistema Operacional
PRIMEIRO PROGRAMA
Primeiro programacurso.app.Primeiro.javapublicclass Primeiro {publicstaticvoidmain(Stringargs[]) {System.out.println(“Meu primeiro programa”);   }}
Variáveiscurso.entidades.Gente.javapublicclass Gente {privateString nome;privateint idade;}Primitivas (valor namemória)- boolean, char, int, long, float, doubleReferência(endereço de memória)- Boolean, Character, String, Integer, Long, Float, Double
ENCAPSULAMENTO
Encapsulamentocurso.entidades.Gente.java...publicvoidsetNome(String nome) {this.nome = nome;   }publicStringgetNome() {returthis.nome;   }...Default (mesmopacote)Public   (qualquerum acessa)Private ( somentedentro da classe - getters / setters)
Encapsulamentocurso.app.Principal.javapublicclass 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.\n", g.getNome(), g.getIdade());    }}
HERANÇA
Herançacurso.entidades.Torcedor.javapublicclass Torcedor extends Gente {privateString time;publicvoidsetTime(String time) {this.time = time;   }publicStringgetTime() {returnthis.time;   }}
Herançacurso.app.Principal.javapublicclass Principal {publicstaticvoidmain(String[] args) {      Torcedor t = new Torcedor();t.setNome("Willian");t.setTime(“ACP");System.out.printf("%s é torcedor do time %s.\n", t.getNome(), t.getTime());            }}
REESCRITA
Reescritacurso.entidades.Acpiano.javapublicclassAcpianoextends Torcedor {publicvoidsetTime(String time) {this.time = “ACP”;   }}Mesmaassinatura no método
Reescritacurso.app.Principal.javapublicclass Principal {publicstaticvoidmain(String[] args) {Acpiano a = new Acpiano();a.setTime(“Cianorte");System.out.printf("%s é meu time.\n", t.getTime());            }}
SOBRECARGA
Sobrecargacurso.entidades.Gente.java...  // novo métodopublicvoidsetNome(String nome, String sobrenome) {this.nome = nome + " " + sobrenome;}...Assinaturadiferente no método
Sobrecargacurso.app.Principal.javapublicclass Principal {publicstaticvoidmain(String[] args) {      Gente g = new Gente();g.setNome("Willian", "Magalhães");System.out.printf("Meu nome: %s.\n", g.getNome());       }}
POLIMORFISMO
Polimorfismocurso.entidades.Gente.java...publicvoiddormir() {System.out.println(“GENTE dormindo zzz...");   }...
Polimorfismocurso.entidades.Homem.javapublicclassHomem extends Gente {publicvoid dormir() {System.out.println(“HOMEM dormindo zzz...");}}
Polimorfismocurso.entidades.Mulher.javapublicclassMulher extends Gente {publicvoid dormir() {System.out.println(“MULHER dormindo zzz...");}}
Sobrecargacurso.app.Principal.javapublicclass 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() );}}
CONTROLE DE FLUXO
If-Elsecurso.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”);   }...
Switchcurso.fluxo.Switch.jSwitchava1/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;
Switchcurso.fluxo. Switch.java2/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;                       }...
Whilecurso.fluxo.While.java...int idade = 14;while (idade < 18) { System.out.printf("Com %d eu sou de menor.\n", idade);      idade++;   }System.out.printf("Com %d eu sou de MAIOR.\n", idade);...
Do...Whilecurso.fluxo.While.java...int contador = 5;   do {System.out.println(contador + " - tuuuuuu...");      contador--;   } while ( contador > 0);...
Forcurso.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));      }   }...
Controlando loopscurso.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;      }}
ARRAYS E COLEÇÕES
Arrayscurso.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());...TorcedorTorcedornullnomeCarlosnomeCarlostorcedores
Percorrendo Arrayscurso.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());   }...
Collections frameworkUtilizando 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
Listascurso.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
Listas com Genericscurso.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());   }...
PERSISTÊNCIA
PersistênciaJDBC (Java DatabaseConnectivity)- Generaliza a interface com os bancos de dadosAplicação JAVAJDBC APIJDBC Driver ManagerJDBC DriverJDBC DriverJDBC DriverMYSQLPostgresOracle
PersistênciaExemplo: JDBC (livraria)- SQL Injection- Fábrica de conexões
PersistênciaJPA2 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
PersistênciaExemplo: 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)
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
WEB
Entendendo a WEBInternetUsuárioServidor
ServidorWeb Container- Fornece recursos necessários para a interação Web    - Envio e recebimento de mensagens HTTP    - Acesso simultâneo- Tomcat e JettyServidores de aplicação- JBoss, Glassfish, WebSphere
ConteúdoServlets ou JSPFrameworks- JSF- Struts- Spring
JSF
O frameworkAgilidadeComponente prontosXHTMLManagedBeansClass JavaFaceletsComponentes visuaisBD
O frameworkExemplo: Loteria
Componentes visuaisComponentes 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)
Componentes visuaisExemplo: ComponentesVisuais
NavegaçãoNavegação estática implícita   - nome da páginaNavegação estática explicita   - faces-config.xmlNavegação dinâmica implícita   - Bean retorna nome da páginaNavegação dinâmica explicita   - Beanretora nome (faces-config.xml)
NavegaçãoExemplo: Navegação
BibliografiaLIVROS- Java como ProgramarSITEShttp://www.algaworks.com/
http://www.caelum.com.br/apostilas/
http://www.k19.com.br/LinksSLIDEShttp://www.slideshare.com/wmagalhaesBIBLIOTECAShttp://www.megaupload.com/?d=5CIYLRG9
ContatosRicardo RufinoE-mail/MSN: ricardo.rufino@yahoo.com.brWillian MagalhãesE-mail/MSN: will_magalhaes@yahoo.com.br

Desenvolvendo para WEB com JAVA