You are on page 1of 22

25/11/2014

2014/2015

3 TSI

Jorge Pina

Mdulo 19
Ferramentas de animao grfica (Applets)
Programao e Sistemas de Informao

Distribuio de software (1)

Quando um programa est pronto


necessrio proceder sua distribuio para
o cliente.

Um programa em java tem o cdigo fonte


em ficheiros com extenso java e o cdigo
compilado em ficheiros com extenso class.

Um nico ficheiro .java poder originar


vrios ficheiros .class, se o primeiro contiver
classes internas.

O nome destes ficheiros segue a seguinte


norma:

AERBP

Jorge Pina

NomeClasse$NomeClasseInterna.class

25/11/2014

Distribuio de software (2)

1. Criao do cdigo fonte (Programa.java);


2. Compilao do cdigo fonte e gerao

do bytecode (Programa.class);

AERBP

3. Interpretao do bytecode pela JVM que

funciona ento como interpretador;

Jorge Pina

4. Converso do bytecode em linguagem

mquina.

Distribuio de software (3)

AERBP

So os ficheiros com cdigo compilado que devem ser enviados para o


cliente.

Significa isto que, se estes estiverem


junto dos ficheiros com cdigo fonte,
necessrio proceder sua separao.

Jorge Pina

25/11/2014

Distribuio de software (4)

Este processo, alm de moroso, pode


originar problemas, na medida em
que basta faltar um ficheiro .class
para que o programa no funcione.

Pelo contrrio, se enviar ficheiros a


mais, ou seja, tambm ficheiros .java,
o programa funcionar mas o cliente
ficar na posse do cdigo fonte.

AERBP

Jorge Pina

Distribuio de software (5)

AERBP

Para evitar enganos, uma boa


prtica separar partida os dois tipos
de ficheiros.

O esquema organizacional seguinte


tornou-se quase um padro:
projecto

Jorge Pina

source

classes

25/11/2014

Distribuio de software (6)

Outro dos problemas que pode


ocorrer aquando da distribuio de
software, a coliso dos nomes das
nossas classes com os nomes das
classes j existentes, no sistema onde
o programa ir funcionar.

Afim de evitar os problemas anteriormente descritos, as classes devem


inserir-se em pacotes.

AERBP

Jorge Pina

Distribuio de software (7)

AERBP

Jorge Pina

Para reduzir o risco de existirem tambm


pacotes diferentes com o mesmo nome,
a Oracle recomenda que, cada
desenvolvedor, acrescente atrs de
cada classe, o seu nome de domnio
invertido.
com.jorgepina.MinhaClasse.java

Refazendo o esquema organizacional


anterior, tendo em conta os pacotes,
obtemos a hierarquia a seguir apresentada.

25/11/2014

Distribuio de software (8)


projecto
source

classes

com

com

jorgepina

jorgepina

AERBP

Jorge Pina

Estrutura
do
pacote

Distribuio de software (9)

AERBP

Jorge Pina

10

A verso actual do BlueJ ainda no


permite fazer a separao de
ficheiros de forma confivel.

No entanto, dentro do seu projecto


poder criar o pacote com.seunome
seguindo os passos:
1.

Menu Edit;

2.

Opo New package

3.

Escrever o nome do pacote;

4.

Boto OK.

25/11/2014

Distribuio de software (10)

No NetBeans por predefinio o cdigo


fonte colocado na pasta src do seu
projecto.

Contudo, esta localizao


alterada seguindo os passos:

AERBP

Jorge Pina

1.

Menu File;

2.

Opo Project properties;

3.

Categoria Sources.

pode

ser

O cdigo compilado colocado na


subpasta ../build/classes do seu projecto.

11

JAR (Java Archive)

A distribuio de software pode


ainda ser facilitada pela ferramenta
JAR, que parte integrante do JDK.

Esta permite compactar todos


ficheiros com extenso class num
nico, com extenso jar, que ser
entregue ao cliente.

O ficheiro .jar s funcionar se a


aplicao estiver em modo grfico.

AERBP

Jorge Pina

12

25/11/2014

Jar BlueJ
No BlueJ, para criar um ficheiro .jar

dever seguir os passos:


1. Menu Project;

2. Opo Create jar file;


3. Caixa de seleco Main class: escolher

o ficheiro que contm o mtodo main;

AERBP

