JAVA FX

Objetivo da Pesquisa:
Transmitir informações sobre a tecnologia JavaFX adquirindo assim, conhecimento e além disso, compartilhando conteúdo sobre essa tecnologia para os diversos profissionais da área de Informática.

  • Disciplina de compiladores ministrada pelo Prof. Osvaldo Requião.

javafxisland200x100.png

Gênese do JavaFX

O JavaFX foi criado pela Sun Microsystems , com a finalidade de ser o meio para se desenvolver aplicativos para componentes móveis, Web 2.0 e aplicativos voltados para a RIA(Rich Internet Applications – aplicações típicas de desktops, só que desenvolvidas e executadas no browser). Através desse meio de desenvolvimento, se tornou possível utilizar aplicativos que antes eram instalados e armazenados nos computadores somente pela internet.
Sendo open-source (código é aberto para qualquer pessoa possa analisar ou alterar a estrutura do mesmo), o JavaFX foi desenvolvido sobre a Java Virtual Machine (Máquina Virtual Java) baseada em Swing, Java2D e Java3D. Isso permitiu uma API com maior nível de abstração e menor complexidade, além de poder interagir com as aplicações oriundas das linhas J2ME, J2EE e J2SE.
O resultado é uma maior distribuição do sistema e maior aproveitamento de código, facilitando o trabalho no desenvolvimento de aplicações Java.
Mas esse novo sistema foi projetado para desenvolver aplicativos voltados para a web e sistemas móveis.
São eles:

  • JavaFx Script
  • JavaFx Mobile

JavaFX Script

O JavaFX Script, por possuir uma sintaxe parecida com o Javascript e o Scala Vector Graphics (SVG), permitiu uma maior abstração de detalhes, antes incômodas aos desenvolvedores de aplicações com diversos recursos gráficos, possibilitando o desenvolvimento de aplicações com maior facilidade, rapidez e eficiência, além de permitir a inclusão de novas tecnologias em sua plataforma, permitindo serviços que sejam usados de forma virtual em dispositivos mais novos, como DVD com Blu-Ray e celulares, por exemplo. Vejamos abaixo um código desenvolvido em Swing e outro em JavaFX:

  • Em Swing:
public class HelloSwing {
public static void main(String[] args) {
JFrame frame = new JFrame("Meu programa em Swing");
JLabel label = new JLabel("Olá Mundo");
Dimension d = new Dimension(300, 50);
frame.setSize(d);
frame.add(label);
frame.setVisible(true);
}
}
  • Em JavaFX:
Frame {
title: "Meu programa em javafx"
width: 200
height: 50
visible: true
content: Label {
text: "Olá mundo"
}
}

Através dos exemplos acima, podemos comprovar a abstração de detalhes, como a definição e projeção dos labels e frames. Embora neste exemplo não represente uma grande diferença, em aplicações que superam mais de 10 mil linhas, sendo que muitas são somente para a definição das mesmas, como o código seria “enxugado”.

JavaFX Mobile

javafx

Planejado e projetado para plataformas móveis, como celulares, smartphones, palmtops, handhelds, dentre outros, o JavaFx Mobile é um sistema completo de desenvolvimento, possibilitando desde pequenas aplicações, até o gerenciamento completo do sistema em questão. Está disponível para operadoras e fabricantes de aparelhos móveis e outras empresas que desejam maior eficiência e eficácia no desenvolvimento de aplicativos, como :

  • Mensagens(SMS, MMS, E-mail, etc.);
  • Browsers(Mozilla, Internet Explorer);
  • Suporte a multimídia (Áudio, Vídeo e periféricos);
  • Telefonia;
  • Segurança (Frameworks);
  • Atualizações preventivas ou evolutivas (update).

A grande jogada do JavaFX Mobile foi utilizar a API já existente do Java, permitindo a integração da mesma com as demais derivações e plataformas de desenvolvimento Java. Isso resulta em um grande leque de possibilidades de desenvolvimento dos mais diversos tipos e aplicabilidades de software.


Certificado De Aprendizagem De JavaFX:

