310 likes | 422 Views
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. Sumário. Introdução
E N D
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.
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 eAPI Applet
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.
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
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.
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)
Segurança - cont. BL BF AV JA Ler arquivo local N N S S Escrever arquivo local N N S S Obter informação de arquivo N N S S Apagar arquivo N N N S Executar outro programa N N S S Ler propriedades do usuário N S S S Conectar-se à porta rede servidorS S S S Conectar-se a outra máquina N S S S Carregar biblioteca Java N S S S Chamar exit N N S S Criar uma janela pop-up Aviso S S S
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.
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
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)
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.
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
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
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++
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
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 dele
Tags Applets • CODEBASE= nome do diretório onde encontram-se 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.
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); } }
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
API - Métodos Gerenciadores dos Applets - cont. • void destroy() • chamado automaticamente quando o browser desliga
Sites exemplos • http://www.ssec.wisc.edu/~sanjayl/planets/kidsat/imovie.htm • http://liftoff.msfc.nasa.gov/realtime/jtrack/3d/JTrack3d.html
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.
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
Merci beaucoup par votre attention ! ----------------------------------------------------