Signed Applet

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