Hoje!

Conheça JavaFX 2 e o seu potencial

PorDaniel Schmitz em

O JavaFX não é uma tecnologia nova, e já deve ser velha conhecida da maioria dos analistas e programadores. Mas ela começou a ganhar destaque quando a Oracle, hoje a mantedora do código Java, embutiu o JavaFX na versão 7 da máquina virtual, possibilitando que a tecnologia funciona de forma nativa no computador, sem necessidade de instalações adicionais.

O JavaFX também foi adicionado ao JDK e funciona de forma integrada a IDE NetBeans, que de certa forma facilita o seu aprendizado e utilização.

Mas o que é JavaFX?

O JavaFX é uma plataforma para criar aplicações ricas para a Internet. Pode-se pensar como uma tecnologia similar ao Flex Framework ou Silverligth. Aplicações ricas são usadas principalmente para manipulação de interfaces que envolvem multimídia, como vídeo, som, manipulação vetorial de imagens e outros.

Mas o JavaFX não tinha “morrido”?

Sim e não. Estamos abordando o JavaFX 2 e não a versão 1, que possuía detalhes que não agradavam os desenvolvedores. Em 2006, o “Macromedia Flex” passou por um processo semelhante também, onde somente a versão 2 despertou o interesse dos desenvolvedores. Nesta versão 2, o run time do JavaFX é nativo ao Java 7, que estará instalado em quase todo o computador até o final de 2012. O Javafx 2 tem total integração com Java 7 e JDK 7, contendo uma vasta API para sua utilização.

Qual o potencial do JavaFX?

O Netbens 7.2 já oferece suporte ao JavaFX contendo exemplo e wizards que facilitam a criação dos projetos em JavaFX. Além do NetBeans existe o JavaFX Scene Builder, no qual é possível desenhar por completo uma tela e usar o código XML gerado neste desenho.
Por ser a nova aposta da Oracle no desenvolvimento de aplicações, o JavaFX pode vir a substituir o já conhecido SWING, sendo adaptado também para o desenvolvimento de aplicações corporativas em grande escala, com suporte a multimídia. São apostas da Oracle portar o javaFX para mobile e em um futuro próximo até televisões e outros dispositivos.

Pontos chave do JavaFX

  • JavaFX é Java, então você não precisará aprender uma nova linguagem para desenvolver aplicações;
  • Possui integração completa com Java 7 e JDK 7;
  • Possui aceleração gráfica para desenvolvimento avançado;
  • Possui uma linguagem declarativa chamada FXML, usada para criação da interface;
  • Possui um motor multimídia para renderização de vídeos, incluindo streaming;
  • Possui um componente capaz de embutir páginas HTML (webkit);
  • Possui uma boa quantidade de componentes de interface (Textbox, combobox, grid, etc);
  • Disponível para Windows, Mac e Linux.

Instalação

Vamos aprender como deixar tudo funcionando para criar aplicações em JavaFX. Basicamente, o que nós iremos precisar é:

  • Java 7 (runtime)
  • Java SDK 7
  • JavaFX Scene Builder 1.0
  • Netbeans 7.2

Java 7

A instalação do Java 7 é necessário para que possamos rodar as nossas aplicações JavaFX no ambiente desktop. Talvez o Java até já esteja instalado em sua máquina, mas é bom conferir se a versão instalada é a 7. Para instalar, acesse www.java.com e clique no botão vermelho “Download Gratuito do Java”. Faça o download e instale!

Java SDK 7

O SDK é o kit de desenvolvimento de software do Java. Você precisa dele para desenvolver as aplicações em JavaFX. Quem for somente usar a aplicação (seu cliente), necessita apenas do Java e não do SDK.

Acesse esse endereço e localize o JDK na versão 7 (neste artigo seria a 7u7). Faça o downlod e instale. Guarde onde o Java7 foi instalado, você precisará dele no NetBeans. No meu caso, é: C:\Program Files\Java\jdk1.7.0_02.

JavaFX Scene Builder 1.0

Acesse este endereço e instale este aplicativo, que será usado para criar telas com o JavaFX.

Netbeans 7.2

A IDE que utilizaremos em todos os artigos é a NetBeans, atualmente na versão 7.2.

E clique no botão Download. Veja que existem várias plataformas suportadas (Java Se, Java EE etc.). Recomendo que você use a versão completa (última coluna, com aproximadamente 261 MB). Baixe e instale. A dica aqui é pedir uma instalação personalizada e instalar também o servidor TomCat, que não vem como padrão. Você poderá utilizá-lo algum dia.

Configure o NetBeans 7.2

Caso seja necessário, configure o Netbeans para aceitar a versão 1.7 do Java. Com o Netbeans aberto, acesse o menu Ferramentas/Plataformas Java e verifique se “JDK 1.7” está marcado como padrão e se existe a “Plataforma JavaFx”:

Como deve estar a configuração do Netbeans para rodar aplicações em JavaFX

Se a versão 1.7 não estiver default, adicione-a, de acordo com o diretório de instalação do jdk 1.7.

Criando o primeiro projeto

Agora vamos criar o simples HelloWorld em JavaFX. Com o netbeans aberto, acesse o menu Arquivo e depois Novo Projeto. Na coluna Categorias, escolha a pasta JavaFX e na coluna Projetos, escolha o item Aplicação JavaFX. Clique em próximo e na próxima tela, deixe tudo padrão e clique em Finalizar.

