1 Iniciando “O melhor jeito de começar é parar de falar e começar a fazer.” – Walt Disney Instalando a Plataforma JavaFX Neste capítulo você aprenderá como instalar o Kit de Desenvolvimento de Software (SDK – Software Development Kit) do JavaFX Script tanto em um ambiente de linha de comando quanto com um Ambiente de Desenvolvimento Integrado (IDE – Integrated Development Environment). Você também irá desenvolver, compilar e executar sua primeira aplicação JavaFX Script. A linguagem de programação JavaFX Script vem em um Kit de Desenvolvimento de Software (SDK), com base na Plataforma Java, Standard Edition (Java SE) 1.6. Então você precisará do seguinte: • O último Kit de Desenvolvimento Java SE (JDK – Java SE Development Kit) para seu sistema operacional (Java SE 6 Update 10 ou superior; para Mac, o último Java para Mac OS X 10.5). • O NetBeans IDE para JavaFX 1.2, Eclipse Plugin para JavaFX, ou o Kit de Desenvolvimento de Software JavaFX 1.2 para seu ambiente. O NetBeans IDE para JavaFX 1.2 está disponível para Microsoft Windows XP, Microsoft Vista, Apple Mac OS X Leopard, Linux e OpenSolaris x86. • Opcionalmente, o kit de ferramentas gráficas JavaFX Production Suite para exportar arquivos JavaFX do Adobe Illustrator CS3, Adobe Photoshop CS3 e converter Scalable Vector Graphics. Se for iniciante você precisa ter certeza de possuir o último Kit de Desenvolvimento Java SE (JDK) instalado. Se quiser tirar vantagem das novas características Applet que JavaFX facilita, precisará de Java SE 6 Update 10 ou superior. Se estiver rodando Windows, Linux ou Solaris, pode fazer download do último Kit de Desenvolvimento Java a partir de http://java.sun.com/javase/downloads/index.jsp. Se usa Mac OS X, baixe o último lançamento da Apple para a Plataforma Java de http://developer.apple.com/java. Conforme escrevemos este capitulo, Java para Mac OS X 10.5 Update 3 agora suporta Java 6 2 Capítulo 1 InICIando Update 7. Esse lançamento da Apple ainda não suporta a característica de arrastar (drag) da Applet descrita no Capítulo 9, “Adicione JavaFX a Páginas Web com Applets”. Para criar sua primeira aplicação JavaFX Script, você tem diversas opções. Primeiro, pode fazer download de NetBeans IDE para JavaFX 1.2 com base em NetBeans IDE 6.5 de http://javafx.com. Ou, a partir do mesmo site, você pode fazer download do SDK de JavaFX e usar seu editor favorito, compilar e executar a aplicação JavaFX a partir da linha de comando. Se escolher usar Eclipse, baixe o JavaFX Plugin para Eclipse de http://kenai.com/projects/eplugin depois de baixar o SDK do JavaFX. Há também um conjunto de ferramentas e plugins para designers para exportar assets gráficos para aplicações JavaFX, o JavaFX Production Suite. Eles serão discutidos com mais detalhes no Capítulo 2, “JavaFX para o Designer Gráfico”, de http://www. javafx.com. Configurando NetBeans IDE para JavaFX 1.2 Você pode instalar o NetBeans IDE para JavaFX 1.2 diretamente de javafx.com. Há instaladores para Microsoft Windows XP, Microsoft Vista, Macintosh, Linux e Solaris x86. Depois do NetBeans IDE ser instalado, execute o NetBeans IDE. Deve haver um ícone de inicialização no desktop criado durante o processo de instalação. Para criar seu primeiro projeto, faça o seguinte: 1. Inicialize NetBeans IDE para JavaFX. 2. Inicie o assistente New Project selecionando File | New Project no menu principal. 3. No assistente New Project, selecione JavaFx Category e JavaFx Script Application Project Type. A Figura 1.1 mostra como NetBeans IDE se parece quando cria um novo Projeto JavaFX. 4. Na janela Name and Location, digite no Project Name, MyFirstJavaFXApplication. Altere a localização dos arquivos de projeto, se desejar, e clique em Finish. A Figura 1.2 mostra a janela Name and Location. NetBeans IDE então cria o diretório do projeto na pasta de projeto especificada e dá a ela o mesmo nome de seu projeto, MyFirstJavaFXApplication. Na Figura 1.3, observe o arquivo de classe Main.fx abaixo do pacote myfirstjavafxapplication no nó Source Packages. Esse arquivo foi criado porque você deixou a checkbox Create Main File selecionada quando criou o projeto. Use esse arquivo para criar sua primeira aplicação simples. A Figura 1.3 mostra a janela de edição para o arquivo fonte Main.fx. C o n f I g u r a n d o n e t B e a n s Ide pa r a J ava fX 1.2 Figura 1.1 Novo Projeto JavaFX. Figura 1.2 Novo Projeto JavaFX – Name and Location. 3 Capítulo 1 4 Figura 1.3 InICIando Novo Projeto JavaFX – Janela de Edição Main.fx. O arquivo Main.fx terá um esqueleto de código que exibe uma janela com algum texto. Você precisa modificar esse código. Como todo bom capítulo “Iniciando”, vamos usar o exemplo Hello World. Abordaremos os detalhes mais tarde, mas o código na Lista 1.1 mostrará uma janela no desktop, com “Hello World” exibido. Lista 1.1 Aplicação Hello World Simples package myfirstjavafxapplication; import import import import javafx.stage.Stage; javafx.scene.Scene; javafx.scene.text.Text; javafx.scene.text.Font; Stage { title: “My first JavaFX Application” width: 400 height: 80 scene: Scene { continua C o n f I g u r a n d o n e t B e a n s Ide pa r a J ava fX 1.2 5 content: Text { font : Font { size : 24 } x: 10, y: 30 content: “Hello World” } } } Para visualizar a tela resultante enquanto edita o arquivo, use o modo JavaFX Preview. Para entrar no modo Preview, clique no ícone Preview, à esquerda do editor Main.fx (veja Figura 1.4). Isso abre uma nova janela no topo da janela de edição Main.fx e permite que você veja como a tela se parece conforme insere suas alterações. A Figura 1.4 mostra a janela Preview. Por exemplo, vamos alterar sua aplicação para escalonar Hello World por um fator de 4. Isso é feito usando os atributos scaleX e scaleY para o elemento Text. Esses atributos farão o Text escalonar quatro vezes a partir de seu ponto central. A Figura 1.5 mostra as alterações instantaneamente na janela Preview. Ao usar o modo Preview, você pode rapidamente ver o impacto de suas alterações. Ele permite testar novos efeitos sem ter que passar pelo ciclo de editar, compilar, executar um laço (em inglês, loop) para cada iteração de mudanças. Assim que inserir a alteração, a tela é atualizada com a última visualização. Hello World é um tanto chato, então vamos nos divertir e apimentá-lo um pouco. Adicionaremos um background com efeito gradiente, tornaremos a fonte maior e adicionaremos um efeito de reflexo. Usando o exemplo original para Hello World, você adiciona o código para obter o efeito desejado. Você aprenderá o que cada parte desse novo código faz nos capítulos futuros, mas, por enquanto, queremos mostrar o que é possível. A Figura 1.6 mostra esse exemplo muito mais interessante de Hello World. 6 Capítulo 1 InICIando Figura 1.4 Modo Preview do JavaFX. Figura 1.5 Modo Preview do JavaFX – com modificação. C o n f I g u r a n d o n e t B e a n s Ide Figura 1.6 pa r a J ava fX 1.2 7 Hello World. A Lista 1.2 mostra como isso foi feito. É, na verdade, muito simples e conciso. Essa é a beleza da Plataforma JavaFX. Lista 1.2 Interessante Aplicação Hello World package myfirstjavafxapplication; import import import import import import import import import javafx.stage.Stage; javafx.scene.Scene; javafx.scene.text.Text; javafx.scene.text.Font; javafx.scene.shape.Rectangle; javafx.scene.paint.Color; javafx.scene.paint.LinearGradient; javafx.scene.paint.Stop; javafx.scene.effect.Reflection; var stage:Stage = Stage { title: “My first JavaFX Application” visible: true width: 400 height: 200 scene: Scene { var text:Text; content: [ Rectangle { width: bind stage.width height: bind stage.height fill: LinearGradient { endY: 1, endX: 0 stops: [ Stop {offset: 0.0 color: Color.rgb(153, 153, 153); }, Stop {offset: 0.5 continua Capítulo 1 8 InICIando color: Color.WHITE; }, Stop { offset: 1.0 color: Color.rgb(153, 153, 153); }, ] } }, text = Text { translateX: bind (stage.widthtext.boundsInLocal.width)/2 translateY: bind stage.height /2 content: “Hello World” effect: Reflection { fraction: 0.7} font: Font {name:”ArialBold”, size: 64} } ] } } Distribuindo a Aplicação Para compilar o projeto inteiro, clique no projeto MyFirstJavaFXApplication, na aba Projects à esquerda da tela do NetBeans IDE. Quando o projeto estiver destacado, clique com o botão direito do mouse para trazer um menu de opções, selecione Build Project. Isso automaticamente salva todos os arquivos-fonte atualizados para o projeto, compila o JavaFX Script e qualquer arquivo-fonte Java, colocando então os arquivos de classe em um arquivo Java Archive (JAR) abaixo do diretório dist. Além de gerar o arquivo JAR para executar localmente a aplicação a partir de um atalho no desktop ou da linha de comando, ele também gera arquivos de suporte para usar a aplicação como um Java Applet em um navegador e para usá-la com o ícone Web Start, seja dentro de um navegador ou a partir do desktop. Essas duas opções serão explicadas em detalhes no Capítulo 9. A Figura 1.7 mostra o menu do projeto com o item Build Project selecionado. Figura 1.7 Build Project JavaFX. lInha de Comando 9 Depois de sua aplicação estar completa, construída e pronta para ser implantada, você pode criar um arquivo usando todo o conteúdo do diretório dist. Ferramentas comuns para isso são zip e tar. Outra opção é incluir esses arquivos em uma ferramenta de instalação. Arquivos de Distribuição MyFirstJavaFXApplication.jar MyFirstJavaFXApplication.html MyFirstJavaFXApplication.jnlp MyFirstJavaFXApplication_browser.jnlp lib/ Para executar a aplicação, tenha certeza de que o SDK de JavaFX está instalado, então instale a distribuição e execute o seguinte comando: javafx -cp dist/MyFirstJavaFXApplication.jar myfirstjavafxapplication.Main Usando esse comando, você poderá facilmente criar atalhos no desktop para executar a aplicação. Ou poderá usar o Java Web Start executando o arquivo dist/MyFirstJavaFXApplication.jnlp. Aviso ao Desenvolvedor: A opção –jar para executar diretamente a partir do arquivo JAR atualmente não funciona com JavaFX; porém, esse é um bug conhecido e será resolvido em um lançamento futuro. Também há um meio de implantar aplicações JavaFX por meio da World Wide Web usando Java Applets ou o protocolo Java Web Start, que discutiremos no Capítulo 9. MyFirstJavaFXApplication.html, MyFirstJavaFXApplication.jnlp e MyFirstJavaFXApplication_browser.jnlp oferecem exemplos de arquivo que podem ser usados para isso. Linha de Comando Se você quiser desenvolver sem o NetBeans IDE para o Kit de Desenvolvimento JavaFX 1.2, faça download do SDK do JavaFX a partir de www.javafx.com. Há instaladores para Microsoft Windows XP com Service Pack 2 e Vista, Apple Mac OS X 10.5.2, Linux e OpenSolaris. lInha de Comando 11 x: 10 y: 20 content: “Hello World” } } } Salve isso em MyFirstApp.fx, então compile usando o comando javafxc. (Tenha certeza de que o diretório bin do SDK está no seu path de comando.) $ javafxc MyFirstApp.fx $ Isso produz um ou mais arquivos de classe no diretório atual. A seguir, execute o primeiro programa usando o comando javafx: $ javafx MyFirstApp Se tudo correr bem, você deve ver algo similar à Figura 1.8. Lá você tem sua primeira aplicação JavaFX Script. Você agora está pronto para seguir para um conteúdo mais interessante. O comando de compilação javafxc é muito similar ao comando de compilação javac. De acordo, o comando javafx usa o mesmo formato e as mesmas opções que o comando de compilação Java. O formato básico do comando javafxc é: $ javafxc <options> <source files> O comando de tempo de execução javafx é, na verdade, um wrapper que chama o comando Java padrão que inclui os arquivos JAR JavaFX Script. Como o compilador JavaFX produz arquivos de classe Java padrão, você pode incluir esses arquivos de classe, junto com qualquer arquivo de classe Java ou JavaFX, em um arquivo Java (JAR). Para incluir esses arquivos JAR ao executar sua aplicação JavaFX, você apenas adiciona essas localizações de arquivo JAR em seu classpath ao chamar o comando javafx. $ javafx -cp directory/MyJarFile.jar MyFirstApp Figura 1.8 Hello World do SDK JavaFX. Capítulo 1 12 InICIando Agora você tem os fundamentos para implementar sua aplicação JavaFX Script a partir da linha de comando. Isso será o suficiente para aplicações pequenas, mas conforme sua aplicação cresce em tamanho e complexidade, rapidamente você descobrirá que usar a opção de linha de comando se torna mais difícil e complexo. Quando seu projeto fica muito grande, você pode querer considerar o NetBeans IDE para JavaFX 1.2, Eclipse IDE com o JavaFX Plugin ou uma ferramenta de construção como Apache Ant. A Task Ant JavaFXC Apache Ant é uma ferramenta de construção baseada em Java, escrita com a importante vantagem de ser multiplataforma e independente de Sistema Operacional. Ant torna fácil desenvolver em uma plataforma e implantar em outra; como resultado, tornou-se uma das mais populares ferramentas de construção atualmente. Você pode fazer download dos últimos binários ant em http://ant.apache.org/. Se você estiver usando o NetBeans IDE para JavaFX 1.2, Ant já está incluído no pacote NetBeans IDE. O Kit de Desenvolvimento de Software de JavaFX oferece uma task Ant para compilar arquivos fontes JavaFX Script. Para declarar isso em um arquivo Ant build.xml, use a task Ant taskdef. Para uma primeira aplicação simples, o arquivo build.xml na Lista 1.4 compila qualquer arquivo .fx no diretório atual. Ant é esperto o suficiente para saber quando os arquivos precisam ser compilados, então, depois de um arquivo JavaFX Script ser compilado, ele não será compilado novamente até que o arquivo fonte JavaFX Script seja atualizado. Lista 1.4 Exemplo de Arquivo Ant Build.xml <?xml version=”1.0” encoding=”UTF-8”?> <project name=”My First JavaFX Application” default=”compile” basedir=”.” > <property name=”javafx.dir” value=”${user.home}/javafx-sdk” /> <property name=”javafx.lib” value=”${javafx.dir}/lib” /> <property name=”javafx.bin” value=”${javafx.dir}/bin” /> <taskdef name=”javafxc” classname=”com.sun.tools.javafx.ant.JavaFxAntTask” classpath=”${javafx.lib}/javafxc.jar” /> continua eClIpse 13 <target name=”compile” > <javafxc srcdir=”.” destdir=”.” includes=”*.fx” classpath=”.” executable=”${javafx.bin}/javafxc”/> </target> </project> Para criar a primeira aplicação, altere o diretório para o diretório onde você salvou o arquivo MyFirstApp.fx, copie ou salve o arquivo build.xml nese diretório, e então execute o comando ant: bash-3.2$ ant Buildfile: build.xml compile: [javafxc] Compiling 1 source file to /export/home/jclarke/ Documents/Book/FX/code/Chapter1 BUILD SUCCESSFUL Total time: 1 second bash-3.2$ Eclipse Se você preferir usar o Eclipse IDE, primeiro precisa baixar e instalar o SDK de JavaFX para seu ambiente de http://javafx.com. A seguir, você precisa do Eclipse 3.4 ou superior; Eclipse IDE for Java EE Developers é recomendado. Finalmente, você precisa fazer download e instalar o plugin de Eclipse para JavaFX de http:// kenai.com/projects/eplugin. Para instalar o plugin de Eclipse para JavaFX, apenas descompacte-o no diretório onde Eclipse está instalado. Por exemplo, se Eclipse estiver instalado em C:\Program Files\eclipse, descompacte o plugin Eclipse para JavaFX do diretório, C:\Program Files. Para criar seu primeiro projeto JavaFX, execute Eclipse. Na área de trabalho abaixo do Project Explorer, clique com o botão direito e selecione New | Project. A Figura 1.9 mostra a seleção do menu New Project. A seguir, crie um Java Project selecionando Java | Java Project no wizard New Project. A Figura 1.10 mostra essa janela com as seleções. Nomeie o projeto – por exemplo, MyFirstJavaFXProject. A Figura 1.11 mostra a janela Create a Java Project com o nome do projeto inserido. Capítulo 1 14 InICIando Figura 1.9 Novo Projeto Eclipse. Figura 1.10 Assistente de Novo Projeto (New Project). eClIpse Figura 1.11 15 Janela Create a Java Project. Isso cria um projeto com uma Perspectiva Java; a seguir, temos que adicionar o JavaFX Nature. Para fazer isso, clique com o botão direito do mouse em MyFirstJavaFXProject e selecione JavaFX | Add JavaFX Nature. A Figura 1.12 mostra o menu para adicionar JavaFX Nature ao projeto. Figura 1.12 Adicionar JavaFX Nature. 16 Capítulo 1 InICIando A primeira vez que você adicionar JavaFX Nature a um projeto, pode ser solicitado que confirme ou configure as diversas questões de configuração. E, o mais importante, se você não instalou o SDK de JavaFX na localização padrão, precisa inserir a localização atual onde está instalado em seu sistema. Também, precisa ter certeza de que o ambiente Java está apontando para o uso de Java 6 Update 10 ou superior. Para criar o JavaFX Script Hello World, primeiro crie um pacote selecionando New | Package. Nesse exemplo, nós nomeamos o pacote de myfirstjavafxapplication. A Figura 1.13 mostra a seleção do menu para adicionar um novo pacote ao projeto. Figura 1.13 Adicionar Package (pacote). O próximo passo é criar um JavaFX Script vazio. Faça isso clicando com o botão direito no nome do pacote e selecionando New | Empty Script. A Figura 1.14 exibe a seleção de menu para adicionar um novo arquivo de script ao projeto. Figura 1.14 Criar Empty JavaFX Script. eClIpse 17 A Figura 1.15 mostra o wizard New Script para o novo arquivo de script com o nome de script Main inserido. Figura 1.15 Criar Diálogo JavaFX Script. Dê um nome ao script, Main, e clique em Finish. Isso cria um arquivo de script vazio chamado de Main.fx. Edite o script de arquivo com o exemplo de Hello World e salve-o. Para executá-lo, selecione o ícone Run e a janela da aplicação deve aparecer. A Figura 1.16 aponta o ícone Run da barra de ferramentas, exibindo a aplicação executada. Uma diferença principal entre NetBeans IDE para JavaFX 1.2 e o plugin JavaFX para Eclipse é que não há modo Preview para JavaFX no Eclipse. Porém, é fácil executar a aplicação para ver a aparência da tela no momento do desenvolvimento. Esta seção conclui os fundamentos para iniciar em Eclipse. Para informações mais detalhadas e opções de configuração, cheque a documentação que está disponível com o plugin Eclipse para JavaFX. Os documentos contêm instruções detalhadas para instalar o plugin JavaFX e configurar Eclipse para reconhecer pela primeira vez arquivos JavaFX. Depois do Eclipse ser configurado para JavaFX, o desenvolvimento é similar ao NetBeans IDE para JavaFX 1.2. Capítulo 1 18 Figura 1.16 InICIando Executando um Script. Resumo do Capítulo Este capítulo mostrou como começar a escrever sua primeira aplicação JavaFX. Detalhou como fazer download e instalar o NetBeans IDE para JavaFX 1.2, o plugin Eclipse para JavaFX e o SDK de JavaFX, como escrever e compilar um simples programa JavaFX, ambos a partir da linha de comando e usando o NetBeans IDE para JavaFX 1.2, e como distribuir esse programa para um usuário final. Ofereceu também um pequeno esclarecimento do que é possível com a Plataforma JavaFX. A partir daqui, iremos explorar a Plataforma JavaFX com mais detalhes e descrever as capacidades principais que você poderá implantar em suas aplicações. Ao longo dos próximos capítulos, abordaremos conceitos exigidos para criar uma animação direta, um eclipse solar total. Isso nos permite explorar animação, gráficos e efeitos especiais. Nós iremos explorar uma aplicação Sudoku escrita em JavaFX Script. Essa aplicação demonstra algumas das características-chave do JavaFX Script incluindo vínculo de dados (em inglês, data binding) e gatilhos (em inglês, triggers). O próximo capítulo nos leva a olhar o JavaFX com a visão de um designer gráfico.