Вы находитесь на странице: 1из 53

Java

Visão Geral,
Conectividade com Bancos de Dados e
Integração com a Web

Rafael Chaves
chaves@voffice.com.br
Java

Visão Geral
Histórico
• 1991 (Green Project/Oak) - SW p/ dispositivos de
consumo eletrônicos em rede. Requisitos:
– suporte a diferentes plataformas
– distribuição de software via rede
– garantia de confiabilidade de código
– baixos requisitos de memória
– código pequeno
• 1994 - HotJava - browser 100% Java
• 1995 - lançada no SunWorld (voltada à Web)
O que é Java?
• O termo Java denomina uma tecnologia que
compreende dois principais elementos:
– a máquina virtual Java, uma plataforma operacional para o
software escrito na linguagem Java
– a linguagem Java, cuja sintaxe fornece uma representação
para todos os recursos da MV
• Os principais benefícios da linguagem Java são
resultado de características da MV
• Outras linguagens podem obter os mesmos benefícios
se compiladas em bytecodes Java
A Máquina Virtual Java
• Especificação de um computador abstrato,
capaz de executar código Java (bytecodes)
• A especificação define:
– o conjunto de instruções
– o formato para as classes
– pilhas de execução
– áreas de memória (heap, código, constantes, etc)
– registradores
• Emulada sobre ambientes operacionais
existentes (diversos)
• Implementada em hardware
A Linguagem Java
• É orientada a objetos
• É concorrente (suporta threads)
• É segura
• Possui gerência automática de memória
• Provê carga dinâmica de código (local/remoto)
• É robusta
• É portável em nível binário
• Possui sintaxe similar a C
Plataformas
• Windows, Solaris e Linux (Sun)
• Mac OS (Apple)
• Linux (Blackdown)
• Netware (Novell)
• AIX, OS/2, OS/390 (IBM)
• UnixWare, SCO Unix (SCO)
• HP-UX (HP)
• Windows NT Alpha (DEC)
• Irix (SGI)
• OpenVMS Alpha, Tru64 Unix Alpha (Compaq)
• ...
Tipos de software Java
• Aplicações (programas independentes)
• Applets (executam no contexto de um browser)
• Servlets (executam no contexto de um
servidor)
• JavaBeans (componentes)
• Classes ordinárias (auxiliares ou de API)
API básica
• Entrada/saída (java.io)
• Interface gráfica com o usuário (java.awt)
• Comunicação em rede (java.net)
• Coleções (java.util)
• Applets (java.applet)
API básica
• Componentes (java.beans)
• Objetos distribuídos Java-Java (java.rmi)
• Segurança (java.security)
• Conectividade com BDs (java.sql)
• Internacionalização e formatação (java.text)
Extensões-padrão à API Java
• Interface gráfica c/ o usuário (javax.swing)
• Extensão de servidores (javax.servlet)
• Conectividade com BDs (javax.sql)
• Objetos distribuídos Java-* (org.omg.CORBA)
Extensões-padrão à API Java
• Componentes de negócios (javax.ejb)
• Diretórios (javax.naming)
• Transações (javax.transaction)
• Correio eletrônico (javax.mail)
• Telefonia (javax.phone)
• ...
Integração com outras linguagens
• Algumas vezes é necessária a integração com
módulos em outras linguagens (eficiência,
funcionalidade específica da plataforma,
reutilização de código legado)
• Java Native Interface realiza integração com
código nativo
• Código externo é encapsulado em classes com
métodos nativos
• Conseqüência: perda de portabilidade
Kit de Desenvolvimento
• Conjunto gratuito de ferramentas para o
desenvolvimento de software Java:
– compilador
– ambiente de execução (JRE) p/ aplicações e applets
– depurador
– API padrão
– gerador de documentação, etc
• Extensivamente documentado
• Implementação de referência p/ a tecnologia
Ferramentas de Desenvolvimento
• Borland JBuilder
• IBM VisualAge for Java
• BEA Visual Café (ex-Symantec)
• Oracle JDeveloper
• Powersoft Power/J
• Sun Forte (ex-NetBeans)
• Rational J++ (ex-Microsoft)
• ...
Conectividade com Bancos de
Dados
API JDBC - Java Database
Connectivity
API JDBC
• Promove independência do servidor de dados
para a aplicação (usa drivers substituíveis)
• Pode ser usada com quaisquer dados tabulares
(como tabelas relacionais, planilhas, diretórios)
• Usa strings SQL como argumentos para as
requisições ao servidor (dinâmica)
Drivers JDBC Disponíveis
• MS SQL Server
• IBM DB2
• Oracle
• Interbase
• MySQL
• Informix
• Sybase
• ...
• ODBC/OLE DB
Principais Classes e Objetos JDBC
• Driver - intermediação entre aplicação e SGBD
• Connection - conexão a uma base de dados
(identifica driver, host e base)
• Statement - emite comandos de consulta ou
modificação
• ResultSet - resultado de consulta (cursor)
• DriverManager - gerencia os diferentes drivers
Connection
• Representa uma conexão (sessão) com um
determinado banco de dados
• Cria objetos Statement para requisições ao BD
• Gerencia transações (commit/rollback)
• Possibilita obter informações sobre a base de
dados em tempo de execução (tabelas, visões,
procedimentos armazenados, particularidades do
SGBD, etc)
Statement
• Possibilita enviar requisições através de uma
conexão associada
• Tipos de requisições:
– consultas (retornam um ResultSet):
Statement.executeQuery (<string>)
– modificações:
Statement.executeUpdate (<string>)
– chamadas de procedimentos armazenados
CallableStatement.executeQuery ()
ResultSet
• Representa o resultado de consulta (cursor)
• Permite percorrer o cursor (unidirecional e
seqüencial)
• Possibilita obter o valor das colunas
• Possibilita obter informações da tabela/visão
em tempo de execução (nome, tipo e
propriedades das colunas, nome da tabela, etc.)
Tipos de Drivers JDBC
• Tipo 1: driver Java invoca driver ODBC nativo
• Tipo 2: driver Java invoca API cliente proprietária nativa
• Tipo 3: driver acessa servidor através de middleware de
banco de dados
• Tipo 4: driver acessa servidor através de protocolo de
rede nativo do servidor
• Tipos 1 e 2: soluções provisórias; Tipos 3 e 4: 100%
Java, podem ser carregados via rede
Driver Driver
Tipo 1 Tipo 2
Driver Driver
Tipo 4 Tipo 3
JDBC 2.0
• Supera diversas limitações da versão 1.0:
– navegação bidirecional
– posicionamento absoluto
– atualizações/inserções/remoções via cursor
– row sets (cursores desconectados)
– connection pooling (reutilização de conexões)
• Características são opcionais
• Atualmente há poucos drivers compatíveis
(diversos previstos para 2000)
JDBC como infra-estrutura
• JDBC proposta como a infra-estrutura de baixo
nível para integração de Java com BDs
• Soluções de alto nível (sobre JDBC):
– SQLJ (Oracle, IBM, Sun...) - integração Java/SQL
(Embedded SQL, SQL Types e SQL Routines)
– Java Data Objects (Sun) - persistência transparente
(possivelmente através de mapeamento objeto-
relacional)
– soluções proprietárias (ex.: componentes JBuilder)
Integração com a Web

