Programao OO usando Java - Prof. Luciana Porcher Nedell
Applets T Mtodos da classe Applet T Criando applets T Passando parmetros de uma pgina HTML T Migrando de uma aplicao para uma applet T Applets vs. Segurana Programao OO usando Java - Prof. Luciana Porcher Nedel Objetivos T Migrar de uma aplicao para uma applet T Escrever uma applet e integrar em uma pgina HTML T Descrever que mtodos so chamados pelo navegador e quando T Passar parmetros a uma applet partir de uma pgina HTML T Descrever as diferenas entre applets confiveis e no-confiveis 2 Programao OO usando Java - Prof. Luciana Porcher Nedel Applet ? T Pequena aplicao executada em uma janela de uma aplicao (browser/appletviewer) T Tem por finalidade estender as funcionalidades de browsers, adicionando som, animao, etc., provenientes de fontes (URLs) locais ou remotas T Cada pgina (arquivo .html) pode conter uma ou mais applets Programao OO usando Java - Prof. Luciana Porcher Nedel Applet? T A cada mudana de pgina as applets associadas so automaticamente destrudas T Um navegador web que permite a execuo de applets dito Java-enabled. T Uma pgina HTML contendo applets dita Java- powered. 3 Programao OO usando Java - Prof. Luciana Porcher Nedel Servidor de aplicaes distribui uma pgina web contendo uma applet Java Cliente executa em um navegador web Introduo T Uma applet incorporada em uma pgina web T Applets podem ser carregadas a partir de um disco local ou de um servidor de aplicaes (web) Programao OO usando Java - Prof. Luciana Porcher Nedel Introduo T O desenvolvimento ou no de programas em Java sob a forma de applets depende do objetivo da aplicao. Se por um lado a execuo necessita de um navegador, por outro pode ser disponibilizada para execuo via internet. Cabe ao projetista da aplicao definir a forma mais adequada para seu sistema. T Applets sempre executam nos clientes web, nunca nos servidores. Por esta razo a carga das classes pode levar algum tempo. Para definir programas Java que rodem no servidor, veja como construir servlets. 4 Programao OO usando Java - Prof. Luciana Porcher Nedel Caractersticas Aplicaes T programa autnomo T executa em uma JVM autnoma T ponto de entrada o mtodo main( ), chamado pelo carregador de classes T geralmente contm construtores T acesso a todos os recursos do ambiente T pode ser grfica T funcionalidades plenas: menus, dilogos, arquivos... Applets T executada por um navegador T o navegador fornece a JVM T vrios pontos de entrada so chamados pelo navegador como init( ) T construtores tendem a ser vazios T so sempre grficas T devem fornecer uma classe que estenda Applet T funcionalidades limitadas por razes de segurana T carregador de classes remotas Programao OO usando Java - Prof. Luciana Porcher Nedel Container Panel Applet MyApplet Object Component A classe Applet T Para criar uma applet, cria-se uma sub-classe de Applet e redefine-se certos mtodos: S init( ) S start( ) S stop( ) S destroy( ) S paint( ) S update( ) 5 Programao OO usando Java - Prof. Luciana Porcher Nedel A classe Applet T Especializao de Panel: um container simples para exibir elementos grficos T Oferece um conjunto de mtodos para: S iniciar/controlar/ terminar a execuo de uma aplicao em um browser S buscar e executar componentes de som e imagem T Segurana: fortes restries a arquivos Programao OO usando Java - Prof. Luciana Porcher Nedel Package java.applet T Fornece as classes para: S criar applets S permitir que applets se comuniquem com seu contexto T Contexto de uma applet: S uma aplicao que responsvel por carregar e executar applets. R Exemplo: navegadores e appletviewer S o cdigo html que a contm e as demais applets contidas no mesmo documento 6 Programao OO usando Java - Prof. Luciana Porcher Nedel Carrega/executa classes (.class) locais ou remotas public class Mostra extends Applet { public void init ( ) { ... } ....} public class Exibe extends Applet { public void init ( ) { ... } ....} navegador WEB (arquivo.html) Execuo de applets Programao OO usando Java - Prof. Luciana Porcher Nedel Browser Mostra.html Mostra.html <applet code=Mostra.class ....> </applet> Mostra.java Mostra.class class Mostra extends Applet { ... } bytecodes 1 2 3 O arquivo Mostra.class carregado e executado Execuo em HTML 7 Programao OO usando Java - Prof. Luciana Porcher Nedel Os 4 mtodos do ciclo de vida da applet T init( ) - inicializao; chamado quando a applet inicialmente carregada T start( ) - execuo (animao); chamado aps o init( ) T stop( ) - interrupo; faz a applet parar a execuo da animao, udio ou vdeo T destroy( ) - liberao de recursos; chamado quando o browser fechado Programao OO usando Java - Prof. Luciana Porcher Nedel Ciclo de vida de uma applet Destruda init() stop() destroy() start() paint() Inicializada Executada Nova applet 8 Programao OO usando Java - Prof. Luciana Porcher Nedel Browser Browser Browser Browser [1] o primeiro acesso a pgina com a applet Carrega a applet e executa o init() Mtodos start(), paint(), stop() stop()... destroy() [2] A applet foi carregada e o browser pode chamar ... [3] O browser sai da pgina atual, ocasionando a chamada de Ciclos do processo de execuo Programao OO usando Java - Prof. Luciana Porcher Nedel Esqueleto de uma applet public class MinhaApplet extends Applet { public void init( ){ // Inicializa a applet } public void start( ){ // Dispara a execuo de uma applet } public void stop( ){ // Pra a execuo de uma applet } public void destroy( ){ // Destri definitivamente uma applet } public void paint(Graphics g){ ... } } 9 Programao OO usando Java - Prof. Luciana Porcher Nedel Implementando uma applet T Toda applet uma aplicao grfica. No existem applets modo texto. T A principal diferena entre uma Java application e uma applet o fato de que a janela base da aplicao ser derivada a partir da classe Applet e no a partir da classe Frame. T Alm disso, a parte da aplicao que instancia a classe Applet e relaciona-a com o browser padro e, portanto, no precisa ser descrita. Desta forma, applets no tero a funo main( ). T Veja o exemplo: Programao OO usando Java - Prof. Luciana Porcher Nedel Implementando uma applet import java.applet.*; import java.awt.*; public class Exemplo extends Applet{ private int x,y,tam; public void init( ){ x = 10; y = 10; tam = 0; } public void start( ){ tam += 5; } public void paint(Graphics g){ g.setColor(new Color(200,123,212)); g.fillRect(x,y,tam,10); } public void stop(){ } } << Faz o papel do construtor << Ativado logo aps init e toda a vez que a applet for revisitado << Ativado sempre que a applet pode parar de executar (no est visvel) 10 Programao OO usando Java - Prof. Luciana Porcher Nedel Inserindo uma applet em uma pgina T Para que possa ser executada, uma applet deve ser associada a uma pgina www atravs de cdigo HTML. Veja o exemplo a seguir: <HTML> <HEAD> <TITLE>Applet title</TITLE> </HEAD> <BODY> <H1>First Heading</H1> <HR> <APPLET CODE=Exemplo.class WIDTH=120 HEIGHT=150></APPLET> <HR> </BODY> </HTML> Programao OO usando Java - Prof. Luciana Porcher Nedel Inserindo uma applet em uma pgina T Ateno: normalmente os navegadores esto configurados para carregar cada applet apenas na primeira vez que uma pgina acessada. T Logo, se a applet for recompilada nesse meio tempo, ser necessrio forar a sua recarga (no adianta fazer apenas o reload da pgina). 11 Programao OO usando Java - Prof. Luciana Porcher Nedel import java.applet.Applet; import java.awt.*; // Exibe um ditado de Confucio do livro: // Java Software Solutions:J. Lewis e W. Loftus public class Confucio extends Applet{ public void paint(Graphics pagina){ pagina.drawString(Esquea desaforos, nunca esquea gentilezas., 30,30); pagina.drawString(----Confcio, 70,70); } //ditado } // classe Confucio Exemplo de applet Programao OO usando Java - Prof. Luciana Porcher Nedel Arquivo HTML associado: nome.html <HTML> <BODY> <APPLET CODE = nomeclasse.class WIDTH =... HEIGHT= ...> </APPLET> </BODY> </HTML> <! Confucio.html> <HTML> <HEAD> <TITTLE> CONFUCIO</TITLE> </HEAD> <BODY> <H3> <APPLET CODE=Confucio.class WIDTH=300 HEIGHT=150> </APPLET> <HR> </BODY> </HTML> 12 Programao OO usando Java - Prof. Luciana Porcher Nedel Recuperando arquivos de imagens T Carregando um objeto imagem do diretrio de onde foi lido o .html: Image img, img2; img=getImage(getDocumentBase( ), lenna.jpg); T Carrega um objeto imagem do diretrio de onde foi carregado o .class: img2=getImage(getCodeBase( ), mandril.jpg); R Exemplo (ImageDisplayer.java) R Exemplo (ImageDisplayer2.java) Programao OO usando Java - Prof. Luciana Porcher Nedel Criando applets: exibindo uma imagem import java.applet.*; import java.awt.*; public class Imagem1 extends Applet { Image imagem; public void init( ) { imagem=getImage(getDocumentBase( ), mandril.jpg); } public void paint(Graphics g) { g.drawImage(imagem,0,0,this); g.drawString(Macaco Mandril, 50, 25); } } 13 Programao OO usando Java - Prof. Luciana Porcher Nedel Parametrizao em uma pgina web < APPLET CODE = appletFile // Obrigatrio. Fornece o nome da classe que contm a applet WIDTH = pixels // Obrigatrio. Fixa o tamanho inicial da applet em pixels HEIGHT = pixels [ CODEBASE = codebaseURL ] // Opcional. Define a base URL da classe do applet [ ALT = alternateText ] // Permite exibir uma mensagem para o browser [ NAME = appletInstanceName ] // Opcional. Fornece a instncia de uma applet em // uma pgina HTML, de modo a estabelecer uma // comunicao entre applets [ ALIGN = alignment ] // Posicionamento de uma applet em uma pgina HTML. Os // valores permitidos so: left, right, top, texttop, middle, // absmiddle, baseline, bottom, absbottom. [ VSPACE = pixels ] // Nmero de pixels entre a applet e o resto da pgina HTML [ HSPACE = pixels ] > [ < PARAM NAME = appletParameter1 VALUE = value >] // nico modo de passar argumentos a uma applet [ < PARAM NAME = appletParameter2 VALUE = value >] Programao OO usando Java - Prof. Luciana Porcher Nedel arquivo .html: <APPLET CODE=Confucio.class ...> <PARAM NAME=title VALUE=Dito de Confucio> </APPLET> mtitulo = getParameter(title); arquivo .java Mtodo getParameter() T getParameter(): retorna o valor do parmetro indicado existente no documento base (.html) S public String getParameter(String name) T Exemplo 14 Programao OO usando Java - Prof. Luciana Porcher Nedel Um html -> vrias applets <html> <body> <!CENTER> <applet CODE="Confucio.class" WIDTH="415" HEIGHT="83"> <param NAME="title" VALUE="Panel X Applet:1"> <applet CODE="MinhaApplet.class" WIDTH="483" HEIGHT="104"> <param NAME="title" VALUE="Panel X Applet:2"></applet> </body> </html> Programao OO usando Java - Prof. Luciana Porcher Nedel Outros mtodos da classe Applet T resize(): redefine o tamanho da applet; S public void resize(int width,int height) T getImage(): retorna um objeto Image que pode ser exibido na tela pelo mtodo paint() S public Image getImage(URL url) T newAudioClip(): busca um clip de udio que pode ser executado pelo mtodo play() S public static final AudioClip newAudioClip(URL url) 15 Programao OO usando Java - Prof. Luciana Porcher Nedel Mtodos URL getCodeBase(): retorna a URL base da classe public URL getCodeBase() getDocumentBase(): retorna a URL base do HTML public URL getDocumentBase() Exemplo: Image img, img2; img=getImage(getDocumentBase(), tulipas.gif); img2=getImage(getCodeBase(), coracao.gif); Programao OO usando Java - Prof. Luciana Porcher Nedel Transformando aplicaes em applets T Passo 1: Eliminar o main( ) S usando applets o browser cria o objeto da classe especificada no TAG : S <APPLET CODE = ... > S O tamanho da applet definido por WIDTH e HEIGHT T Passo 2: Derivar a classe de Applet (public): S public class MinhaClasse extends Applet T Passo 3: Substituir o construtor pelo mtodo init( ) 16 Programao OO usando Java - Prof. Luciana Porcher Nedel Applets vs. Segurana T O que uma applet Java pode ou no, determinado pelo gerente de segurana do browser e pela segurana do sistema. T Limitaes default: uma applet no pode S acessar arquivos na mquina local S chamar outro programa na mquina local S se comunicar com nenhuma outra mquina a no ser a que contm a pgina HTML em questo T Estas limitaes podem ser ocasionalmente autorizadas atravs de um arquivo especial (policy file) Define o que permitido para um cdigo-fonte particular Programao OO usando Java - Prof. Luciana Porcher Nedel Parada para exerccios T Abrir os seguintes arquivos em um navegador: S Confucio.html S MinhaApplet.html 17 Programao OO usando Java - Prof. Luciana Porcher Nedel Exerccio Carregar e executar, a partir do diretrio indicado, os seguintes arquivos: MinhaApplet.* e Confucio.*. A seguir, fazer alguma alterao (cor, tamanho, texto, etc) nos fontes das applets e gerar um arquivo .html para exibir pelo menos trs applets. Usar duas formas de visualizao: com appletviewer e com um browser(Netscape/Explorer) Exemplo de execuo com Appletviewer: :\jdk1.2.1\bin\javac MinhaApplet.java :\jdk1.2.1\bin\appletviewer MinhaApplet.html (continua) Programao OO usando Java - Prof. Luciana Porcher Nedel Exerccio T Importante: o ambiente de execuo de Java fica bloqueado aguardando o final da execuo. A janela AppletViewer deve ser fechada (X) para terminar a execuo. T A execuo com Browser pode ser feita: S Clicando o nome/cone do arquivo .html S Usando a opo Abrir Pgina (local) do browser. 18 Programao OO usando Java - Prof. Luciana Porcher Nedel Java e a biblioteca de classes Swing import javax.swing.JApplet; // importa a classe JApplet import java.awt.Graphics; // importa a classe Graphics public class WelcomeApplet extends JApplet { public void paint( Graphics g ) { g.drawString( "Welcome to Java Programming!", 25, 25 ); } } TOutra maneira de programar applets usando os componentes da Swing (uma extenso AWT), que sero abordados em profundidade mais tarde... Programao OO usando Java - Prof. Luciana Porcher Nedel Desenvolvimento de applets T Tratamento de eventos S procedimentos em resposta a aes do usurio T Classes do package de classes de interface S elementos grficos bsicos como botes, scrollbars, painis, frames, canvas, etc. T Classes do AWT S elementos grficos bsicos como botes, scrollbars, painis, frames, canvas, etc T Classes de java Swing S renem elementos bsicos de forma mais encapsulada S Swing praticamente substitui AWT, pois fornece componentes de interface mais poderosos 19 Programao OO usando Java - Prof. Luciana Porcher Nedel Desenvolvimento de applets T Se houver gerao de desenhos S Graphics (AWT) S Java3D observao: estes requisitos so tambm os de desenvolvimento de aplicaes em Java Programao OO usando Java - Prof. Luciana Porcher Nedel Applets - Programao Orientada a Eventos T Applets, sendo programas grficos e interativos, so direcionadas a eventos. S Eventos correspondem ocorrncia de algum fato, o qual deve (ou no) desencadear um procedimento especfico T No h, em princpio, uma seqncia para a execuo de procedimentos. S Procedimentos so acionados dependendo de aes do usurio.