4. Boto Continue;
Jorge Pina

5. Atribuir um nome e uma localizao;


6. Boto Create.

13

Jar NetBeans (1)


No NetBeans, para criar um ficheiro .jar

dever seguir os passos:


1.

Menu Run;

2.

Opo Clean and Build project.

Se fizer alteraes ao cdigo, o ficheiro .jar


AERBP

Jorge Pina

14

ter que ser alterado, para, isso dever seguir


os passos:
1.

Menu Run;

2.

Opo Stop build/run;

3.

Menu Run;

4.

Opo Build project.

25/11/2014

Jar NetBeans (2)


Por predefinio, o ficheiro .jar ser

criado na subpasta dist da pasta


do seu projecto.
Poder

visualizar esta
seguindo os passos:

localizao

1. Menu File;

AERBP

2. Opo Project properties;


Jorge Pina

3. Categoria Packaging.

15

Opes de distribuio (1)

AERBP

Empacotar os ficheiros com extenso


class num ficheiro .jar apenas uma
das diversas formas que existem para
distribuir uma aplicao.

Na realidade, este mtodo


adequado quando as aplicaes:

so executadas apenas no computador


local do utilizador final;

no
necessitam
frequentes.

Jorge Pina

16

de

actualizaes

25/11/2014

Opes de distribuio (2)

Local a aplicao executada no


computador local do utilizador final como um
programa autnomo.

Combinao de local e remota uma parte da


aplicao executada no computador local
do utilizador final (cliente) estando ligada a um
computador remoto (servidor Web) no qual so
executadas as outras partes.

Remota toda a aplicao executada num


servidor Web ao qual o cliente acede atravs
de um meio no relacionado com Java,
habitualmente um browser.

AERBP

Jorge Pina

17

Opes de distribuio (3)


O esquema seguinte exibe as solues Java para cada
uma das trs opes de distribuio anteriores:

AERBP

Jorge Pina

18

25/11/2014

JWS Java Web Start (1)

O JWS , entre outras coisas, um


programa que reside na mquina
cliente e funciona de forma muito
semelhante a um plug-in para browser.

Este programa est includo no JRE e


como tal no JDK.

O acesso a aplicaes Java atravs do


JWS poder ser feito de duas formas:

AERBP

Jorge Pina

19

Java Cache Viewer

Browser

JWS Java Web Start (2)


Para aceder ao Java Cache Viewer dever

seguir os passos:
1. Boto Iniciar;
2. Opo Painel de controlo;
3. Java;
4. Separador General;
AERBP

5. Boto View da seco Temporary

Internet Files.
Jorge Pina

20

Java Cache Viewer s mostrar


aplicaes que j foram acedidas via
browser pelo menos uma vez.

10

25/11/2014

JWS Java Web Start (3)

Salienta-se que as aplicaes, apesar


de serem iniciadas a partir de um
browser, so executadas de forma
autnoma.

Quando o utilizador acede hiperligao da aplicao, pela primeira


vez, feito o download da mesma
para o computador local do utilizador.

A partir da a aplicao poder ser


executada em offline.

AERBP

Jorge Pina

21

JWS Java Web Start (4)

AERBP

Jorge Pina

Sempre que a aplicao for alterada


no servidor Web, o JWS faz o download
da actualizao, integrando-a no
cdigo que est no computador local
do utilizador.

Como bvio, esta actualizao s


possvel quando o utilizador estiver
online.

22

11

25/11/2014

JWS Java Web Start (5)

Etapas da distribuio de uma aplicao JWS atravs de um browser:


1.

Criar um ficheiro .jar da aplicao Java;

2.

Criar um ficheiro .jnlp;

3.

Criar um ficheiro .html com


hiperligao para o ficheiro jnlp;

4.

Inserir os ficheiros anteriores no servidor


Web.

AERBP

uma

Jorge Pina

23

JWS Java Web Start (6)

AERBP

Jorge Pina

Um ficheiro com extenso jnlp (Java


Networking Launching Protocol) um
documento XML que contm o nome do
ficheiro .jar da aplicao.

Em alguns servidores Web poder ser


necessrio adicionar o tipo jnlp ao ficheiro
mime.types. Para isso, acrescente a linha:
application/x-java-jnlp-file.
O
servidor
Apache da distribuio Xampp j tem
esta configurao.

24

12

25/11/2014

