Módulo 19
description
Transcript of Módulo 19
-
25/11/2014
1
2014/20152014/2015
3 TSI3 TSI
Jorge PinaJorge Pina
Mdulo 19Ferramentas de animao grfica (Applets)
Programao e Sistemas de Informao
2
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (1) Quando um programa est pronto
necessrio proceder sua distribuio parao cliente.
Um programa em java tem o cdigo fonteem ficheiros com extenso java e o cdigocompilado em ficheiros com extenso class.
Um nico ficheiro .java poder originarvrios ficheiros .class, se o primeiro contiverclasses internas.
O nome destes ficheiros segue a seguintenorma: NomeClasse$NomeClasseInterna.class
-
25/11/2014
2
3
AERBPAERBP
Jorge PinaJorge Pina
1. Criao do cdigo fonte (Programa.java);2. Compilao do cdigo fonte e gerao
do bytecode (Programa.class);3. Interpretao do bytecode pela JVM que
funciona ento como interpretador;4. Converso do bytecode em linguagem
mquina.
Distribuio de software (2)
4
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (3)
So os ficheiros com cdigo compila-do que devem ser enviados para ocliente.
Significa isto que, se estes estiveremjunto dos ficheiros com cdigo fonte, necessrio proceder sua separa-o.
-
25/11/2014
3
5
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (4)
Este processo, alm de moroso, podeoriginar problemas, na medida emque basta faltar um ficheiro .classpara que o programa no funcione.
Pelo contrrio, se enviar ficheiros amais, ou seja, tambm ficheiros .java,o programa funcionar mas o clienteficar na posse do cdigo fonte.
6
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (5) Para evitar enganos, uma boa
prtica separar partida os dois tiposde ficheiros.
O esquema organizacional seguintetornou-se quase um padro:
projecto
source classes
-
25/11/2014
4
7
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (6)
Outro dos problemas que podeocorrer aquando da distribuio desoftware, a coliso dos nomes dasnossas classes com os nomes dasclasses j existentes, no sistema ondeo programa ir funcionar.
Afim de evitar os problemas anterior-mente descritos, as classes deveminserir-se em pacotes.
8
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (7) Para reduzir o risco de existirem tambm
pacotes diferentes com o mesmo nome,a Oracle recomenda que, cadadesenvolvedor, acrescente atrs decada classe, o seu nome de domnioinvertido. com.jorgepina.MinhaClasse.java
Refazendo o esquema organizacionalanterior, tendo em conta os pacotes,obtemos a hierarquia a seguir apre-sentada.
-
25/11/2014
5
9
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (8)
projecto
source
com
jorgepina
classes
com
jorgepina
Estrutura do
pacote
10
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (9) A verso actual do BlueJ ainda no
permite fazer a separao deficheiros de forma confivel.
No entanto, dentro do seu projectopoder criar o pacote com.seunomeseguindo os passos:1. Menu Edit;2. Opo New package3. Escrever o nome do pacote;4. Boto OK.
-
25/11/2014
6
11
AERBPAERBP
Jorge PinaJorge Pina
Distribuio de software (10) No NetBeans por predefinio o cdigo
fonte colocado na pasta src do seuprojecto.
Contudo, esta localizao pode seralterada seguindo os passos:1. Menu File;
2. Opo Project properties;
3. Categoria Sources.
O cdigo compilado colocado nasubpasta ../build/classes do seu projecto.
12
AERBPAERBP
Jorge PinaJorge Pina
JAR (Java Archive)
A distribuio de software podeainda ser facilitada pela ferramentaJAR, que parte integrante do JDK.
Esta permite compactar todosficheiros com extenso class numnico, com extenso jar, que serentregue ao cliente.
O ficheiro .jar s funcionar se aaplicao estiver em modo grfico.
-
25/11/2014
7
13
AERBPAERBP
Jorge PinaJorge Pina
Jar BlueJ
No BlueJ, para criar um ficheiro .jardever 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;
4. Boto Continue;
5. Atribuir um nome e uma localizao;
6. Boto Create.
14
AERBPAERBP
Jorge PinaJorge Pina
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 .jarter que ser alterado, para, isso dever seguiros passos:1. Menu Run;
2. Opo Stop build/run;
3. Menu Run;
4. Opo Build project.
-
25/11/2014
8
15
AERBPAERBP
Jorge PinaJorge Pina
Jar NetBeans (2)
Por predefinio, o ficheiro .jar sercriado na subpasta dist da pastado seu projecto.
Poder visualizar esta localizaoseguindo os passos:1. Menu File;
2. Opo Project properties;
3. Categoria Packaging.
16
AERBPAERBP
Jorge PinaJorge Pina
Opes de distribuio (1)
Empacotar os ficheiros com extensoclass num ficheiro .jar apenas umadas diversas formas que existem paradistribuir uma aplicao.
Na realidade, este mtodo adequado quando as aplicaes: so executadas apenas no computador
local do utilizador final; no necessitam de actualizaes
frequentes.
-
25/11/2014
9
17
AERBPAERBP
Jorge PinaJorge Pina
Opes de distribuio (2) Local a aplicao executada no
computador local do utilizador final como umprograma autnomo.
Combinao de local e remota uma parte daaplicao executada no computador localdo utilizador final (cliente) estando ligada a umcomputador remoto (servidor Web) no qual soexecutadas as outras partes.
Remota toda a aplicao executada numservidor Web ao qual o cliente acede atravsde um meio no relacionado com Java,habitualmente um browser.
18
AERBPAERBP
Jorge PinaJorge Pina
Opes de distribuio (3)
O esquema seguinte exibe as solues Java para cadauma das trs opes de distribuio anteriores:
-
25/11/2014
10
19
AERBPAERBP
Jorge PinaJorge Pina
JWS Java Web Start (1) O JWS , entre outras coisas, um
programa que reside na mquinacliente e funciona de forma muitosemelhante a um plug-in para browser.
Este programa est includo no JRE ecomo tal no JDK.
O acesso a aplicaes Java atravs doJWS poder ser feito de duas formas: Java Cache Viewer Browser
20
AERBPAERBP
Jorge PinaJorge Pina
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;5. Boto View da seco Temporary
Internet Files.
O Java Cache Viewer s mostraraplicaes que j foram acedidas viabrowser pelo menos uma vez.
-
25/11/2014
11
21
AERBPAERBP
Jorge PinaJorge Pina
JWS Java Web Start (3) Salienta-se que as aplicaes, apesar
de serem iniciadas a partir de umbrowser, so executadas de formaautnoma.
Quando o utilizador acede hiperli-gao da aplicao, pela primeiravez, feito o download da mesmapara o computador local do utilizador.
A partir da a aplicao poder serexecutada em offline.
22
AERBPAERBP
Jorge PinaJorge Pina
JWS Java Web Start (4)
Sempre que a aplicao for alteradano servidor Web, o JWS faz o downloadda actualizao, integrando-a nocdigo que est no computador localdo utilizador.
Como bvio, esta actualizao s possvel quando o utilizador estiveronline.
-
25/11/2014
12
23
AERBPAERBP
Jorge PinaJorge Pina
JWS Java Web Start (5)
Etapas da distribuio de uma aplica-o JWS atravs de um browser:1. Criar um ficheiro .jar da aplicao Java;2. Criar um ficheiro .jnlp;3. Criar um ficheiro .html com uma
hiperligao para o ficheiro jnlp;4. Inserir os ficheiros anteriores no servidor
Web.
24
AERBPAERBP
Jorge PinaJorge Pina
JWS Java Web Start (6)
Um ficheiro com extenso jnlp (JavaNetworking Launching Protocol) umdocumento XML que contm o nome doficheiro .jar da aplicao.
Em alguns servidores Web poder sernecessrio adicionar o tipo jnlp ao ficheiromime.types. Para isso, acrescente a linha:application/x-java-jnlp-file. O servidorApache da distribuio Xampp j temesta configurao.
-
25/11/2014
13
25
AERBPAERBP
Jorge PinaJorge Pina
JWS NetBeans (1)
O NetBeans cria automaticamente osficheiros com extenso jnlp e html,desde que a aplicao seja abertacom o JWS pelo menos uma vez.
Para isso necessrio seguir os passos:1. Menu File;2. Opo Project properties;3. Categoria Run;4. Marcar a opo Run with Java Web Start.
26
AERBPAERBP
Jorge PinaJorge Pina
JWS NetBeans (2) Se a opo Run with Java Web Start
no estiver disponvel dever procederdo modo seguinte:1. Menu File;2. Opo Project properties;3. Categoria Application / Web Start;4. Marcar a opo Enable Web Start;5. Seleccionar em Codebase: a opo
No codebase
-
25/11/2014
14
27
AERBPAERBP
Jorge PinaJorge Pina
JWS NetBeans (3) Os ficheiros .jnlp e .html sero criados na
subpasta dist da pasta do seu projecto.
Poder test-los abrindo o ficheiro comextenso html e clicando na hiperligaoque se encontra no mesmo.
Por fim devem-se mover todos os ficheiros dasubpasta dist para o servidor Web. Antesporm no esquecer de alterar a opoCodebase para User defined colando oendereo Web em Codebase preview.
Exemplo: http://127.0.0.1/minha_pasta
28
AERBPAERBP
Jorge PinaJorge Pina
JWS - Exemplo de um jnlp
Aplicao JWSJorge Pina Aplicao para experimentar o JWS
-
25/11/2014
15
29
AERBPAERBP
Jorge PinaJorge Pina
JWS - Exemplo de um html
Abre a aplicao denominada "AplicaoGrfica"
30
AERBPAERBP
Jorge PinaJorge Pina
Applets (1) Os programas em java podem assumir trs
modalidades: Aplicaes, Applets e Servlets.
Como visto anteriormente, as Aplicaespodero ser executadas utilizando apenas oJRE ou recorrendo tambm ao JWS.
As Applets so sempre executados dentro deum browser. Para que tal seja possvel, soembebidas dentro do HTML utilizando a tagAPPLET (j descontinuada).
-
25/11/2014
16
31
AERBPAERBP
Jorge PinaJorge Pina
Applets (2) As applets tm um ciclo de vida definido
pelos mtodos init(), start(), stop() e destroy():
init() primeiro mtodo a ser invocado. Deveconter o cdigo de inicializao da applet.Invocado apenas uma vez durante a execuo daapplet.
start() invocado a seguir ao mtodo init() ou aseguir ao mtodo stop(). Invocado sempre que oficheiro .html, onde se encontra a applet, apresentado no ecr. Por exemplo quandoregressa a uma pgina anteriormente visitada semter fechado o browser.
32
AERBPAERBP
Jorge PinaJorge Pina
Applets (3) stop() - invocado sempre que o ficheiro .html, onde
se encontra a applet, fechado. Deve conter ocdigo que suspende as threads que no sonecessrias quando a applet no est visvel.
destroy() invocado quando a applet precisa deser completamente removida da memria. Porexemplo, quando se fecha o browser. Deve contero cdigo que liberta todos os recursos utilizadospela applet.
Os mtodos anteriores so definidos na classeApplet e herdados pela classe JApplet
-
25/11/2014
17
33
AERBPAERBP
Jorge PinaJorge Pina
Applets (3) stop() - invocado sempre que o ficheiro .html, onde
se encontra a applet, fechado. Deve conter ocdigo que suspende as threads que no sonecessrias quando a applet no est visvel.
destroy() invocado quando a applet precisa deser completamente removida da memria. Porexemplo, quando se fecha o browser. Deve contero cdigo que liberta todos os recursos utilizadospela applet.
Os mtodos anteriores so definidos na classeApplet e herdados pela classe JApplet
34
AERBPAERBP
Jorge PinaJorge Pina
Applets (4) A construo de applets implica ainda a
utilizao do mtodo paint(Graphics g), que invocado sempre que uma applet desenhada.
O mtodo paint herdado da classeContainer.
Sempre que necessrio forar aactualizao de uma applet recorre-se aomtodo repaint() que por sua vez invoca omtodo paint(Graphics g).
O mtodo repaint() herdado da classeComponent.
-
25/11/2014
18
35
AERBPAERBP
Jorge PinaJorge Pina
Applets (5) Apesar de uma applet ser sempre executada
dentro de um browser, durante a fase detestes possvel utilizar a ferramentaAppletViewer do JDK.
BlueJ1. Boto direito do rato sobre a applet;2. Opo Run applet;3. Marcar a opo Run applet in appletviewer;4. Boto OK.
NetBeans1. Boto direito do rato sobre a applet;2. Opo Run file.
36
AERBPAERBP
Jorge PinaJorge Pina
Applets (6) Esqueleto de uma Applet
-
25/11/2014
19
37
AERBPAERBP
Jorge PinaJorge Pina
Ciclo de vida de uma Applet:
Applets (7)
A Applet carregada
init()
start()
stop()
destroy()Visitando
uma pgina
Saindo ou descartando uma pgina
Descartando uma pgina
38
AERBPAERBP
Jorge PinaJorge Pina
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); }
public void paint(Graphics g) {System.out.println(paint); }
public void repaint() {System.out.println(repaint); }
}
-
25/11/2014
20
39
AERBPAERBP
Jorge PinaJorge Pina
Applets (9) Toda applet uma aplicao grfica, no
existindo applets em modo texto; A principal diferena entre uma Java
application e uma applet o fato de quea janela base da aplicao extender(extends) a classe APPLET e no a classeJFrame;
Alm disso, a parte da aplicao queinstancia a classe Applet, relacionando-acom o browser, padro e, portanto, noprecisa ser descrita;
Desta forma, applets no tero a funomain( ).
40
AERBPAERBP
Jorge PinaJorge Pina
Applets (10) A um objecto do tipo JApplet podem ser
adicionados todos os componentes utilizados nosobjectos do tipo JFrame.
Uma JApplet permite ainda o desenho directosobre a sua superfcie recorrendo aos mtodosda classe Graphics do pacote java.awt: drawString; drawImage ; drawLine; drawRect; fillOval; https://docs.oracle.com/javase/8/docs/api/
-
25/11/2014
21
41
AERBPAERBP
Jorge PinaJorge Pina
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));
Um objeto Graphics funciona como uma
mquina de estados e possui atributos que
podem ser alterados, como por exemplo: fonte,
cor de fundo, cor de contorno, etc.
42
AERBPAERBP
Jorge PinaJorge Pina
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
(x2,y2).
void drawRect(int x, int y, int width, int height)
Desenha o contorno de um retngulo a partir de
(x,y) com largura width e altura height.
-
25/11/2014
22
43
AERBPAERBP
Jorge PinaJorge Pina
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.
void setColor(Color c)
Faz a cor c ser a cor corrente para novos
desenhos.