Esse artigo faz parte da revista Java Magazine edição 67. Clique aqui para ler todos os artigos desta edição

AN style="FONT-FAMILY: Verdana; BACKGROUND: white; COLOR: red; FONT-SIZE: 10pt; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">

PAN>

ng=EN-US>t" class=Corpo align=left> 

Para que serve:

O lançamento da JavaFX aconteceu com grande estardalhaço, não deve ter passado despercebido por nenhum desenvolvedor Java. Muitos devem estar se perguntando quais são as capacidades e vantagens da JavaFX, se vale a pena investir no seu aprendizado, se é competitiva com outras plataformas RIA... Procuramos responde a estas perguntas, e também esclarecer e ensinar suas principais novidades conceituais, que representam o grosso da curva de aprendizado.

 

 

Em 4 de dezembro de 2008, a Sun lançou a plataforma JavaFX. Este foi um grande marco na história do Java, talvez o maior desde o release da “família” Java2 (SE, EE e ME) em 1999. Planejamos dar cobertura completa à nova plataforma nas páginas da Java Magazine, mas isso não será fácil, pois a JavaFX promete evoluir de forma muito rápida durante todo o ano de 2009. Vamos começar com um resumo do seu histórico até o lançamento:

·       Junho de 2005: a Sun adquiriu a SeeBeyond, cujos produtos SOA vieram enriquecer o Glassfish. Mas levou “de brinde” Chris Oliver, que trabalhava num projeto chamado F3;

·       Abril de 2006: Ethan Nicholas, também novo na Sun, começou a falar no “Java2 Browser Edition”, proposto para o JDK 7. Era a primeira semente do JDK 6 Update 10 (6u10);

·       Novembro de 2006: Chris Oliver anunciou a linguagem F3 (form follows function). Seria uma linguagem para aplicações RIA, facilitando o uso de APIs como a Swing e a Java2D;

·       Março de 2007: a Sun adquiriu a Savaje Technologies, criadora da plataforma móvel Savaje, um sistema operacional para smartphones especializado para aplicações Java ME;

·       Junho de 2007: na JavaOne, a Sun anunciou uma nova “família” JavaFX, composta pela JavaFX Mobile (baseada no Savaje) e JavaFX Script (novo nome da F3). Apesar dos demos impressionantes, nossa repórter Yara Senger, cobrindo o evento na Edição 47, achou que “A JavaFX Mobile pareceu estar um pouco mais incipiente”;

·       Maio de 2008: outra JavaOne (coberta na Edição 59), deu para ver que a JavaFX estava mais incipiente do que se pensava: novamente, só anúncios e demos. Mas os releases foram prometidos para o segundo semestre de 2008 (desktop) e início de 2009 (mobile);

·       Outubro de 2008: a Sun lançou o JDK 6u10, tremenda melhoria do JRE para aplicações desktop, applets, RIA, etc. Falei deste release muito antes (Edição 54), por isso perdi um aspecto que só surgiria mais tarde: o 6u10 também seria o runtime da JavaFX, contendo algumas correções, melhorias e otimizações (na AWT e Java2D) específicas para a JavaFX 1.0;

·       4 de Dezembro de 2008: a Sun cumpriu a data prometida, lançando a JavaFX 1.0 (para Windows e MacOSX), entregando também um lote inicial de ferramentas de design (antigo Project Nile) e o primeiro beta da JavaFX Mobile. Simultaneamente, tivemos o release do JDK 6u11, parte de um release sincronizado de segurança, mas com mais fixes para a JavaFX;

·       19 de Dezembro de 2008: JavaFX 1.0 Update 1, com algumas correções em codecs de mídia;

·       2 de Fevereiro de 2009: mais um release do Sun JDK, o 6u12, que se destaca pelo suporte ao novo Java PlugIn e WebStart para browsers de 64 bits, pela correção de problemas antigos da AWT (mistura de componentes heavyweight com lightweight), mais alguns fixes de regressões do 6u10 e melhorias para a JavaFX. E talvez o mais importante: integração da JavaFX. A partir deste release, toda instalação do JRE (seja pelo instalador convencional, seja pelo JavaKernel) fará a instalação do runtime da JavaFX em background.

 

Para quem chamava a JavaFX de vaporware, basta examinar este histórico – e principalmente, o conteúdo do 1.0 – para ver que não foi bem assim. A Sun realizou um trabalho impressionante em pouco tempo. Mas o trabalho ainda não está completo. Na conferência Devoxx2008[1], uma semana após o lançamento, a Sun revelou mais alguns detalhes para os próximos passos:

·       16 de fevereiro de 2009: será lançada a JavaFX Mobile 1.0, no Mobile World Congress 2008[2] em Barcelona. Ao mesmo tempo, será liberada a JavaFX 1.1 para desktop; esta será apenas uma atualização corretiva. Também não duvido que a Sun aproveite para lançar os portes da JavaFX (pelo menos beta) para Linux e Solaris;

·       Março de 2009: Sun JDK 6u13, apenas um SSR (Synchronized Security Release), mas ao contrário do 6u11 será “empurrado” pelo canal de update automático do JRE. Portanto, é agora que as massas receberão os benefícios do 6u12, inclusive a instalação automática do runtime JavaFX – o que elimina o delay do seu download para a primeira applet JavaFX visitada;

·       Maio de 2009: Sun JDK 6u14, cujo escopo ainda não está definido, mas será um feature update com vários builds “beta” previstos do início de fevereiro até o final de março. Isso deve incluir, principalmente, a nova arquitetura de ClassLoading paralelo. Mas é certo que haverá mais um lote de refinamentos no suporte à JavaFX e suas dependências (plugin, Java2D, etc.);

·       2 de Junho de 2009: na JavaOne, lançamento da JavaFX 1.5 (com suporte melhorado a streaming, novos componentes, e outras melhorias) e um prerelease da JavaFX 2.0. A Sun também disponibilizará um editor visual para o NetBeans. Estimo a ocasião como data máxima para o lançamento dos portes para Linux e Solaris. Neste mês (ou por volta disso) a Apple também deve lançar o Snow Leopard (MacOSX 10.6), que segundo rumores, terá o JDK 6u12;

·       Final de 2009: Release da JavaFX 2.0;

·       Início de 2010: Release da JavaFX TV 1.0, que sucede e complementa a JavaTV e outros padrões Java para TV digital (veja o artigo “Conhecendo a TV Digital” na Edição anterior). Também é a época esperada para o Java SE 7; uma das melhorias importantes desta versão é o projeto Jigsaw (modularização do JDK), que deverá beneficiar o tempo de carregamento de aplicações Java em geral e o de aplicações JavaFX em particular. Somente a partir deste período, também imagino o início de discussões de padronização da JavaFX no JCP.

 

Com tantas versões futuras já planejadas, antes de falar do release 1.0 podemos questionar: este release inicial foi realmente um 1.0? Ou é um beta disfarçado, para a Sun ganhar tempo enquanto continua numa corrida furiosa, com uma seqüência rápida de atualizações tapa-buracos?

Por um lado, minha impressão inicial sobre a JavaFX 1.0 foi muito boa. Fiquei satisfeito com o desempenho, estabilidade, qualidade do SDK (documentação, plugin do NetBeans, exemplos etc.), e com o conjunto geral de funcionalidades.

Por outro lado, há poréns. O suporte multiplataforma ainda é preliminar (embora, no segmento do desktop, a dupla Windows+MacOSX possua o bolo quase inteiro). As ferramentas são OK, para um programador como eu – mas para profissionais de design, ainda deixam a desejar. A JavaFX Mobile, peça importante do quebra-cabeça, ainda está apenas em beta. Finalmente, há algumas lacunas de funcionalidade que a Sun promete resolver nas próximas atualizações.

Não há software completo ou perfeito. Para batizar a versão 1.0 de uma plataforma, além de um nível de qualidade aceitável para produção, o outro critério essencial é a estabilidade. A partir da versão 1.0, não se pode ter alterações incompatíveis. Pode haver melhorias e acréscimos – novas APIs, recursos de runtime (como codecs), otimizações, até sintaxes – como acontece continuamente com a plataforma Java desde o JDK 1.0 em 1996. Quando a Sun lançou a JavaFX 1.0, fez a nós desenvolvedores uma promessa: Podemos começar a trabalhar “a todo vapor” em aplicações JavaFX, sem risco de daqui a alguns meses, aparecer uma atualização com mudanças incompatíveis na linguagem ou em APIs públicas (como ocorria com freqüência com os prereleases), causando problemas e custos para projetos em andamento ou já entregues a clientes.

Enfim... vamos (finalmente!) ao que mais interessa: uma primeira olhada na JavaFX 1.0.

JavaFX Script

A JavaFX Script é uma linguagem de programação Orientada a Objetos; de “família Java” (sintaxe similar na medida do possível, projetada para a JVM e fácil de misturar com Java); estaticamente tipada (não é uma “linguagem dinâmica”!); compilada para bytecode (não intepretada!); com sintaxes de alto nível (como funções de primeira classe).

JavaFX também é parcialmente declarativa, com a idéia de dizer “o que” (ex.: SQL) e não “como” (ex.: Java). Nesse aspecto é híbrida, pois ainda suporta o paradigma imperativo.

Mas chega de definições acadêmicas, vejamos um exemplo na Listagem 1. (Optei por um simples por didática; você encontrará demos mais exuberantes em javafx.com/samples.)

 

Listagem 1. O demo PhotoFlip (Main.fx)

package fliptransition;

 

import javafx.animation.*;

import javafx.scene.input.*;

import javafx.scene.*;

import javafx.scene.effect.*;

import javafx.scene.shape.*;

import javafx.scene.paint.*;

import javafx.scene.image.*;

...

Quer ler esse conteúdo completo? Tenha acesso completo