JWS NetBeans (1)

AERBP

O NetBeans cria automaticamente os


ficheiros com extenso jnlp e html,
desde que a aplicao seja aberta
com o JWS pelo menos uma vez.

Para isso necessrio seguir os passos:


1. Menu File;
2. Opo Project properties;

Jorge Pina

3. Categoria Run;
4. Marcar a opo Run with Java Web Start.

25

JWS NetBeans (2)


Se a opo Run with Java Web Start

no estiver disponvel dever proceder


do modo seguinte:
1. Menu File;
2. Opo Project properties;
3. Categoria Application / Web Start;
AERBP

4. Marcar a opo Enable Web Start;


5. Seleccionar em Codebase: a opo

Jorge Pina

No codebase

26

13

25/11/2014

JWS NetBeans (3)


Os ficheiros .jnlp e .html sero criados na

subpasta dist da pasta do seu projecto.


Poder

test-los abrindo o ficheiro com


extenso html e clicando na hiperligao
que se encontra no mesmo.

Por fim devem-se mover todos os ficheiros da


AERBP

Jorge Pina

27

subpasta dist para o servidor Web. Antes


porm no esquecer de alterar a opo
Codebase para User defined colando o
endereo Web em Codebase preview.
Exemplo: http://127.0.0.1/minha_pasta

JWS - Exemplo de um jnlp

AERBP

Jorge Pina

28

<?xml version="1.0" encoding="utf-8"?>


<!Exemplo de um ficheiro com extenso jnlp-->
<jnlp spec="1.0+" codebase="http://127.0.0.1"
href="MeuJNLP.jnlp">
<information>
<title>Aplicao JWS</title>
<vendor>Jorge Pina</vendor>
<description> Aplicao para experimentar o JWS
</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+"/>
<jar href=AplicacaoGrafica.jar"/>
</resources>
<application-desc main-class=AplicacaoGrafica"/>
</jnlp>

14

25/11/2014

JWS - Exemplo de um html


<HTML>
<!Exemplo de um ficheiro com extenso html-->
<BODY>
<a href="http://127.0.0.1/MeuJNLP.jnlp">
Abre a aplicao denominada "Aplicao
Grfica"</a>
</BODY>
AERBP

</HTML>

Jorge Pina

29

Applets (1)
Os programas em java podem assumir trs

modalidades: Aplicaes, Applets e Servlets.


Como

visto anteriormente, as Aplicaes


podero ser executadas utilizando apenas o
JRE ou recorrendo tambm ao JWS.

As Applets so sempre executados dentro de


AERBP

Jorge Pina

um browser. Para que tal seja possvel, so


embebidas dentro do HTML utilizando a tag
APPLET (j descontinuada).
<APPLET CODE = MinhaApplet width = 300 height = 100>

30

</APPLET>

15

25/11/2014

Applets (2)
As applets tm um ciclo de vida definido

pelos mtodos init(), start(), stop() e destroy():


init() primeiro mtodo a ser invocado.

Deve
conter o cdigo de inicializao da applet.
Invocado apenas uma vez durante a execuo da
applet.

start() invocado a seguir ao mtodo init() ou a


AERBP

Jorge Pina

seguir ao mtodo stop(). Invocado sempre que o


ficheiro .html, onde se encontra a applet,
apresentado no ecr. Por exemplo quando
regressa a uma pgina anteriormente visitada sem
ter fechado o browser.

31

Applets (3)
stop() - invocado sempre que o ficheiro .html, onde

se encontra a applet, fechado. Deve conter o


cdigo que suspende as threads que no so
necessrias quando a applet no est visvel.
destroy() invocado quando a applet precisa de

AERBP

Jorge Pina

ser completamente removida da memria. Por


exemplo, quando se fecha o browser. Deve conter
o cdigo que liberta todos os recursos utilizados
pela applet.

Os mtodos anteriores so definidos na classe

Applet e herdados pela classe JApplet


32

16

25/11/2014

Applets (3)
stop() - invocado sempre que o ficheiro .html, onde

se encontra a applet, fechado. Deve conter o


cdigo que suspende as threads que no so
necessrias quando a applet no est visvel.
destroy() invocado quando a applet precisa de

ser completamente removida da memria. Por


exemplo, quando se fecha o browser. Deve conter
o cdigo que liberta todos os recursos utilizados
pela applet.

