Você está na página 1de 39

Programação

para Web
Unidade 1 – Introdução a J2EE
Prof.: Henrique Santos
Introdução
O que é uma Aplicação Web?

 Uma aplicação Web é um sistema


que é acessado por um Navegador
Web.
• Uma das palavras-chave desta definição é
SISTEMA
• Deve haver um software (aplicação ou
sistema) sendo acessado
• Páginas HTML/CSS simples não podem ser
consideradas aplicações Web (é necessário
haver alguma programação para isso).
Por que Programar na Web?
 Ambiente multiplataforma
• Qualquer hardware executando a pilha de
protocolos TCP/IP pode acessar uma aplicação
Web.
 Não existe atualização para os usuários
• O código fica no servidor, e é executado toda
vez que o usuário acessar a aplicação Web.
Portanto não é necessário atualizar programas
no usuário, somente o código do servidor.
Por que Programar na Web?
 Centralização do Código
• Embora vários clientes possam acessar uma
aplicação Web, seu código fica centralizado
no servidor de aplicação. Isso facilita seu
controle e manutenção.
 Facilidade de acesso
• Qualquer pessoa tendo uma conexão com a
Internet pode acessar uma aplicação Web.
 Facilidade de utilização pelo usuário
• Atualmente qualquer usuário comum sabe
utilizar um navegador.
Modelo Cliente/Servidor
 Amplamente usado e constitui a base
da grande utilização de redes de
computadores.
 Basicamente os dados são
armazenados em poderosos
computadores chamados servidores.
 Os clientes são máquinas mais
simples que acessam os dados
remotos do servidor.
Características de Clientes
 Ativo.
 Inicia e termina as conversações com os
Servidores, solicitando serviços distribuídos.
 Geralmente, não se comunica com outros
Clientes.
 Normalmente responsável pela entrada e
saída de dados e comunicação com o usuário.
 Torna a comunicação em rede bastante
simples ao usuário.
 O hardware é normalmente um PC.
 O software geralmente tem início e fim
definido.
Características de Servidores
 Reativo.
 Execução contínua.
 Recebe e responde a solicitações dos Clientes.
 Normalmente, não se comunica com outros
Servidores.
 Presta serviços distribuídos.
 Atende a diversos Clientes simultaneamente.
 O hardware exige máquinas mais robustas,
com grande capacidade de processamento.
 O software é composto por processo(s)
sempre em execução, aguardando ser
chamado por Clientes.
Tipos de Cliente
 Existem praticamente duas
abordagens para programação
Cliente/Servidor
• Cliente Light-Loaded – Comum de aplicações
Web, o cliente é um software bem leve que
normalmente apenas recebe e exibe
informações para usuários.
• Cliente Pesado – Comum para jogos online,
o cliente é um software bem pesado com
muita lógica e processamento (normalmente
gráfico).
Cliente Web
 Ao acessar um Web Site o seu navegador
é na verdade um Cliente Web.
Resposta do
Servidor (contém o
documento
requisitado).

Requisição do
Cliente (contém o
PC executando nome e endereço
um Navegador de um item Servidor
procurado pelo executando um
cliente). Web Server
Opções de Clientes Web
Cliente de Aplicações Web
 Por se tratar de um Cliente Web,
todas requisições e respostas usam
os protocolos HTTP e FTP, que são
protocolos padrões da Internet.
 Não importa a Linguagem de
Programação escolhida, no final o
programa irá converter a saída para
HTML e enviá-la ao cliente.
 E todo navegador sabe exibir HTML,
provendo uma interface universal.
Tecnologias de Desenvolvimento Web

 J2EE
•Plataforma Java para desenvolvimento
Web
 .NET
•Plataforma Microsoft para
desenvolvimento Web
 PHP
•Linguagem de script de propósito
geral para servidores
Modelo MVC
Modelo Arquitetural MVC
 Modelo-Visão-Controlador (Model-
View-Controller)
 Trata-se de um modelo de
Desenvolvimento de Software
 Amplamente utilizado
 Consiste em separar o
desenvolvimento em camadas.
 Cada camada é responsável por uma
tarefa, separando: a lógica, a
interface, e os dados.
Modelo Arquitetural MVC

Visão (Interface) Usuários

Controlador (Lógica)

Banco de
Modelo (Dados) Dados
Modelo Arquitetural MVC
 Modelo (Dados)
• Classes responsáveis por manipular os dados
da aplicação.
• São as únicas classes que podem realizar
consultas SQL.
 Controlador (Lógica)
• Classes responsáveis pela lógica do negócio,
ou lógica das funcionalidades do sistema.
 Visão (Interface)