O projeto é criado e, “para nossa alegria”, o HelloWorld está pronto. O próprio NetBeans cria o código HelloWorld para que possamos ter uma certa noção de como usar o JavaFX. Clique no botão run (seta verde) e veja o JavaFX em uma janela, com o botão Say Hello World na tela.

Analisando o código

O código gerado pelo NetBeans está descrito logo a seguir. Vou apenas exibir o método start, que é o método “entry point” desta aplicação:

    
@Override
public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Say 'Hello World'");
    btn.setOnAction(new EventHandler() {
        @Override
        public void handle(ActionEvent event) {
            System.out.println("Hello World!");
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

Neste exemplo, temos diversos conceitos que devem ser entendidos assim que começamos a trabalhar com JavaFX. Se você não entender o conceito, terá dificuldades para prosseguir. Como forma de facilitar este entendimento, vou alterar (e somente desta vez) o nome das variáveis de forma que fique fácil compreender alguns conceitos do JavaFX. Veja:

@Override
public void start(Stage palco) {
    Button botao = new Button();
    botao.setText("Say 'Hello World'");
    botao.setOnAction(new EventHandler() {
        @Override
        public void handle(ActionEvent event) {
            System.out.println("Hello World!");
        }
    });

    StackPane noRaiz = new StackPane();
    noRaiz.getChildren().add(botao);

    Scene cena = new Scene(noRaiz, 300, 250);

    palco.setTitle("Hello World!");
    palco.setScene(cena);
    palco.show();
}

Repare que foram alterados o nome das variáveis para palco, cena e raíz. Através destes três conceitos, pode-se entender melhor como é a mecânica de uma aplicação JavaFX. Tudo começa com o palco. O palco, assim como um palco de teatro, é o lugar onde tudo acontece. No JavaFX, o palco (stage) é a camada mais alto nível da aplicação, formada pela janela que contém o título, os botões fechar e minimizar, etc.

Dentro do palco, ocorre a cena, que é equivalente a uma cena de uma peça de teatro. Para cada cena, existem os nós, que são semelhantes aos objetos que estão em uma peça de um palco de um teatro (ufa!). Um nó pode conter vários outros nós, e são esses nós que formam o desenho da tela. A figura a seguir ilustra esta hierarquia:

Esta analogia com um teatro é necessária para que você possa compreender os conceitos de stage, scene e node. Eles formam o básico de um HelloWorld no JavaFX. Através desta explicação básica, poderemos criar novos artigos com exemplos mais complexos e assim mostrar todo o poder do JavaFX. Deixem comentários com o tipo de aplicação que queiram desenvolver!

Deixe um comentário! 7

7 comentários

Comentários

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

  1. E aí Daniel,

    Muito bom seu artigo, eu tive um contato há um tempo atras, achei , na época , bem pesado, os controles demoravam para aparecer na tela. Não sei como vai ser minha experiencia agora com o novo JavaFx 2.

    obs.: as imagens estão com os links quebrados.

    Valeu.

    1. Olá! Até agora eu tenho tido uma boa impressão do JavaFX 2. Em breve vamos criar algumas apps para que possamos avaliar juntos. Fiquem a vontade em dar sugestões.

      Acho que a primeira app vai ser um login básico, algumas pessoas estão me pedindo isso.

  2. Ola Daniel.
    Ja experimentei o JavaFX e achei sensacional. Apesar de ser meio pesado quando rodado no browser como um applet, o cuidado que a Oracle teve com o design me surpreendeu positivamente.Tenho planos futuros de desenvolver uma aplicação rodando no browser para um site que esta em desenvolvimento. Porem, estou tendo dificuldade com troca de telas. Sou desenvolvedor Flex e estou acostumado a trabalhar com states, onde cada tela do seu sistema pode ser um state. Tambem ha os chamados pop’ups, muito uteis. Mas nao consegui trabalhar de maneira semelhante no SceneBuilder. Nao sei como chamar um outro FXML a partir da tela principal ou outra cena. Qualquer ajuda sera bem vinda. Obrigado.

    1. Olá,

      também sou programador Flex e possivelmente vou fazer relações entre as duas tecnologias. Tanto na questão dos states quanto dos popups serão abordadas em artigos futuros, dependerá apenas da comunidade querer.

  3. Valeu cara! Finalmente consegui fazer algo com JavaFX no Ubuntu 12.04.

    Outra coisa. Li umas postagens mais antigas em foruns dizendo que o JavaFX iria morrer e tal. Sabes dizer se ele está assegurado? Porque vou passar os próximos 15 meses programando com esse bichinho.

  4. Opa Daniel blz? Primeiramente quero parabenizá-lo pelo artigo, bem intuitivo e esclarecedor. Sou graduando em sistemas da informação e como proposta de trabalho de conclusão terei que fazer um simulador para facilitar o ensino-aprendizagem de algumas disciplinas. Para tanto, pensei em desenvolver em java algo com interface interativa, dai comecei a pesquisar sobre animações, desenhos vetoriais entre outros e cheguei ao OpengGL e JavaFX2. Gostaria de saber sua opinião a respeito dessas duas tecnologias, especialmente no que tange a facilidade de utilização já que demando de pouco tempo para desenvolver, cerca de 1 a 2 semestres. E ai, pode me ajudar nessa dúvida? Desde já agradeço

leia mais
Este projeto é mantido e patrocinado pelas empresas: