Desenvolvendo para WEB com JAVA
-
Upload
willian-magalhaes -
Category
Technology
-
view
2.835 -
download
3
description
Transcript of Desenvolvendo para WEB com JAVA
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.
Plataformas
Java SE – Java Standard Edition
Java EE – Java Enterprise Edition
Java ME – Java Micro Edition
Conceitos básicos
JRE – Java Runtime Enviroment (APIs + JVM)
JVM – Java Virtual Machine
JDK – Java Developer Kit (compilador + bibliotecas)
Bytecode
Bytecode JAVA
JVM
Sistema Operacional
Classe JAVA Compilador JAVA
PRIMEIRO PROGRAMA
Primeiro programa
public class Primeiro {
public static void main(String args[]) { System.out.println(“Meu primeiro programa”); }
}
curso.app.Primeiro.java
Variáveis
Primitivas (valor na memória)
- boolean, char, int, long, float, double
Referência (endereço de memória)
- Boolean, Character, String, Integer, Long, Float, Double
public class Gente {
private String nome; private int idade;
}
curso.entidades.Gente.java
ENCAPSULAMENTO
Encapsulamento
Default (mesmo pacote)
Public (qualquer um acessa)
Private ( somente dentro da classe - getters / setters)
... public void setNome(String nome) { this.nome = nome; }
public String getNome() { retur this.nome; }...
curso.entidades.Gente.java
Encapsulamento
public class Principal { public static void main(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()); } }
curso.app.Principal.java
HERANÇA
Herança
public class Torcedor extends Gente {
private String time;
public void setTime(String time) { this.time = time; }
public String getTime() { return this.time; }
}
curso.entidades.Torcedor.java
Herança
public class Principal { public static void main(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()); } }
curso.app.Principal.java
REESCRITA
Reescrita
public class Acpiano extends Torcedor {
public void setTime(String time) { this.time = “ACP”; }
}
curso.entidades.Acpiano.java
Mesma assinatura no método
Reescrita
public class Principal { public static void main(String[] args) { Acpiano a = new Acpiano(); a.setTime(“Cianorte"); System.out.printf("%s é meu time.\n", t.getTime()); } }
curso.app.Principal.java
SOBRECARGA
Sobrecarga
...
// novo método
public void setNome(String nome, String sobrenome) { this.nome = nome + " " + sobrenome; }
...
curso.entidades.Gente.java
Assinatura diferente no método
Sobrecarga
public class Principal { public static void main(String[] args) { Gente g = new Gente(); g.setNome("Willian", "Magalhães"); System.out.printf("Meu nome: %s.\n", g.getNome());
} }
curso.app.Principal.java
POLIMORFISMO
Polimorfismo
...
public void dormir() { System.out.println(“GENTE dormindo zzz..."); }
...
curso.entidades.Gente.java
Polimorfismo
public class Homem extends Gente {
public void dormir() { System.out.println(“HOMEM dormindo zzz..."); }
}
curso.entidades.Homem.java
Polimorfismo
public class Mulher extends Gente {
public void dormir() { System.out.println(“MULHER dormindo zzz..."); }
}
curso.entidades.Mulher.java
Sobrecarga
public class Principal {
public void fazerDormir( Gente gente ) { gente.dormir(); } public static void main(String[] args) {
Principal p = new Principal();p.fazerDormir( new Gente() );p.fazerDormir( new Homem() );p.fazerDormir( new Mulher() );
} }
curso.app.Principal.java
CONTROLE DE FLUXO
If-Else
... int idade = 15; boolean amigoDoDono = true;
if (idade >= 18 || amigoDoDono == true) {
System.out.println(“Pode entrar”);
} else {
System.out.println(“Não pode entrar”);
}...
curso.fluxo.IfElse.java
Switch
... 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;
curso.fluxo.Switch.jSwitchava 1/2
Switch
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; }...
curso.fluxo. Switch.java 2/2
While
... 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);...
curso.fluxo.While.java
Do...While
... int contador = 5; do { System.out.println(contador + " - tuuuuuu..."); contador--; } while ( contador > 0);...
curso.fluxo.While.java
For
... 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)); } }...
curso.fluxo.For.java
Controlando loops
... int paraNaTabuadaDo = 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; } }
curso.fluxo.For.java
ARRAYS E COLEÇÕES
Arrays
... 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());...
curso.arrays.Array.java
torcedores nomeCarlos
Torcedor
nomeCarlos
Torcedor
null
Percorrendo Arrays
... // 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()); }...
curso.arrays.Array.java
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
Listas
... 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"); }...
curso.entidades.Listas1.java
ArrayList NÃO é um Array
Listas com Generics
... 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()); }...
curso.entidades.Listas1.java
PERSISTÊNCIA
Persistência
JDBC (Java Database Connectivity)
- Generaliza a interface com os bancos de dados
JDBC Driver Manager
Aplicação JAVA
JDBC API
JDBC Driver
MYSQL
JDBC Driver
Postgres
JDBC Driver
Oracle
Persistência
Exemplo: JDBC (livraria)
- SQL Injection
- Fábrica de conexões
Persistência
JPA2 e Hibernate
- Problemas
- Múltiplas sintaxes da linguagem SQL
- Orientação à Objetos x Modelo Entidade Relacionamento
- Ferramentas ORM (Object Relational Mapper)
- JPA (Java Persistente API) – especificação / visa padronizar
- Hibernate – framework ORM
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)
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 WEB
Internet
Servidor Usuário
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
Conteúdo
Servlets ou JSP
Frameworks
- JSF
- Struts
- Spring
JSF
O framework
Agilidade
Componente prontos
XHTML Managed Beans Class Java
FaceletsComponentes visuais
BD
O framework
Exemplo: Loteria
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)
Componentes visuais
Exemplo: ComponentesVisuais
Navegação
Navegação estática implícita
- nome da página
Navegação estática explicita
- faces-config.xml
Navegação dinâmica implícita
- Bean retorna nome da página
Navegação dinâmica explicita
- Bean retora nome (faces-config.xml)
Navegação
Exemplo: Navegação
Bibliografia
LIVROS
- Java como Programar
SITES
- http://www.algaworks.com/
- http://www.caelum.com.br/apostilas/
- http://www.k19.com.br/
Links
SLIDES
http://www.slideshare.com/wmagalhaes
BIBLIOTECAS
http://www.megaupload.com/?d=5CIYLRG9
Contatos
Ricardo Rufino
E-mail/MSN: [email protected]
Willian Magalhães
E-mail/MSN: [email protected]
BRIGADO