Applets Disciplina: Ambientes de Execução Paralela Profs. Dr. Celso Maciel da Costa Dr. Cesar de Rose Dr. Fernando Dotti Alunos: Alessandro Copetti Caio Graco P. Alegretti Ilustre audiência: gdhein, lgerber, mcristal, mpillon. 1 Sumário Introdução Applets x Aplicativos independentes Ambientes de compilação e de execução Segurança Desempenho Componentes para execução de applets Classe e API Applet 2 Introdução Java: conhecida como linguagem de programação para a Internet Applets – funciona no interior de um browser – mais do que complementos para páginas Web HotJava – Browser escrito em java que roda applets. – Primeira aplicação que mostrou a força dos applets. 3 Applets x Aplicativos independentes Aplicativos independentes – aplicativos do Java de uso geral que não necessitam de navegador para serem executados Applets – Visualizadores e Browsers • Appletviewer (appletviewer mypage.html) • Hotjava • Netscape Communicator • Internet Explorer 4 Ambientes de compilação e de execução 5 6 7 Segurança Camadas de segurança em Java – – – – Linguagem e Compiladores Verificador de bytecodes Class Loader Security Manager HotJava pode ser configurado para autorizar operações sobre arquivos de maneira mais flexível. 8 Segurança - cont. Applets podem fazer: – – – – apresentar imagens executar sons pegar teclas e clicks de mouse enviar entrada do usuário para máquina origem Têm acesso somente às seguintes informações: – versão do Java – nome e versão do S. O. – caracteres que separam: • arquivos (/ ou \) • caminhos (: ou ;) • linhas(\n ou \r\n) 9 Segurança - cont. BL Ler arquivo local N Escrever arquivo local N Obter informação de arquivo N Apagar arquivo N Executar outro programa N Ler propriedades do usuário N Conectar-se à porta rede servidorS Conectar-se a outra máquina N Carregar biblioteca Java N Chamar exit N Criar uma janela pop-up Aviso BF N N N N N S S S S N S AV S S S N S S S S S S S JA S S S S S S S S S S S 10 Segurança - cont. Legenda: BL = Browser carregando uma URL, usando o modelo padrão de segurança de applet BF = Browser carregando um arquivo local AV = Applet viewer JÁ = Java executando um aplicativo independente sem gerenciador de segurança. 11 Política de segurança do JDK 1.2 12 Segurança Signed Applet Implementação de níveis de privilégios para applets nos browsers – Execução fora da sandbox Applet carrega um “certificado de segurança” indicando de onde veio – Applets perfeitamente confiáveis: mesmos níveis de privilégios de uma aplicação local mensagem encriptografada pela chave privada 13 Segurança Signed Applet - cont. Private key -> Public key Sender (Public key) -> Receiver (Private key) Certificado – identidade do signatário – assunto – componentes dos nomes x.500 • unidade e organização; país – datas de validade Cliente: – consegue certificado da fonte do applet; – associa o applet a seu certificado (keytool - jdk1.2) 14 Segurança Signed Applet - cont. Keytool – cria chaves públicas e privadas – mostra, importa e exporta certificados – gera certificados x.509v1 auto autenticados jarsigner – assina arquivo .JAR – verifica assinatura de arquivos .JAR assinados Ferramenta de política – cria e modifica os arquivos de configuração de política externa que define a política de segurança em Java da sua instalação. 15 Desempenho - pontos de gargalo Orientação a objetos de resolução dinâmica Grau de abstração de hardware (quase) sem precedentes Interpretação de bytecode Gerenciamento automático de memória Verificação de exceção de limite de arrays Multithreading Carregamento dinâmico Medidas de segurança restritivas 16 Desempenho - Compiladores Estáticos – trabalham a partir do código fonte – ideal para desenvolvimento em plataforma conhecida Dinâmicos – – – – a nível de bytecode analisam o perfil de um programa enquanto roda adequados para os applets JVM + JIT 17 Desempenho - Compilador JIT (Just in Time) Traduz rapidamente o bytecode para código nativo da máquina e o coloca em um cache de memória. Contorna o interpretador compilação é feita dinamicamente em tempo de execução. – Podem rodar um programa de 5 a 20 vezes mais rápido do que um interpretador • MS J++: 30% a 40 % da performance C++ • Symantec: performance projetada de 100 % do C++ 18 Desempenho - Compilação adaptativa Os melhores compiladores JIT são, na verdade, compiladores adaptativos. [HAL98, p. 90] HotSpot – compilador JIT hiperativo – toma decisões sobre quais partes de um programa recompilar • freqüência de execução de trecho de código • tempo de execução do trecho • equilíbrio entre tempo necessário para compilação e tempo ganho com execução mais veloz • remoção de código compilado da memória para reaproveitamento 19 Componentes para execução de applets Código Java – extends Applet // na classe principal – construtor passa a ser init() – Menus são substituídos por outros elementos de interfaces – Gerenciador de Layout: • aplicativos: BorderLayout • applets: FlowLayout gerar bytecode (*.class) com javac código html <APPLET CODE=“arq.class” WIDTH=100 HEIGHT=100> </APPLET> Browser integra uma versão da JVM dentro dele20 Tags Applets CODEBASE= nome do diretório onde encontramse as classes ARCHIVE= – o class loader (carregador de arqs. de classes) • Resolve os nomes de classes necessárias. • Faz conexões com o servidor Web para cada *.class. – JAR = Java ARchive são arquivos que agrupam classes java, imagens e sons. Pode ser compactado. • Comando = jar options file1 file2 – A tag ARCHIVE referencia um arquivo *.JAR. 21 Passagem de informações para applets <APPLET CODE=“FontTestApplet.class” WIDTH=200, HEIGHT=200> <PARAM NAME=font VALUE=“Helvetica”> </APPLET> _______________________________________________________ import java.applet.*; import java.awt.*; public class FontTestApplet extends Applet { public void paint(Graphics g) { String fontName = getparameter(“font”); font f = new Font(fontName, Font.BOLD, 18); g.setFont(f); g.drawString(“Hello World”, 25, 50); } } 22 Classe e API Applet 23 Button Object Canvas Checkbox Choice Label Component List Scrollbar Container Window Frame Panel Applet 24 API - Métodos Gerenciadores dos Applets void init() – – – – chamado quando o applet é carregado executado somente uma vez processa os valores passados no “PARAM” adicionar componentes de GUI void start() – executado após init() e quando o usuário retorna à página void stop() – chamado automaticamente quando o usuário move-se para fora da página 25 API - Métodos Gerenciadores dos Applets - cont. void destroy() – chamado automaticamente quando o browser desliga 26 27 Sites exemplos http://www.ssec.wisc.edu/~sanjayl/planets/kidsat/ imovie.htm http://liftoff.msfc.nasa.gov/realtime/jtrack/3d/JTra ck3d.html 28 Bibliografia HAL98] Halfhill, T. R. Mais velocidade ao Java. In: Byte Brasil. Editora Globo. Ano 7, n. 80, Maio de 1998. [HOP96] HOPSON, K. C., INGRAM, S. E. Desenvolvendo Applets com Java, Rio de Janeiro: Campus, 1996. [HOR98] HORSTMANN, Cay S, CORNELL, Gary. Core Java, vols. 1 e 2. Palo Alto: Prentice Hall, 1998. [NEW97] NEWMAN, Alexander. Usando Java. Rio de Janeiro: Campus, 1997. 29 Bibliografia - cont. SUN. http://java.sun.com Hostile Java Applets. Http://users.visi.net/~nghcrft/home/java/java.htm Segurança em Java. http://www.phxjug.org/meetings/security/tsld001.htm 30 Merci beaucoup par votre attention ! ---------------------------------------------------- 31