Uma introdução ao certificado de JavaFX para programadores de Java

A linguagem de programação do certificado JavaFX é declarativa, baseado nas linguagens de script da Sun Microsystems. O JavaFX tem uma grande gama de características, incluindo a habilidade de fazer chamadas diretas à API’s do Java. Isso porque além de seu código ser feito de forma estática, há a possibilidade de se fazer estruturado, podendo reutilizar as características do encapsulamento (pacotes, classes, etc.), tornando real a possibilidade de se criar e fazer manutenção em grandes programas usando Java.

A Aplicação do JavaFX

A maneira mais fácil de usar as funcionalidades do JavaFX é habilitando a demonstração Java web Start no ambiente de desenvolvimento Java (JRE). Nele, já é iniciado com um código padrão que é executado imediatamente. Mas pode-se copiar e colar as pastas onde estão salvas as fontes, podendo acessá-las, modificá-las e executá-las.

figure1.png

Tecnologia De JavaFX:

Uma Linguagem Estaticamente Datilografada

O JavaFX linguagem de programação é uma linguagem com tipagem estática. O que significa isto exatamente?
Considere o seguinte:

  • var myVariable = "hello";

Esta declaração, semelhante ao que você pode encontrar em tecnologia JavaScript, cria uma variável chamada myVariable e atribui-lhe o valor string "hello". No entanto, depois de declarar a variável, vamos tentar associá-la a algo diferente de uma string:

  • myVariable = 12345;

Uma vez que o código não usa aspas a cerca de 12345, essa variável está agora a ser atribuída como um número inteiro, em vez de uma string. Em tecnologia JavaScript, a variável irá funcionar bem. No entanto, uma linguagem estaticamente digitada como JavaFX não vai permitir isso. Isto porque myVariable inicialmente foi declarado como um tipo String, e mais tarde o código tenta transferir-lo como um inteiro. Com JavaFX, uma variável que é declarada como uma string deve continuar a ser uma String.
De fato, se você inserir essas duas linhas de código para o JavaFX Pad demo, você vai ver imediatamente um erro na parte inferior da janela, como mostrado na Figura 2.

figure2.png

Tecnologia De JavaFX:

Uma Linguagem Declarativa De Scripting

JavaFX tecnologia também é uma linguagem declarativa. Mas o que faz exatamente declarativa significa? Para responder a esta questão, considere este HelloWorld a partir do web site OpenJFX:

class HelloWorldModel {
    attribute saying: String;
}
 
var model = HelloWorldModel {
    saying: "Hello World"
};
 
var win = Frame {
    title: bind "{model.saying} JavaFX"
    width: 200
    content: TextField {
        value: bind model.saying
    }
    visible: true
};

Enquanto as linguagens compiladas, incluindo o Java são imperativas, ou seja, utilizam um método main, onde os códigos referentes ao andamento do programa são inseridos e baseiam-se em classes, estados e instâncias, no JavaFX o código não contém o método main. O Instead, o motor scripting, lê todo o programa antes de executar. Isso culmina na possibilidade de análise e interpretação do código antes da execução.

Princípios da tecnologia de JavaFX

Essa nova tecnologia resultou em muitas mudanças em como criar, através de que e nas terminologias e nas estruturas de declaração utilizadas em Java.
Primitivos: Só existem quatro: Boolean, Integer, Number e String. Com isso, por exemplo, o number trabalha com variáveis que em Java eram classificadas como double ou float.
Cardinalidade: Tem três:
?, que é opcional, serve para determinar que a variável é nula,
*, que é utilizado para declarar se uma instância tem nenhum ou um ou mais de um valor (usando um vetor, por exemplo) e
+, que é semelhante ao * , mas só se refere a existência de no mínimo um valor.

