Por que eu devo ler este artigo:Este artigo apresentará o JavaFX, uma API do Java utilizada para a construção de interfaces ricas e de fácil usabilidade por parte do usuário.

Essa promissora ferramenta conta com todos os recursos que a linguagem Java oferece, incluindo o fato de ser multiplataforma. Apresentaremos também as camadas da arquitetura do JavaFX, detalhando como cada uma contribui para a criação do layout da aplicação, além de mostrar as novidades da versão 8 e exemplos práticos de como usufruir dessa poderosa e versátil solução.

Desde a versão 1.2 do Java já existiam dois tipos de bibliotecas gráficas: AWT e Swing. A AWT foi a primeira API destinada a interfaces gráficas a ser criada e, mais tarde, foi superada pelo Swing, que trouxe diversos benefícios em relação a seu antecessor.

Em sua grande maioria, as bibliotecas de criação de interfaces gráficas são simples de serem utilizadas. O obstáculo inicial fica por conta da familiarização com a sintaxe da linguagem e o grande leque de componentes disponíveis.

Com o intuito de agregar mais valor às interfaces de aplicativos desktop, o JavaFX foi anunciado em maio de 2007, no JavaOne, tendo sua primeira release lançada no dia 4 de dezembro de 2008. Nas versões iniciais, chamada de JavaFX Script, os desenvolvedores faziam uso de uma tipagem estática, verificada em tempo de compilação, junto a uma linguagem declarativa para construir as interfaces.

Após a versão 2.0, a tecnologia passou a ser uma biblioteca do Java, podendo usufruir do código nativo para o desenvolvimento das aplicações, e a partir da versão 7 update 6, passou a ser distribuída nas instalações da linguagem, deixando de ser necessário baixar e instalar como uma solução externa.

A API JavaFX é usada para a criação de aplicações RIA (Rich Internet Application) que se comportam de maneira consistente em todas as plataformas, não sendo necessário recompilar o código fonte para ser executada em diferentes JVMs, desde que estas estejam na mesma versão na qual o código foi compilado.

O termo RIA é usado para descrever Aplicações Ricas para a Internet, ou seja, aplicações que são executadas em ambiente web, mas que possuem características similares a softwares desenvolvidos para execução em ambientes desktop.

O desenvolvimento de aplicações em JavaFX pode fazer uso de qualquer biblioteca Java, acessar recursos nativos do sistema ou se conectar a aplicativos de middleware baseados em servidor.

Essa possibilidade se dá pelo fato do JavaFX estar totalmente integrado ao Java Runtime Environment (JRE) e ao Java Development Kit (JDK), sendo capaz de executar aplicações que o adotem nas principais plataformas desktop (Linux, Mac OS X e Windows).

Além disso, a partir da versão 8 as plataformas ARM também passaram a ser suportadas, aumentando a versatilidade da API com o uso em sistemas embarcados, como PDAs, dispositivos móveis ou máquinas com fins industriais.

Dentre os vários recursos disponíveis estão o uso de componentes nativos, gráficos 2D e 3D, efeitos, animações, músicas e vídeos, proporcionando uma vasta opção de funcionalidades para a construção do layout da aplicação.

Para facilitar a criação e customização de interfaces, os desenvolvedores contam com o FXML, uma linguagem baseada em XML capaz de manipular componentes usando HTML e CSS.

Apesar de muitos desenvolvedores preferirem criar e customizar a interface através do FXML, outros acham mais fácil o uso de uma ferramenta gráfica. Pensando nisso, a Oracle disponibiliza uma ferramenta bastante intuitiva, chamada Scene Builder, que auxilia a criação e a manutenção do código fonte do FXML, aumentando a produtividade e possibilitando a visualização das telas no decorrer do desenvolvimento.

O uso do Scene Builder é muito indicado em casos onde o desenvolvedor deseja conseguir um rápido feedback e/ou não está familiarizado com as tags FXML. A partir dele é gerado um código simples e claro, possível de alterar em qualquer editor de texto ou XML, não engessando o uso à ferramenta em outras etapas do projeto.

Nota: Desde o lançamento da versão 2.0 é possível integrar o Scene Builder às principais IDEs Java, como Eclipse, NetBeans e IntelliJ. Com esta ferramenta fica mais fácil utilizar os diversos componentes e controles nativos do JavaFX para composição das telas, além de possibilitar a inclusão de componentes de terceiros ou criar novos componentes.

Neste artigo será apresentada uma visão geral da arquitetura da API JavaFX e seus principais componentes, detalhando-os e mostrando alguns exemplos na prática.

A arquitetura

A arquitetura do JavaFX é composta por vários componentes que fornecem uma ampla variedade de funcionalidades, como gráficos, animações e recursos multimídia. Esses componentes disponibilizam uma maneira transparente e versátil de projetar interfaces ricas com diversos eventos, efeitos e diferentes modos de customização do layout.

As camadas da arquitetura são apresentadas na Figura 1. Nela podemos verificar os níveis que estão mais próximos ao usuário (mais acima), até as bibliotecas de renderização: Java 2D, OpenGL e D3D, mais próximas à JVM e aos recursos da máquina.

Ademais, é importante notar que a API pública do Java (JDK API Libraries & Tools) está acessível a todos os níveis, facilitando seu uso por todos os recursos disponíveis.

Arquitetura do JavaFX

Figura 1. Arquitetura do JavaFX.

Scene Graph

O Scene Graph é uma estrutura em árvore que representa a interface gráfica das aplicações JavaFX. Essa árvore é composta por nós, onde cada um representa um componente visual que compõe o layout.

Um nó é formado por três atributos: um identificador, uma configuração de estilo e um limite de área. Além disso, cada nó pode ter apenas um pai e um ou mais filhos.

Essa arquitetura em hierarquia facilita o desenvolvimento das interfaces, já que ao aplicar um recurso ou uma propriedade de estilo em um nó, seus filhos herdarão essas configurações. Para exemplificar, podemos imaginar um painel que encapsula dois botões.

Diante disso, caso uma propriedade de estilo seja aplicada ao painel, os campos abaixo na hierarquia, neste caso os botões, irão receber as mesmas características atribuídas ao pai.

Para a customização da interface, os componentes podem receber listeners de eventos e efeitos. Dentre as possibilidades de efeitos, vale citar o focus, blur e shadow, e entre os eventos, podemos utilizar o click do mouse, a mudança de campo ou de valores, entre outros.

...
Quer ler esse conteúdo completo? Tenha acesso completo