A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Applets Carlos Bazilio Depto de Ciência e Tecnologia

Apresentações semelhantes


Apresentação em tema: "Applets Carlos Bazilio Depto de Ciência e Tecnologia"— Transcrição da apresentação:

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

2 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

3 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

4 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)

5 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

6 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>

7 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>

8 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>

9 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>

10 Conceito de Applet <html> <head>
<title>HTML incluindo um applet</title> </head> <body> <applet code=aulas.MeuApplet width=800 height=600/> </body> </html> 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)

11 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”

12 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

13 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>

14 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

15 Implementação de um Applet java.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

16 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

17 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))

18 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.

19 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); }

20 Exemplo de Applet Saída no Navegador

21 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() * ); 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); }

22 Exemplo de Applet (2) HTML com a mensagem passada por parâmetro
<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>

23 Exemplo de Applet (2) Saída no Navegador
Atualize através do navegador para ver as cores se alternando

24 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()* )); this.setBackground(color);

25 Exemplo de Applet (3) Saída no Navegador
Clique no botão para alternar a cor de fundo do painel

26 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

27 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”

28 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

29 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

30 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

31 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!)

32 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

33 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

34 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: /jar.html

35 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

36 Exercício Exiba a calculadora criada como um applet


Carregar ppt "Applets Carlos Bazilio Depto de Ciência e Tecnologia"

Apresentações semelhantes


Anúncios Google