Formato: O JavaFX trabalha com formatos novos, explicitados nas classes:

  • Começos de formato da diretriz orientadora com % => java.util.Formatter
  • A expressão é Number => java.text.DecimalFormat
  • A expressão é java.util.Date => java.text.SimpleDateFormat
  • Atributos, funções e operações => Os atributos agora são declarados usando a forma attribute, seguido do nome do atributo e depois por dois-pontos (:).
    • As funções podem ter agora uma série de declarações de variável, mais um retorno da mesma.
    • E as operações são usadas baseadas na forma operation mais o nome da variável.

Declaração de Atributos:

No JavaFx, os atributos são declarados fora das classes. Os inicializadores das classes são avaliados na ordem em que os atributos estão especificados.

  • Disparadores: Como no JavaFX não tem método construtor, a mesma permite disparadores, que fazem com que, através de suporte SQL, sejam alterados ou segurados métodos de modificação de dados. Pode-se incluir um disparador sempre que um elemento é introduzido em uma variável multivalorada. E deleta sempre que esse elemento é suprimido dessa variável. Pode-se também substituir o disparador quando o valor da variável também é substituído.
  • Indicações: O If pode inserir várias IF consecutivas apenas fechando chaves entre elas, não necessitando abrir várias das mesmas. Na Try, Catch e Throw só mudam as formas de utilizar as variáveis pra forma JavaFX, mas suas estruturas são mantidas.

Estas foram, então as novas funcionalidades e modificações na estrutura original Java, apresentadas pela JavaFX, apresentando, portanto uma introdução simples a essa nova plataforma.

