Módulo 19

22
25/11/2014 1 2014/2015 2014/2015 3º TSI 3º TSI Jorge Pina Jorge Pina Módulo 19 Ferramentas de animação gráfica (Applets) Programação e Sistemas de Informação 2 AERBP AERBP Jorge Pina Jorge Pina Distribuição de software (1) Quando um programa está pronto é necessário proceder à sua distribuição para o cliente. Um programa em java tem o código fonte em ficheiros com extensão java e o código compilado em ficheiros com extensão class. Um único ficheiro .java poderá originar vários ficheiros .class, se o primeiro contiver classes internas. O nome destes ficheiros segue a seguinte norma: NomeClasse$NomeClasseInterna.class

description

Applets

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.