Top Banner
Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense
36

Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Apr 17, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Applets

Carlos Bazilio

Depto de Ciência e TecnologiaPólo Universitário de Rio das OstrasUniversidade Federal Fluminense

Page 2: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Tópicos Abordados

● Paradigma de Requisições Web● Conceito de Applet● Implementação de um Applet● Exemplos de Applets● Limitações● Aspectos de Segurança

Page 3: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Paradigma de Requisições Web

● Cliente envia requisição

para um Servidor● Servidor responde

requisição de um Cliente● Formatos de resposta:

Dados estáticos Dados processados no Servidor Dados a serem processados no Cliente

Page 4: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Paradigma de Requisições Web

Formatos de Resposta● Dados estáticos:

HTML básico, estático● Dados processados no

Servidor

Programas Java que rodam

no servidor e constróem

respostas para requisições (servlets)● Dados processados no Cliente

Programas Java que rodam nos clientes (applets)

Page 5: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Motivação Inicial de Java

● Java foi pensada, inicialmente, como uma linguagem que permitiria a execução de programas sem instalação

● Estes programas (bytecodes) seriam baixados da internet e executados na máquina cliente

● Ou seja, para tal, a máquina cliente necessitaria de acesso à internet e da máquina virtual (JVM) para execução dos bytecodes

● Applets são uma forma de realização deste objetivo

Page 6: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Conceito de Applet

● Um applet é um programa Java que pode ser incluído em uma página HTML da mesma forma que uma imagem ou algum outro recurso.

● Exemplo (HTML básico):

<html> <head> <title>HTML Básico</title> </head> <body> Olá mundo !!! </body></html>

Page 7: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Conceito de Applet● Exemplo (HTML incluindo uma imagem):● O arquivo .html deve estar no mesmo diretório

que a imagem, neste exemplo

<html> <head> <title>HTML com imagem incluída</title> </head> <body> <img src="maca.jpg" title="maca“/> </body></html>

Page 8: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Conceito de Applet

● Exemplo (HTML incluindo um applet):

<html> <head> <title>HTML incluindo um applet</title> </head> <body> <applet code=aulas.MeuApplet width=800 height=600/> </body></html>

Page 9: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Conceito de Applet● Apesar do HTML com a inclusão da imagem ter obtido o

mesmo resultado do applet, o resultado do applet foi obtido pela classe “aulas.MeuApplet”.

● Observe que não fazemos referência explícita ao arquivo “maca.jpg”, como no exemplo da imagem.

<html> <head> <title>HTML incluindo um applet</title> </head> <body> <applet code=aulas.MeuApplet width=800 height=600/> </body></html>

Page 10: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Conceito de Applet

● A tag <applet> possui os atributos code (classe que implementa o applet), width (largura do applet) e height (altura do applet), os quais são obrigatórios

● Outros atributos: align (alinha o applet dentro da página web); name (para ser referenciado dentro da página html); codebase (diretório base para referenciar um applet); archive (o applet é distribuído como um JAR)

<html> <head> <title>HTML incluindo um applet</title> </head> <body> <applet code=aulas.MeuApplet width=800 height=600/> </body></html>

Page 11: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Execução do Applet

● Para execução do applet, crie um arquivo html com o conteúdo apresentado

● Coloque o código java compilado (.class) no mesmo diretório do arquivo html

● Caso o código java seja definido dentro de um pacote (package), inclua o código compilado na hierarquia de diretórios equivalente ao pacote

● Por exemplo, se o código java está definido no pacote “package cursojava.applets;”, e o html está no diretório c:\htmls, os .class deverão estar em: “c:\htmls\cursojava\applets”

Page 12: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Execução do Applet

● Inicialmente, os browsers disponibilizavam internamente pequenos interpretadores para Java

● A tecnologia Java Plug-in estende a funcionalidade de um browser, permitindo que applets e outros recursos sejam executados utilizando a JRE da máquina

● Quando um navegador não reconhece um applet, as tags <applet> são ignoradas e, o que está dentro delas, é exibido

● Com isso, este se torna um local adequado para colocar avisos de mal funcionamento

Page 13: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Execução do Applet

<html> <head> <title>HTML incluindo um applet</title> </head> <body> <applet code=aulas.MeuApplet width=800 height=600> Neste local deveria aparecer um applet !! </applet> </body></html>

Page 14: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Implementação de um Applet