Certificado De Aprendizagem De JavaFX, Parte 2: [[//span]]

Uma Comunicação Remota Usando o Rmi

O Método Invocação Remota Java (Java RMI) é o Java Application Programming Interface (API) para executar o objeto equivalente de chamadas a procedimentos remotos. O desenvolvimento de aplicações distribuídas em RMI é mais simples no desenvolvimento com soquetes porque o desenvolvedor do projeto não precisa de design de um protocolo, que é muitas vezes uma perda de tempo e acarreta em erros de tarefa.
Em RMI, o desenvolvedor tem a ilusão de uma chamada local a partir de um método local, quando, na realidade, os argumentos são transferidos para o alvo remoto e interpretados, e os resultados são enviados de volta para as chamadas.
JavaFX Script pode chamar objetos, RMI é uma ferramenta para permitir rapidez e facilidade para se comunicar JavaFX clientes remotamente.
O desenvolvimento de uma aplicação distribuída JavaFX Script usando RMI envolve as seguintes etapas:

  • Definir uma interface remota.
  • Implementar a interface remota.
  • Desenvolver o servidor.
  • Definir o tipo do usuário.
  • Criar o cliente.

Definir uma interface remota

Agora, crie uma interface tecnologia Java chamada ServerInterface no pacote servidor, como mostrado no Exemplo de Código 1. A interface ServerInterface fornece um método, ping (), que tem argumento e retorna uma String com o argumento que a palavra Hello pressupõe a ele.

Exemplo Código 1

Com base no código acima, pode-se verificar que está sendo criada a Interface do Servidor, ou seja, definindo o que será explicitado para a conexão com o servidor, que está como status pública, ou seja, qualquer um pode se conectar a este servidor.

Implementando a Interface Remota

O próximo passo é criar uma classe que implementa ServerInterface. Um exemplo de aplicação é mostrado no Exemplo de Código 2. Note que, para além da execução do ServerInterface, a classe ServerImpl estende UnicastRemoteObject. Isto indica que a classe ServerImpl é usada para criar um único, “nonreplicated”, objeto remoto que usa o padrão do RMI TCP à base de transporte para a comunicação. Isso pode ser tudo que você necessitará sempre para a utilização de RMI.

Exemplo Código 2

Desenvolvendo o Servidor

O terceiro passo é desenvolver um servidor. Esta classe também irá constituir o ponto de entrada para o seu servidor candidato, porque tem um método main (). O servidor deve fazer três coisas:

  • Criar o registro RMI.
  • Criar uma instância do objeto remoto - neste caso, ServerImpl.
  • Registrar o objeto criado com o registro RMI.

Um exemplo de aplicação é mostrado no Exemplo de Código 3.

Exemplo Código 3

No caso acima, acaba de ser criado o servidor. Nele está definido o endereço virtual da máquina ou host onde será o servidor para que possa ser enviada a informação. Vale lembrar que o código Naming.rebind é o que cria a conexão do servidor para que possa fazer o acesso, enquanto o LocateRegistry.createRegistry define a porta de acesso ao servidor (no caso a porta 1099, que no Java, usando o RMI, é a porta padrão). Com isso, através do ServerImpl() novo, é alocado os recursos para a implementação do servidor e para sofrer o acesso do objeto em questão.Com base no código acima, pode-se verificar que está sendo criada a Interface do Servidor, ou seja, definindo o que será explicitado para a conexão com o servidor, que está como status pública, ou seja, qualquer um pode se conectar a este servidor.

Definindo o tipo do usuário

Exemplo Código 4

O código acima trata da criação da interface do usuário. É através dela que o usuário irá definir o tipo de cliente e como proverá o acesso e que host será acessado pelo cliente. Agora é o Namng.lookup mais o endereço do host do servidor que fará a verificação da disponibilidade do servidor para acesso, ou seja, é através dele que será possível saber se o cliente poderá enviar e receber informações do servidor.

Criando o cliente

Exemplo Código 5

Enfim, este é o momento em que se configura o cliente para o acesso remoto. Neste código, nota-se a modelagem da estrutura que terá o acesso do servidor, através do sistema criado pela classe que implementa o cliente.

Concluindo essa segunda parte, portanto, fica estabelecido como criar um acesso remoto usando o JavaFX. Vale lembrar que esse é o caso de acesso é uma mesma máquina. Para máquinas diferentes, basta modificar os ip’s no Naming.

Certificado De Aprendizagem De JavaFX, Parte 3:

[[span style="color:blue"]] Uma comunicação do cliente com o JAX-WS

RMI é uma ferramenta fantástica de prototipagem, mas tem suas limitações para a utilização do mundo real. A solução mais comum para os programadores criar ferramentas cliente-servidor na Internet é a utilização de uma arquitetura orientada a serviços (SOA), como a solução Java API para XML Web Services (JAX-WS). This article will show you how to use JavaFX Script to access a web service using JAX-WS 2.1 in much the same way that the previous article in this series showed you how to use RMI. Este artigo irá mostrar-lhe como usar JavaFX Script para aderir a um serviço web usando JAX-WS 2,1, em grande parte, da mesma forma que o artigo anterior, esta série mostra como usar o RMI.

Exportando uma classe como um servidor de Web Service Utilizando NetBeans IDE 5.5.1

A primeira coisa que precisamos é de uma classe com uma ou mais métodos que você deseja exportar como um serviço web. Você pode reutilizar o servidor do código da Parte 2, que é mostrado no Exemplo de Código 1.

package server;
 
import java.io.*;
 
public class ServerImpl {
 
    private String name;
 
    public ServerImpl() {
        super();
    }
 
    public String ping(String s) {
        return "Hello " + s;
    }
 
}

Para exportar esse método, você deve fazer duas coisas: Adicione uma declaração para a importação javax.jws.WebService pacote, e adicione uma anotação @WebService web no início que informa ao interpretador Java que você tem a intenção de publicar os métodos desta classe como um web service. Estas adições simples aparecem no Código Exemplo 2.
package server;
 
import java.io.*;
import javax.jws.WebService;
 
@WebService
 
public class ServerImpl {
 
    private String name;
 
    public ServerImpl() {
        super();
    }
 
    public String ping(String s) {
        return "Hello " + s;
    }
 
}

Neste ponto, você pode publicar o serviço a uma aplicação web server. Esta parte discute como a publicar um serviço web no NetBeans IDE 5.5.1.

1 - Escolha File -> New Project. Você deverá ver a caixa de diálogo mostrado na Figura 1.

figura1

2 - Na coluna Categorias, escolha web. Na sub janela Projetos, escolha Java Application. Clique em Avançar, e você deve ver a página mostrada na Figura 2.

figura2

3 - No campo Nome do Projeto, tipo WebServiceExample. Note que o contexto raiz da aplicação web muda para o mesmo nome. Além disso, desmarque a opção Set Source Level to 1.4, se estiver selecionada. A fonte deve ser 1,5 ou nível superior para que você possa adicionar serviços web para o projeto. Por último, clique no botão Concluir.
A caixa de diálogo deve fechar e você verá na parte superior esquerda o projeto WebServiceExample, como mostrado na Figura 3.

figura3

4 - Em seguida, à esquerda, clique no projeto WebServiceExample para selecionar. Clique sobre o nó raiz com o pequeno globo logo à esquerda. Clique com o botão direito e escolha Novo -> Web Service … Agora você deve ver a caixa de diálogo mostrado na Figura 4.

figura4

5 - No campo Web Service Name, tipo ExampleService. No campo Package, tipo ws. Deixe o botão Create na Empty Web Service selecionado e clique em Concluir. O NetBeans IDE vai gerar código fonte do servidor web para você.
Para implantar este exemplo, clique com o botão direito no WebServiceExample na sub janela Projects novamente, como mostrado na Figura 3, e desta vez escolha o item do menu Deploy Project. Isto irá iniciar o servidor de aplicativos, compilar o web service, e desenvolvê-la. Quando este for concluído com sucesso, abra um browser e vá para a localização seguinte:

Note que o procedimento padrão do servidor de aplicações para NetBeans IDE 5.5.1 é Apache Tomcat, e a porta padrão para a implantação Tomcat é 8084 e não 8080, que é o que muitos servidores web utilização. Após configurar o seu browser para que localhost URL, você verá uma tabela no seu navegador semelhante a Figura 5 que indica que o serviço está ativo ExampleService web.

figura5

Finalmente, através dos métodos RMI já explicados na segunda parte da certificação, somados aos conhecimentos adquiridos nessa terceira parte, pode-se criar um modelo de botão, criando uma interface gráfica que facilita ao usuário usar melhor o sistema.

Conclui-se então, em todas as três partes, a explicação sobre a certificação javaFX. Com ela, se tornou possível comunicar um usuário através da rede, em um ou mais de um host, através do JAX-WS 2.1 e o Remote Method Invocation (RMI), finalizando, portanto, esta certificação.

Aqui você encontra apenas uma síntese de todo o processo, para ver todas as 3 partes do Certificado De Aprendizagem De JavaFX - na íntegra, verifique nossas referências.


Tecnologia JavaFX relacionada com a disciplina de Compiladores

A maior parte das linguagens compiladas, incluindo a linguagem de programação Java, são consideradas linguagens de programação imperativas. Entre outras coisas, isto significa que elas contam com um ponto de entrada, tais como o método main () em tecnologia Java, da qual exemplificam outras classes ou campos ou dispoem de recursos baseados em variáveis ou programa.
O JavaFx Script pode ser enquadrado como um tradutor, ou seja, recebe um arquivo fonte e traduz, devido às suas características declarativas e tipos estáticos que são executados sobre uma plataforma virtual (a JVM), não existindo, portanto, tempo de compilação e execução.
Uma linguagem de programação imperativa determina a sua trajetória de execução no decorrer do processo. Essa fórmula pode resultar no mesmo caminho com cada execução, mas a língua continua a determinar o seu caminho de execução no decorrer deste processo.
O JavaFx Mobile pode ser definido como um compilador, pois o mesmo pode receber uma linguagem fonte de alto nível e apresentar como objeto, uma linguagem de baixo nível, ou mesmo de alto nível (pré-processador), onde sua execução será realizada posteriormente.


Pesquisa realizada pelos alunos:

  • Daniele Souza
    • moc.liamtoh|_azuosinad#moc.liamtoh|_azuosinad
  • Djalma Filho
    • moc.liamg|ohlifamilamlajd#moc.liamg|ohlifamilamlajd
  • Frederico Dattoli
    • rb.moc.oohay|ilottadydderf#rb.moc.oohay|ilottadydderf

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License