AERBP

Jorge Pina

Os mtodos anteriores so definidos na classe

Applet e herdados pela classe JApplet


33

Applets (4)
A construo de applets implica ainda a

utilizao do mtodo paint(Graphics g), que


invocado sempre que uma applet
desenhada.
O

mtodo
Container.

AERBP

Jorge Pina

34

paint

herdado

da

classe

Sempre

que

necessrio
forar
a
actualizao de uma applet recorre-se ao
mtodo repaint() que por sua vez invoca o
mtodo paint(Graphics g).

O mtodo repaint() herdado da classe

Component.

17

25/11/2014

Applets (5)
Apesar de uma applet ser sempre executada

dentro de um browser, durante a fase de


testes possvel utilizar a ferramenta
AppletViewer do JDK.
BlueJ

AERBP

Jorge Pina

35

1.
2.
3.
4.

Boto direito do rato sobre a applet;


Opo Run applet;
Marcar a opo Run applet in appletviewer;
Boto OK.

NetBeans
1.
2.

Boto direito do rato sobre a applet;


Opo Run file.

Applets (6) Esqueleto de uma Applet

AERBP

Jorge Pina

36

18

25/11/2014

Applets (7)
Ciclo de vida de uma Applet:
start()

A Applet
carregada

destroy()

Visitando
uma pgina

init()
Saindo ou
descartando
uma pgina
Descartando
uma pgina

AERBP

stop()

Jorge Pina

37

Applets (8)
public class PrimeiraJApplet extends JApplet {
public void init() {
System.out.println(init Inicio da Applet); }
public void start() {
System.out.println(start Ativao da Applet); }
public void stop() {
System.out.println(stop Desativao da Applet); }
public void destroy() {
System.out.println(destroy A Applet foi removida); }

AERBP

public void paint(Graphics g) {


System.out.println(paint); }
Jorge Pina

38

public void repaint() {


System.out.println(repaint); }
}

19

25/11/2014

Applets (9)
Toda applet uma aplicao grfica, no

existindo applets em modo texto;

principal diferena entre uma Java


application e uma applet o fato de que
a janela base da aplicao extender
(extends) a classe APPLET e no a classe
JFrame;

AERBP

Jorge Pina

39

Alm

disso, a parte da aplicao que


instancia a classe Applet, relacionando-a
com o browser, padro e, portanto, no
precisa ser descrita;

Desta forma, applets no tero a funo

main( ).

Applets (10)
A um

objecto do tipo JApplet podem ser


adicionados todos os componentes utilizados nos
objectos do tipo JFrame.

Uma JApplet permite ainda o desenho directo

sobre a sua superfcie recorrendo aos mtodos


da classe Graphics do pacote java.awt:
drawString;

AERBP

drawImage ;
drawLine;

Jorge Pina

drawRect;
fillOval;

40

https://docs.oracle.com/javase/8/docs/api/

20

25/11/2014

Applets (11)

O objeto Graphics, passado como parmetro


pelo mtodo paint(Graphics g), possui alguns
mtodos para desenhar na rea grfica do
painel de um Applet;

A origem de um objeto grfico o canto superior


esquerdo de um painel (ponto (0,0));

AERBP

Jorge Pina

Um

objeto

Graphics

funciona

como

uma

mquina de estados e possui atributos que


podem ser alterados, como por exemplo: fonte,

41

cor de fundo, cor de contorno, etc.

Applets (12)

Os principais mtodos associados a um


objeto Graphics so:

void drawString(String str, int x, int y)


Desenha a String str na posico (x,y).

void drawLine(int x1, int y1, int x2, int y2)


Desenha uma linha do ponto (x1,y1) ao ponto

AERBP

(x2,y2).
Jorge Pina

void drawRect(int x, int y, int width, int height)


Desenha o contorno de um retngulo a partir de

42

(x,y) com largura width e altura height.

21

25/11/2014

Applets (13)

void drawOval(int x, int y, int width, int height)


Desenha o contorno de uma elipse a partir de (x,y)
com largura width e altura height.

void fillRect(int x, int y, int width, int height)


Desenha um retngulo preenchido a partir de (x,y)
com largura width e altura height.

AERBP

Jorge Pina

void setColor(Color c)
Faz a cor c ser a cor corrente para novos
desenhos.

43

22

You might also like