● Para implementar um applet, devemos estender uma das 2 últimas classes da hierarquia abaixo:

java.lang.Object

java.awt.Component

java.awt.Container

java.awt.Panel

java.applet.Applet

javax.swing.JApplet

● http://java.sun.com/j2se/1.4.2/docs/api/java/applet/Applet.html

Page 15: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Implementação de um Appletjava.applet.Applet

● Sub-classe de Panel, do pacote gráfico awt● É, essencialmente, um painel inserido em uma

página HTML, num navegador● Embora restrito em algumas funcionalidades

(por uma questão de segurança), pode interagir com o usuário como qualquer aplicação gráfica awt

Page 16: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Implementação de um Applet Alguns métodos da classe

java.applet.Applet● void init() / void destroy()

Métodos duais que inicializam/destróem um applet O método init() é chamado quando uma página com

uma applet é carregada O método destroy() é chamado quando o navegador é

fechado● void start() / void stop()

Métodos acionados quando um applet deve ser executado/interrompido

O método start() é chamado quando uma página que contém um applet é aberta (imediatamente após o init() e nas cargas seguintes da página)

O método stop() é chamado quando o usuário deixa a página que possui o applet

Page 17: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Implementação de um Applet Alguns métodos da classe

java.applet.Applet● URL getCodeBase()

Retorna a URL base do diretório de onde o applet foi executado

● String getParameter(String name) Recupera o valor de um parâmetro passado no HTML

● void play(URL url) Toca um arquivo de áudio referenciado por um url

absolutovoid ● play(URL url, String file)

Toca um arquivo de áudio file referenciado de forma relativa à url

● Image getImage(URL url, String name) Retorna a imagem especificada (pode ser exibida

com o método paint(Graphics g))

Page 18: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Ciclo de Vida de um Applet

init() start() stop() destroy()

● init() e destroy() são usualmente utilizados para alocação e desalocação de recursos, respectivamente, como arquivos, memória, etc.

● start() e stop() são acionados quando um applet é exibido e ocultado no navegador, respectivamente.

Page 19: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de Applet

● Neste primeiro exemplo, temos a exibição de um texto no navegador

import java.awt.*;import java.applet.*;public class AppletSimples extends Applet {

public void init() {String msg = "Olá Mundo !!!";Label l = new Label(msg);l.setAlignment(Label.CENTER);setLayout(new BorderLayout());add(l, BorderLayout.CENTER);

}}

Page 20: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de AppletSaída no Navegador

Page 21: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de Applet (2)● Podemos modificar o primeiro exemplo alterando de

forma aleatória a cor de fundo do painel e passando a mensagem por parâmetro

import java.awt.*;import java.applet.*;public class AppletSimples extends Applet {

public void init() {int c = (int)(Math.random() * 1000000);this.setBackground(new Color(c));Label l = new Label(this.getParameter("Texto"));l.setAlignment(Label.CENTER);this.setLayout(new BorderLayout());this.add(l, BorderLayout.CENTER);

}}

Page 22: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de Applet (2)

● HTML com a mensagem passada por parâmetro

<html> <head> <title>HTML incluindo um applet</title> </head> <body> <applet code=aulas.AppletSimples width=200 height=150> <param name="Mensagem" value="Olá por Parâmetro!"> </applet> </body></html>

Page 23: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de Applet (2)Saída no Navegador

● Atualize através do navegador para ver as cores se alternando

Page 24: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de Applet (3)● Neste exemplo, adicionamos um botão e fazemos a

própria applet tratar os eventos do botão

public class AppletSimples extends Applet implements ActionListener {

public void init() {Label l = new Label(this.getParameter("Mensagem"));this.add(l);Button bt = new Button();bt.setLabel("Teste");bt.addActionListener(this);this.add(bt);

}public void actionPerformed(ActionEvent arg0) {

Color color=new Color ((int)(Math.random()*10000000));this.setBackground(color);

}}

Page 25: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exemplo de Applet (3)Saída no Navegador

● Clique no botão para alternar a cor de fundo do painel

Page 26: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Testando um Applet

● Do Eclipse:

Selecione o arquivo que contém o applet Clique com o botão direito e, no item “Run As”

aparecerá a opção “Java Applet”● Da linha de comando:

Na instalação do JDK há um aplicativo chamado appletviewer, o qual recebe um arquivo html como parâmetro (página do applet)

● Do browser:

Basta abrir o arquivo html que contém o applet

Page 27: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Testando um Applet

● Há uma cache para carga de classes applet

● Esta cache costuma dificultar a atualização de versões de uma applet em memória

● A primeira alternativa é fechar o browser

● A segunda é disparar uma console do plug-in java e realizar o esvaziamento da cache manualmente

No Firefox, selecione menu “Tools > Error Console” Na caixa de texto digite “java” e tecle <Enter> ou

pressione botão “Evaluate” Daí, basta clicar na tecla “x”

Page 28: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Transformação de Aplicações Swing/Awt em Applets

● O método main é substituído pelo método init do applet

● O frame não precisa ser criado, já que o applet é exibido no navegador

● Copie o conteúdo do construtor da janela do frame para dentro do método init

● Alguns métodos deixam de ter importância quando são utilizados como applets, pois há comandos html específicos: setTitle, setSize, setDefaultCloseOperation,

setVisible

Page 29: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Limitações

● Applets que são executadas remotamente têm comportamento restringido na máquina cliente

Algumas possibilidades: exibição de imagens, reprodução de som, capturar eventos de mouse e teclado, enviar entrada do usuário de volta para o host (máquina que hospeda o applet), etc

Estas restrições visam garantir segurança na execução dessas aplicações

Há um gerenciador de segurança na máquina virtual java que monitora a execução dessas aplicações

● Compatibilidade entre browsers

Melhorou com o surgimento dos plug-ins

Page 30: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Contexto dos Applets

● Ambiente onde o applet executa (usualmente o navegador ou um visualizador – appletviewer)

● Eventualmente, pode ser desejável que um applet comande seu ambiente, por exemplo, pedindo a exibição de uma nova página

● Ou seja, é interessante que o applet se comunique com o navegador

● Para tal, a classe Applet possui o método AppletContext getAppletContext()

● A interface AppletContext possui vários métodos que podem ser úteis a um applet

Page 31: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Contexto dos Applets

● Alguns métodos da interface AppletContext:

Applet getApplet (String name): Retorna uma referência para um applet com atributo name na mesma página

void showDocument (URL url, String target): Requisita ao browser que abra a url fornecida com o parâmetro target (por exemplo, target=“_self” abre na própria página, enquanto target=“_blank” abre numa página nova

void showStatus(String status): Exibe a string fornecida na barra de status do browser (atenção pois pode haver concorrência com o browser!)

Page 32: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Distribuição de Applets e Aplicativos Java

● Applets e Aplicativos Java podem ser distribuídos de forma concisa através de um arquivo JAR

● Um arquivo JAR é um arquivo compactado (formato zip) que possui uma estrutura especial, a qual é considerada pela JVM

● Um arquivo JAR é constituído minimamente de: uma hierarquia de pacotes que compõe a

aplicação (contem os arquivos .class) um diretório chamado “META-INF”, o qual

contém o arquivo de manifesto MANIFEST.MF

Page 33: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

JAR – Arquivo de Manifesto

● Um arquivo de manifesto simplesmente descreverá o conteúdo do JAR

● A primeira linha normalmente contém a versão do arquivo de manifesto: Manifest-Version: 1.0

● Este arquivo é dividido em seções, as quais são separadas por linhas em branco; A primeira seção é a principal e define o que vale globalmente

● Quando o JAR é gerado para ser um “executável” do aplicativo, este precisa conter a classe que inicia a aplicação: Main-Class: br.com.siriusnet.cursojava.Navegador

Page 34: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

JAR – Arquivo de Manifesto

● Outro atributo importante é o Class-Path● Especifica urls de bibliotecas e/ou extensões

que uma aplicação necessita

Class-Path: MyUtils.jar● Documentação:

http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html

Page 35: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Distribuição de Aplicativos Java – Lacre (Seal)

● Caso nossa aplicação possua membros (campos e métodos) públicos a um pacote, a declaração de uma nova classe com mesmo nome de pacote dá acesso a esse conteúdo público

● Para evitar essa situação, podemos lacrar nosso pacote de forma que nenhuma classe possa ser adicionada a ela

● No arquivo manifesto, um pacote é lacrado com o atributo:

Sealed: true● No Eclipse, na geração do JAR, a caixa de diálogo “JAR

Manifest Specification” contém recursos para o lacre

Page 36: Applets Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.

Exercício

● Exiba a calculadora criada como um applet