Applets, Servlets e JavaServer Pages


Java e a Web
• Java fornece três alternativas distintas para
aplicações Web:
– Applets (cliente)
– Servlets (servidor)
– JavaServer Pages (servidor)
Applets
• Applets são módulos de programa Java que
executam no contexto de uma página Web
• Carga de applets é feita através da tag <applet>
• Applets podem comunicar-se com o servidor
de origem (Ex.: JDBC, sockets, etc)
• Applets são inerentemente gráficas
Applets - Recursos
• Applets podem comunicar-se com o servidor
de origem para E/S remota, conexão com BD,
invocações remotas, etc
• Applets podem orientar a navegação do
browser
• Applets numa mesma página podem
comunicar-se
Applets - Restrições de Segurança
• Applets executam em um ambiente restrito
(sandbox) como medida de segurança
• Proibições comuns:
– E/S em arquivos locais
– comunicação com outros servidores que não o de
origem
– execução de programas locais
– carregar bibliotecas e acessar código nativo
Applets - Dificuldades
• Browsers sempre estão atrasados no suporte aos
avanços da API
• MVs dos browsers têm incompatibilidades com a
especificação da Sun e entre si
• Java Plug-in supera estas dificuldades, mas requer
uso das tags <EMBED>/<OBJECT>
• Nem todos os browsers suportam applets e/ou
plug-ins
Servlets
• São módulos de programa Java que executam no
contexto de um servidor
• Paradigma requisição-serviço-resposta
• Usadas principalmente em servidores Web
– paradigma coerente com protocolo HTTP
– 1º) browser envia requisição (GET/POST)
– 2º) servlet realiza serviço
– 3º) página HTML é gerada dinamicamente como resposta
Servlets - Características
• Normalmente não possuem restrições de
segurança (ou são poucas)
• Executam no servidor, browser só processa
HTML:
– maior compatibilidade com browsers (+)
– maior desempenho (+)
– interação c/ usuário primitiva (-)
– normalmente servidores usam o JRE + recente (+)
Servlets - Recursos
• a partir de uma requisição, uma servlet pode
obter:
– campos de formulários
– endereço de origem (IP/DNS)
– fabricante e versão do browser
– a sessão (se existe)
– um fluxo de dados de entrada (ex.: transferência
(upload) de arquivos)
Servlets - Recursos
• como resposta a servlet pode realizar:
– geração de conteúdo HTML ou outro conteúdo
MIME (imagens, vídeos, arquivos executáveis, etc)
– redirecionamento para outra URL
– geração de erro
• outros recursos:
– estabelecimento de sessão (c/ ou s/ cookies)
– invocação de outras servlets
Servlets - Recursos
• HTTP é um protocolo sem manutenção de estado
• Não há relacionamento entre duas requisições do
mesmo cliente
• Solução - sessões:
– usando reescrita de URL
– usando cookies (requer browser capaz e habilitado)
– API Servlet encapsula a solução usada
Servlets x CGI
(Common Gateway Interface)
• Vantagens das Servlets:
– melhor desempenho (executam em um mesmo
processo, uma instância para várias requisições)
– usam uma linguagem portável, OO, segura, estável e
de uso geral
– uma mesma instância atende várias requisições
(controle de concorrência)
– NSAPI e ISAPI fornecem benefícios semelhantes mas
são proprietários
Servlets - Dificuldades
• Desenvolvedores tendem a mesclar a lógica da
aplicação com a interface c/ usuário (difícil
manutenção)
• exigem que produtores de conteúdo conheçam
Java (curva de aprendizado lenta)
• um mecanismo que suporte a separação é
necessário (várias abordagens, oficial: JSP)
• “A melhor maneira de escrever servlets é não
escrevê-las”
JavaServer Pages
• Páginas HTML que possuem scripts (roteiros) para
o servidor e embutem tags especiais
• Similares às Active Server Pages
• Linguagem script padrão: Java (outras podem ser
usadas)
• São traduzidas em tempo de execução para servlets
Java
• Novas tags podem ser adicionadas
JavaServer Pages - Recursos
• Possuem acesso às mesmas funcionalidades
que as Servlets, com maior simplicidade
• Templates JSPs são de fácil manutenção
(similaridade c/ HTML)
• JSPs acessam JavaBeans, facilitando a
separação das lógicas da aplicação e da
interface c/ o usuário
<html>
<body>
<%
String sexo,nome1,nome2,email;
nome1 = request.getParameter(“firstname”);
nome2 = request.getParameter(“lastname”);
email = request.getParameter(“email”);
sexo = request.getParameter(“sex”);
%>
Hello, <%= nome1 %>
</body>
</html>
Servlet Engines
• Softwares que habilitam um servidor Web a
suportar servlets Java e JavaServer Pages
• Facilitam a aceitação da tecnologia Servlet
• Contornam a guerra tecnológica MS x Sun
• Alguns produtos:
– Allaire JRun (IIS, NES, Apache)
– New Atlanta ServletExec (IIS, NES, Mac OS
(vários))
Servidores c/ Suporte Embutido a
Servlets/JSP
• Apache Web Server
• IBM Websphere
• Sun/Netscape iPlanet
• Oracle Application Server
• SilverStream Application Server
• outros...
Conclusões
Java - Tabus e Verdades
• Java é lento?
– os principais gargalos são a rede e o banco de dados
– mecanismos de otimização: JIT e HotSpot™
– a complexidade da execução de código Java é
constante - o desempenho do hardware tem evolução
geométrica
– os benefícios da tecnologia tornam o desempenho
absoluto menos relevante
Java - Tabus e Verdades
• Java é útil apenas para animações na Web?
– Java se mostra muito adequada para aplicações
cliente-servidor (principalmente lado servidor)
– Java possui um modelo de componentes e APIs
excelentes para o desenvolvimento de aplicações
corporativas multi-camadas (GUI+BO/BP+BD)
– Poucas aplicações não são adequadas para Java
(por requisitos de desempenho)
Conclusões
• A tecnologia Java está madura e abrange as
mais diversas aplicações
• A tecnologia Java concede ao desenvolvedor
total independência de fornecedores, ao ser
aberta, multiplataforma e baseada em padrões
• A tecnologia Java fornece aos usuários um
excelente suporte a ambientes heterogêneos e
preserva o investimento em hardware e software
http://www.javasoft.com
• Java 2 Software Development Kit
• JavaServer Web Development Kit
• Documentação:
• Tutorial Java
• Documentação do Java 2 SDK (APIs, guias, etc)
• Documentação de outras APIs
• Especificação da linguagem
• Especificação da máquina virtual
• Artigos, fóruns, notícias, bugs, etc
Java
Visão Geral,
Conectividade com Bancos de Dados e
Integração com a Web

Rafael Chaves
chaves@voffice.com.br

Вам также может понравиться