Implementação utilizando Oracle JavaFX

No documento Aplicações ricas na web (páginas 92-96)

6.2 Implementações da aplicação de referência

6.2.4 Implementação utilizando Oracle JavaFX

O JavaFX, em sua versão 2.0, foi desenvolvido utilizando a IDE NetBeans na versão 7.1. Esta IDE foi utilizada, pois é indicada para o desenvolvimento de aplicações JavaFX pela

Oracle. Ao contrário das IDEs do Flex e Silverlight, esta não possui uma interface gráfica

para a definição de layout da aplicação. Para suprir esta necessidade, o centro de desenvolvimento do JavaFX disponibiliza uma ferramenta chamada JavaFX Scene Builder 1.0. Esta ferramenta serve para desenhar o layout das aplicações de forma simples sem ser necessário digitar códigos em FXML. A desvantagem é que o Scene Builder não possui integração com o NetBeans.

Por ser uma tecnologia muito nova, sofrendo muitas alterações na versão 2.0, é difícil encontrar exemplos na comunidade de desenvolvedores. Apesar disso, a Oracle disponibiliza uma vasta documentação56 com o detalhamento das funcionalidades suportadas pelo JavaFX. Além disso, no site da Oracle é possível encontrar uma aplicação chamada JavaFX Samples onde são implementadas diversas funcionalidades com base no JavaFX, porém poucas utilizam a linguagem de marcação FXML para as demonstrações.

Para implementar a característica de informações gerais do pedido (C1) utilizaram-se controles do tipo Label, ChoiceBox e TextArea. Para a organização dos elementos foram utilizados containers do tipo GridPane que gerenciam as posições dos controles de forma semelhante a uma table do HTML. Mesmo possuindo diversos controles para o desenvolvimento de aplicações, não foi encontrado nenhum que atendesse a funcionalidade do campo de data de emissão.

Sobre tela de itens do pedido (C2), para a disposição dos produtos conforme especificação, foi utilizado o controle TilePane. Para que os produtos fossem exibidos da forma desejada, os mesmos foram adicionados via código de forma dinâmica. Já os itens adicionados ao pedido, foram renderizados com base no controle TableView. Este possuiu usas colunas adicionadas via código também dinâmico. Isto ocorreu em função de que as características avançadas de exibição de dados necessitaram utilizar do evento CellFactory que funcionou de forma semelhante a um template. Esta característica do JavaFX deixou o desenvolvimento mais complexo, porém é um conceito diferente o qual não havia familiaridade e que baseou-se em exemplos disponíveis na web.

A navegação entre as telas do pedido (C3) não possuiu grandes dificuldades. Esta característica foi implementada através do evento onMouseClicked de Labels. A busca de itens (C4), também não apresentou problemas para ser desenvolvida. Apenas foi necessário implementar o filtro dos produtos no evento onKeyReleased disparado pelo controle

TextField.

De forma simples, para habilitar que um elemento possa ser “arrastado”, bastou implementar o evento onDragDetected. Para identificar e “aceitar” este elemento, a região de destino necessitou a implementação dos eventos onDragOver e onDragDropped. Esta implementação se mostrou eficiente e não apresentou dificuldades para ser desenvolvida. Com isso foi possível atender completamente a característica de adição de itens no pedido

(C5).

A característica de quantidade solicitada dos itens (C6) não foi possível de implementação completa. O motivo foi não haver um controle numérico conforme o especificado na aplicação de referência. Além disso, houve dificuldades em atualizar a quantidade do item após alterar o valor do campo quantidade na grade de itens do pedido.

O JavaFX, assim como o Flex, não possui a funcionalidade de validação se um campo é requerido como no HTML5 e Silverlight. Logo, para suprir a característica de validações das informações gerais proposta foi necessária a implementação manual das funcionalidades. Neste caso foi utilizado um controle AnchorPane juntamente com um Label possuindo comportamento semelhante ao de um tooltip. Esta implementação atende a característica de validações das informações gerais (C7) de forma mais complexa que as soluções encontradas nas outras tecnologias.

A especificação da característica de logística na emissão do pedido (C8) define que deverá ser utilizada a API do Google para sua implementação. Porém, não há uma versão desta API implementada para o JavaFX. Ao realizar pesquisas, a sugestão da própria Oracle de desenvolvimento é utilizar um bloco de código em HTML implementado de forma semelhante ao realizado no HTML5. Como o objetivo é analisar a capacidade da tecnologia suprir os requisitos, esta característica não foi implementada, pois o resultado seria igual ao do HTML5.

Os gráficos estatísticos (C9) não apresentaram dificuldades para serem implementados. O JavaFX fornece diversos controles para a exibição de informações em gráficos. A sua implementação foi simples apenas necessitando de implementação manual do

tooltip do gráfico de pizza e do destaque da fatia selecionada. O resultado, que pode ser visto

na Figura 38, possui aparência muito interessante sem necessitar muitos esforços para sua implementação. Por outro lado a utilização destes controles deixa o desenvolvimento pouco maleável à possíveis adaptações.

Figura 38 - Gráficos estatísticos utilizando JavaFX.

Para realizar o desenvolvimento da característica de transição de telas (C10) foram utilizadas as transições prontas existentes no JavaFX. Estas transições estão exemplificadas na Figura 39. Nela é possível observar que ao realizar o clique para trocar de tela, as transições de TranslateTransition e FadeTransition são executadas a fim de atender os requisitos especificados nesta característica.

Figura 39 - Código para realizar a transição entre as telas em JavaFX.

Segundo as documentações disponíveis no site da Oracle e as pesquisas realizadas na internet, o JavaFX não possui acesso nativo a webcam. Em sua documentação há uma biblioteca chamada camera, porém ela somente é utilizada para a renderização de animações gráficas. Por este motivo não foi possível implementar a característica de uso a webcam (C12)

proposta na aplicação de referência.

O JavaFX é uma tecnologia que sofreu grandes mudanças em suas últimas versões. Mesmo assim, é possível observar a preocupação da Oracle em dispor material para apoiar os desenvolvedores. Para quem está habituado à linguagem Java, a curva de aprendizagem é relativamente curta. A linguagem mantem seu padrão com exceção do uso de assinaturas de eventos, deixando de lados os tradicionais listeners. Apesar de sua imaturidade, as implementações foram além das expectativas.

No documento Aplicações ricas na web (páginas 92-96)