• Classes responsáveis pela apresentação da
aplicação, ou seja, a interface com o usuário.
J2EE
O que é J2EE
 Significa Java 2 Enterprise Edition
 Plataforma Java para
desenvolvimento de aplicações
corporativas Web
 Estende a linguagem Java através de
padrões simples e unificados para
aplicações distribuídas através de um
modelo baseado em componentes.
• Basicamente mesma linguagem Java Padrão
mas com alguns novos componentes.
Por que usar J2EE?
 Por ser uma extensão do Java, possui
todas suas características.
• Pode-se usar praticamente qualquer recurso
disponível na versão padrão do Java.
 É mais fácil aprender programar J2EE
para quem já sabe programar Java.
 A própria linguagem induz uma
programação por camadas usando o
modelo MVC.
 Possui uma boa performance para
aplicações Web.
Vantagens da Ling. Java
 Linguagem Orientada a Objetos
• Melhora a leitura, entendimento e promove o
reuso do código.
 Linguagem Portável
• Qualquer hardware com a JVM instalada
pode executar aplicações Java
 Linguagem com desalocação
automática de memória
• Isto aumenta a produtividade e qualidade do
código, e diminui os bugs e testes
necessários para seu funcionamento.
Linguagem Portável
Desvantagens da Ling. Java
 Linguagem Orientada a Objetos
• Custo para implementação do polimorfismo,
semântica por referência, e tratamento de
exceções.
 Linguagem Portável
• Perda de performance para interpretação.
 Linguagem com desalocação
automática de memória
• Aumenta o consumo de memória, e diminui
a performance do programa.
Características de Java
 Devido as suas vantagens, a
linguagem Java é considerada como
muito bem elaborada.
 Devido as suas desvantagens, a
performance de Java perde em
relação linguagens como C e C++.
 Entretanto, considerando ambas
vantagens e desvantagens, a
linguagem Java é ótima para um
servidor Web.
Servidor Web Java
 Orientação a Objetos e Desalação
Automática de Memória
• Devido a complexidade dos projetos Web,
estas características favorecem uma alta
produtividade de implementação.
 Custo de Interpretação
• Praticamente todas linguagens e padrões
Web são interpretadas (Php, Asp, Html, ...),
então não existe perda de performance pela
interpretação do Java
 Outras características de Java
• Como facilidade de Multithreading e Exceções.
Aplicação Web
Cliente Servidor

Visão
Interface

Contr.
? Lógica ?

Modelo
SGBD
Cliente Web

Navegador

HTML

Visão
CSS
XML

Javascript (jQuery)

Contr.
Vbscript
Aplicação Web
Cliente Servidor Serv. BD.

Visão
Navegador

JVM

Contr.
Servlets

Modelo
SGBD
Servlets
 Em J2EE Servlets são classes que
respondem a requisições HTTP.
 Servlets são subclasses da classe
HttpServlet.
 Por serem classes java, e possuírem
código, é possível gerar conteúdo
dinâmica usando Servlets.
Exemplo de Servlet
Visão no Servidor
 Da mesma forma que existe lógica no
cliente, existe apresentação no
servidor.
 Como separar a apresentação da
lógica?
•Facilitar edição para mudança de
layout
•Facilitar manutenção da interface
 Resposta: Java Server Pages (JSP)
Exemplo de JSP
Java no Servidor
Servidor

Visão
JVM JSP

Contr.
Servlet

Modelo
? SGBD
Modelo no Servidor
 No servidor existem dois tipos de
componentes do Modelo
•DAOs (Database Access Object)
•Java Beans (Classes de Entidade)
 Os DAOs são as únicas classes que
podem acessar diretamente o SGBD
 Os JavaBeans encapsulam os dados
vindos do SGBD em classes de
entidade
Exemplo JavaBean
Exemplo DAO
Aplicação Web
Cliente Servidor Serv. BD.
JVM

Visão
JSP
Navegador

Contr.
Servlets

Modelo
SGBD
JB DAO
Módulos e Distribuição
 Arquivos Java
• Arquivos java de uma mesma aplicação são
normalmente agrupados e distribuídos em
um arquivo JAR (Java ARchive)
 Arquivos J2EE
• No J2EE este arquivo é chamado WAR (Web
Application Archive)
Performance
 Performance de Java para Web é
equivalente a CGI C++ (programa
C++ Web executado no servidor)
•Benchmarks de Java vs .NET são
controversos.
•Deixando favoritismos de lado, ambos
possuem uma performance
equivalente.
 Perde apenas para PHP e CGI C.