Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação

Propaganda
ISSN 2316-2872
T.I.S. São Carlos, v. 3, n. 2, p. 189-203, mai-ago 2014
©Tecnologias, Infraestrutura e Software
Análise das Tecnologias JSF2/PrimeFaces e
JavaFX para a Criação de Interfaces Ricas
para Internet
Leilson Fernando Murgo, Ivan João Foschini
Resumo: Com o avanço contínuo das tecnologias para internet, bem como a proporcional demanda de aplicações que, além de bem
desenhadas, também ofereçam características ricas de interação para o gerenciamento da informação, são necessárias ferramentas que
permitem, com agilidade, o desenvolvimento de aplicações com tais funcionalidades. Este trabalho apresenta um estudo de caso evidenciando
as diferenças de implementação utilizando a tecnologia JSF com a coleção de componentes PrimeFaces e a plataforma JavaFX para a criação
de interfaces de internet ricas. Foi utilizada neste estudo de caso uma interface de cadastro simples integrada a uma aplicação de
gerenciamento de páginas de eventos.
Palavras-Chave: Java FX, Java Server Faces, RIA, aplicações para internet ricas
Analysis ofJSF2/PrimeFaces and JavaFX for creating rich internet interfaces
Abstract: The continuous advances of internet technology, as well as the proportional demand for well-designed applications which provide
rich interaction features for managing information are necessary tools that allow the development of applications with such functionalities.
This work presents a study case aiming at demonstrating the differences in implementations using JSF technology while using a collection of
components from PrimeFaces and JavaFX platforms to create rich internet interfaces. This study case used a simple register interface
integrated with an application that manages sites ofevents.
Keywords: JavaFX, JavaServer Faces, RIA, Rich Internet Applications
I. INTRODUÇÃO
Com a evolução das tecnologias de processamento e
transferência de dados, bem como a utilização de
equipamentos mais robustos, a exigência pela agilidade na
disponibilização de informação cresceu em mesma escala. Os
dados que antes eram disponibilizados unicamente em redes
internas das instituições, hoje são exigidos a qualquer hora,
em qualquer lugar e com agilidade. A informação passou a ser
disponibilizada em qualquer dispositivo que possua uma
conexão com a internet, em qualquer lugar do mundo. Como
consequência, a exigência por mecanismos capazes de
disponibilizar estes dados de maneira rápida, rica, direta e
com equivalência de interação, fez com que surgisse uma
gama de aplicações que visam aumentar a interação com o
usuário e que podem ser executadas em qualquer tipo de
dispositivo. Estas aplicações, conhecidas pela sigla RIA (Rich
Internet Application), ou aplicações para internet ricas
permitem ao usuário uma interação com o sistema com
características semelhantes a sistemas desktop, porém sendo
executadas em uma plataforma web e integradas a algum
navegador. Para isto, foram disponibilizados frameworks e
linguagens de programação que visam aumentar o rendimento
do processo de desenvolvimento ao mesmo tempo em que
oferecem ferramentas para a elaboração de interfaces com
características próximas às aplicações desktop. A tecnologia
JavaServer Faces (JSF) possibilita a criação de componentes
de interface com usuário em formulários que são exibidos em
páginas XHTML. Sua flexibilidade permite acoplar coleções
de componentes que potencializam a sua utilização e
oferecem novas possibilidades de interação. A plataforma
JavaFX permite a criação de aplicações que são executadas
utilizando a máquina virtual Java tanto em ambiente desktop
como também na web e oferece como vantagem uma
integração completa com a linguagem de programação Java.
A demanda por métodos ágeis de desenvolvimento exige
que se encontre uma maneira eficiente para a criação de
aplicações, buscando a padronização, reuso e qualidade na
entrega do produto final. Para tal, é necessário conhecer os
meios disponíveis e suas características para que se possa
determinar a melhor ferramenta a ser utilizada. Este trabalho
apresenta a comparação de duas tecnologias com uma visão
ampla de suas características, o que favorece a escolha em
sua utilização.
Departamento de Computação - Universidade Federal de São Carlos (UFSCar)
Caixa Postal 676 – 13.565-905 – São Carlos – SP – Brasil
Autor para correspondência: [email protected], [email protected]
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
II. APLICAÇÕES RICAS PARA INTERNET
As ideias a respeito da utilização de páginas na internet
evoluíram muito no decorrer do tempo. O que antes era
apenas a disponibilização de informações que poderiam ser
acessadas em qualquer lugar do mundo, passou ao patamar de
aplicação que interage dinamicamente com o usuário e se
comunica com servidores de banco de dados, próximos ou
não geograficamente. As páginas web convencionais
encontraram grandes dificuldades para suprir esta
necessidade, visto que todo o processamento das lógicas da
aplicação acontecia no lado servidor e a cada atualização, a
página inteira deveria ser redesenhada, causando uma
perceptível perda de desempenho.
Segundo Dea (2011), dependendo a quem se dirija o
questionamento, provavelmente receberá diferentes
definições de "experiência do usuário", mas um fato que
permanece é que os usuários irão sempre exigir melhores
conteúdos e aumento da usabilidade de aplicações GUI
(acrônimo para Graphical User Interface). À luz deste fato, os
desenvolvedores e designers geralmente trabalham juntos
para criar aplicativos para atender a esta demanda.
Para suprir esses problemas de desempenho e as
necessidades de interação e agilidade, foi proposta uma
abordagem de aplicações com mais funcionalidades e
complexidades, chamada de Aplicações Ricas para Internet
(RIA – Rich Internet Application), termo introduzido pela
Macromedia, fazendo menção à unificação de aplicações
desktops com aplicações Web, conforme Bozzon1 (2006)
apud Rocha (2010). Uma aplicação RIA deve ser capaz de
apresentar uma interface bem desenhada e que permita que o
usuário realize tantas quanto forem as interações possíveis
que ele teria em uma aplicação desktop, utilizando
formulários com componentes dinâmicos como listas
ordenadas, listas de seleção e estruturas em árvore, por
exemplo, e além disso, também consiga utilizar artifícios de
mídia como áudios e vídeos, e com desempenho satisfatório.
Segundo Rocha (2010), uma aplicação RIA pode ser
entendida como união das melhores características de um
sistema desktop, de uma aplicação web e de tecnologias de
comunicações. De um software desktop, se utiliza a grande
interatividade por meio de componentes de formulário que se
atualizam conforme as ações tomadas pelo usuário, realizam
validações e recarregam dados sem a necessidade de recarga
do formulário todo, além da possibilidade de tratar eventos de
teclado e mouse como cliques e eventos de arrastar e soltar.
Das aplicações web utiliza-se a possibilidade de acesso em
qualquer lugar a qualquer tempo, visto que podem ser
executadas em clientes (browsers) disponíveis como padrão
em qualquer computador. As tecnologias de comunicações
participam com a utilização de áudios, vídeos e demais
recursos multimídia simultaneamente. Conforme Duhl2
(2003) apud Rocha (2010), seguindo estes conceitos
encontramos o cenário perfeito para uma aplicação: unir
___________________________
1 BOZZON, A., et al.; Conceptual Modeling and Code Generation for Rich Internet Applications. ICWE. Palo Alto, EUA,
Jul. 2006.
design, dinamismo, interatividade, multimídia e desempenho,
tudo isso sendo executado em um cliente padrão. Conforme
Bozzon (2006) apud Rocha (2010) são características de
sistemas RIA a diminuição da comunicação com o servidor, a
capacidade de comunicação com diversas camadas de negócio
diferentes, a capacidade de execução que não comprometa o
bom funcionamento tanto em conexões rápidas quanto em
conexões lentas, a possibilidade de processamento tanto do
lado servidor quanto do lado cliente, a possibilidade de
utilização em modo off-line e a capacidade de utilizar
multimídias diversas simultaneamente.
III. TECNOLOGIAS PARA DESENVOLVIMENTO DE INTERFACES
RICAS
Nesta seção será apresentado a descrição de JavaServer
Faces e PrimeFaces e Java FX.
A) JavaServer Faces e PrimeFaces
JavaServer Faces (JSF) é a especificação de um framework
para facilitar o desenvolvimento de aplicações web que oferecem alta usabilidade e interação ao usuário. Foi criado em
2004, sob a Java Specification Request (JSR)127. JSRs são
documentos com propostas de especificações para inclusão na
plataforma Java. Depois de analisadas e aprovadas pela Java
Community Process, se tornam uma referência para
implementação de determinada API.
A versão 1.2 do JSF, lançada em 2006, foi incorporada ao
Java Enterprise Edition (Java EE). Em 2009 foi lançada a
versão 2.0, segundo a JSR 314, que passou a ser disponibilizada no Java EE 6.
Segundo Burns e Schalk (2010), tal como a maioria de outras tecnologias de programação importantes, a criação de JSF
foi o resultado de um processo evolutivo de refinamento e
adaptação em que novas e melhores técnicas foram
substituindo as mais antigas. No caso de JavaServer Faces, a
força que impulsionou essa evolução foi a necessidade de
uma forma mais simples, mais eficaz e mais eficiente para a
construção de interfaces de usuário web dinâmicas que são
baseadas em uma arquitetura bem projetada e de fácil
manutenção.
O JSF foi criado para suprir a necessidade do desenvolvimento de aplicações para web de forma organizada visando o
ganho de desempenho de programação, reúso e facilidade de
manutenção. Desta forma, a tecnologia se baseou no padrão
de projeto MVC (Model-View-Controller) e em um modelo
de interfaces gráficas voltado a eventos.
Segundo Nunes e Magalhães (2010), esta especificação
busca maximizar a produtividade no desenvolvimento de
aplicações web, minimizar a complexidade de manutenção,
evoluir a experiência do usuário com uso de técnicas AJAX
(acrônimo para Asynchronous Javascript And XML), proporcionar melhor integração com outras tecnologias web, dentre
outros objetivos.
_______________________________________________
2 DUHL, Joshua; Rich Internet Applications.
Nov. 2003.
190
IDC White Paper.
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
O framework JSF possibilita o envolvimento de diferentes
perfis de profissionais que se envolvem em parte ou no todo
de um projeto web. Web Designers podem desenvolver um
layout amigável utilizando ferramentas como CSS, que são
integráveis aos componentes do JSF. Desenvolvedores de
funcionalidades, que programam objetos, lógicas para persistência e validações e desenvolvedores de componentes, que
utilizam seu conhecimento em JavaScript e AJAX para desenvolver classes de componentes interativos que se integram
às aplicações podem tirar proveito ao utilizar o framework
JSF. Além desses, os fornecedores de IDEs, que oferecem
compatibilidade à tecnologia e permitem um ganho principalmente na configuração inicial do projeto fornecendo um
template básico já com diversas configurações préprogramadas, tem facilidades para a oferta de suporte em
tempo de programação, com marcações de palavras reservadas e acesso rápido às documentações.
O desenvolvimento com JSF se baseia na criação de páginas de visualização, utilizando-se de componentes que respondem a eventos e que são declarados por tags que formam
a interface da página. Estes componentes se ligam a um
Managed Bean ou controlador, que por sua vez, por meio de
anotações, possibilita a utilização de validadores e
conversores, o gerenciamento de redirecionamentos de
páginas, além de intermediar a comunicação com possíveis
outras camadas, conforme a estruturação do projeto. Outra
característica importante é a integração com a JSR 330, que
provê a injeção de dependência. Com isso, diretamente da
camada view, é possível ter acesso a um Enterprise Java Bean
(EJB) sem a necessidade de realizar um lookup ou de iniciar
um novo objeto, permitindo o desacoplamento dos
componentes. Todo o controle deste EJB fica por conta do
container servidor. Alguns exemplos de containers que
oferecem suporte para EJB são o Glassfish e JBoss.
Com o ganho de maturidade da tecnologia, diversos projetos de terceiros foram desenvolvidos com o emprego de JSF.
Estes projetos paralelos visam a criação e disponibilização de
famílias de componentes que estendem as funcionalidades
dos componentes já oferecidos. Uma das mais populares
bibliotecas de componentes é a PrimeFaces que oferece mais
de 100 opções de componentes interativos tanto para
aplicações web como também mobile. Utilizando Expression
Language (EL) e AJAX, pode ser facilmente integrado ao
projeto JSF e possibilita a configuração da interação com o
usuário de maneira simples, sem que seja necessário utilizar
nenhum código JavaScript. Apresenta um ganho estético e
funcional, permitindo, por exemplo, eventos de arrastar e
soltar, interação entre listas, visualizadores de galerias de
imagens, envio e recuperação de arquivos, com apenas
algumas tags declaradas e uma programação Java no controlador. Durante o desenvolvimento do sistema para
gerenciamento de páginas de evento, exemplificado neste
trabalho, foi utilizada a versão 3.1 do PrimeFaces.
B) Java FX
Criado inicialmente em 2005 pelo desenvolvedor Christopher Oliver sob o nome de F3 (Form Follows Function), o
T.I.S. 2014; 3 (2): 189-203
projeto recebeu o nome de JavaFX ao ser adquirido pela Sun
Microsystems, segundo Noda (2009). Apresentado inicialmente durante o evento JavaOne em 2007, teve a sua primeira
versão de produção disponibilizada em dezembro de 2008.
Com versões para Windows e MacOSX, disponibilizava um
pacote de recursos gráficos, suporte de decodificadores para
exibição de vídeos e uma ferramenta de aceleração gráfica
utilizando hardware para um desempenho melhor na
renderização dos componentes em tela, desde que o hardware
possuísse esta capacidade. A versão 1.2 lançada em 2009
permitiu a integração com sistemas operacionais Linux e
apresentou melhorias na API da tecnologia, culminando na
comunicação melhorada com o plug-in do Java, necessário
para execução de aplicações FX (JavaFX). A principal
característica das primeiras versões foi a utilização da
linguagem FX Script, uma linguagem de scripting declarativa
utilizada para a construção das interfaces. Toda a
programação feita em forma de script era compilada em
bytecode, podendo ser executada em qualquer sistema com
Java Runtime instalado. A estrutura da linguagem permitia
visualizar de forma declarativa e estruturada o
posicionamento, as características e hierarquias dos
componentes da interface.
Em 2011, com o lançamento da versão 2.0 pela Oracle, o
projeto teve uma mudança significativa, principalmente
quanto a sua linguagem de desenvolvimento. A linguagem de
script deixou de existir e deu lugar à linguagem FXML, que
segundo a Oracle, é uma linguagem de marcação baseada em
XML utilizada para a criação de interfaces de usuário. Outra
novidade foi a possibilidade de criar aplicações FX utilizando
apenas a linguagem Java nativa. A mesma interface criada
com a linguagem FXML pode também ser desenvolvida em
linguagem Java, utilizando declaração de objetos, extensão de
classes e sobrescrita de métodos. Isso proporcionou que
programadores experientes em Java tenham uma proximidade com a tecnologia, diminuindo o tempo de
aprendizado e facilitando a visualização do código. A versão
2.0 apresenta também um conjunto vasto de componentes de
interação com o usuário que englobam os tradicionais botões
e caixas de texto, uma série de gráficos interativos e com
formatos distintos, como também objetos 3D e características
de movimento e rotação que podem ser incluídas nos
componentes. Outra característica é a melhoria na utilização
de mídias e o do uso das GPUs (graphics processing unit)
para a renderização dos componentes de usuário, além de um
novo plug-in para browsers que com-pleta este conjunto.
IV. JSF E JAVAFX
A comparação das tecnologias JSF e JavaFX, ambas
relacionadas à linguagem Java, considera os aspectos do
desenvolvimento de uma interface web, suas dificuldades e
facilidades e a aceitação do produto pelo mercado. Vale
ressaltar que, apesar da possibilidade de utilização de JavaFX
em aplicações desktop, a ênfase será dada no
desenvolvimento de uma aplicação web, de forma que
algumas tecnologias presentes poderão não ser citadas.
191
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
A. Comunidade de desenvolvedores
A aceitação dentro da comunidade de desenvolvedores é
um fator importante para determinar a maturidade da
tecnologia estudada. Considerando um cenário altamente
conectado e a crescente utilização de fóruns de discussão para
troca de experiências, é notório que as tecnologias mais
comentadas e por isso, mais experimentadas tendem a
oferecer uma base mais sólida para desenvolvedores
iniciantes e também aos que já possuem alguma experiência.
A especificação JSF, criada em 2004, teve uma ascensão
rápida e regular dentro das tecnologias Java. Por ser fruto da
necessidade de um framework padronizado para o desenvolvimento web, muitos profissionais se envolveram no projeto,
o que culminou na sua inclusão ao Java EE dois anos após a
sua criação. Ao longo da fase de amadurecimento do framework, muitos projetos paralelos foram desenvolvidos para
estender as capacidades do JSF e ao mesmo tempo oferecer
novas ferramentas, como o já citado PrimeFaces, entre outras
bibliotecas de componentes como o IceFaces, RichFaces e
Woodstock. Segundo Nunes e Magalhães (2010), a versão 2.0
teve no grupo de especialistas da especificação
desenvolvedores da Apache, Oracle, Redhat, IceSoft entre
outras empresas bastante envolvidas com JSF, facilitando a
introdução na especificação das soluções criadas por estas
empresas. Passou a integrar a certificação Sun Certified Web
Component Developer (SCWCD 6), sendo desacoplada
posteriormente pela Oracle, que, durante a criação deste
artigo, não oferece esta certificação em seu site oficial. Todas
estas características permitiram ao JSF uma boa credibilidade
e fez com que se tornasse uma tecnologia popular dentro da
comunidade Java.
O fórum no site oficial da Oracle apresenta, mais de
24.000 tópicos relacionados a JSF, englobando mais de
92.000 mensagens. O GUJ , um dos maiores fóruns
brasileiros de discussão sobre Java, em sua pesquisa interna
retorna 57.100 resultados de links com referências ao JSF.
Dentro do domínio da Oracle, existe uma página denominada
RealWorldJsfLinks que lista vários links de projetos ao redor
do mundo utilizando JSF.
A tecnologia JavaFX foi apresentada inicialmente em 2007
e teve uma evolução irregular. As primeiras versões
utilizavam uma linguagem declarativa de script e
apresentavam uma versão para integração com dispositivos
móveis. A versão 2.0, lançada em 2011, marcou uma grande
mudança, substituindo a linguagem de scripts por Java nativo
e pela linguagem de interfaces FXML. Estes dois momentos
_________________________________________
3 Fórum do site oficial destinado ao
Java Server Faces.
Disponível em: <
https://forums.oracle.com/forums/forum.jspa?forumID=982>
Acesso em: 25 Set. 2012.
4Fórum brasileiro de discussão sobre Java. Disponível em:
http://www.guj.com.br Acesso em: 25 Set. 2012
5 RealWorldJsfLinks: Links de projetos com JSF. Disponível
em:
<https://wikis.oracle.com/display/GlassFish/RealWorldJsfLin
ks> Acesso em: 09 Out. 2012.
foram determinantes para afetar a maturidade da tecnologia.
Uma mudança muito grande acaba afetando a confiança da
comunidade em relação à solidez do projeto. Mesmo assim, a
boa impressão causada após a mudança, tem feito
desenvolvedores se interessarem pelo JavaFX, tanto como
alternativa ao Swing no desenvolvimento de aplicações
desktop, como também para aplicações web. Existem dois
fóruns oficiais para a API JavaFX, um relacionado a versões
anteriores, e outro destinado às versões 2.x. A Figura 1
demonstra o crescimento do número de tópicos no fórum
oficial das versões mais novas do JavaFX.
Figura 1. Aumento dos tópicos no fórum oficial do JavaFX. (ORACLE(A), 2012)
O gráfico apresentado na Figura 2 demonstra a evolução do
número de postagens em blogs que fazem referência à
tecnologia JavaFX.
Figura 2. Crescimento de postagens em blog de temas relacionados ao JavaFX (ORACLE(A), 2012)
O fórum oficial das versões mais recentes do JavaFX apresenta mais de 3.200 tópicos, englobando cerca de 14.000
mensagens. O fórum oficial das versões antigas apresenta
mais de 4.000 tópicos, sendo vários deles publicados recentemente. No fórum brasileiro GUJ, a pesquisa interna retorna
165.000 links com referências ao JavaFX.
B. Suporte de IDE
192
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
Para que uma API consiga uma boa aceitação no mercado,
além de oferecer qualidade e inovação, necessita também que
o desenvolvedor consiga utilizar suas funcionalidades
facilmente. Para isso é necessário que os ambientes de
desenvolvimento (IDEs) acompanhem a evolução das
tecnologias e auxiliem o usuário com tarefas automatizadas
como por exemplo: durante a preparação do ambiente, tarefa
essa que por muitas vezes é cansativa e cheia de passos; na
criação de novos arquivos dentro do contexto do projeto e
apresentando templates com configurações mínimas para que
o desenvolvedor consiga iniciar o seu trabalho de um ponto
específico.
Para o desenvolvimento Java, os dois IDEs mais conhecidos e utilizados são o Eclipse e o NetBeans.
O Eclipse oferece suporte para JavaServer Faces por meio
de um projeto chamado Webtools Platform (WTP) que disponibiliza um plug-in para utilização junto à IDE. A página de
download6 do site oficial do Eclipse disponibiliza uma versão
denominada Eclipse IDE for Java EE Developers que já possui suporte ao pacote Enterprise do Java, que contém o JSF.
Na versão clássica da IDE também é possível baixar o plugin pela opção de atualização. Para execução dos projetos web
é necessária a inclusão de um servidor de aplicação, que deve
ser baixado externamente e incluído à plataforma do Eclipse.
O NetBeans, dentre as opções disponíveis em sua página
oficial, também disponibiliza uma versão com suporte ao
Java EE e que já inclui também os servidores de aplicação
Glassfish e Tomcat. Segundo o site oficial NETBEANS
(2012), a partir da versão 7.0 o novo suporte JSF 2.0 do IDE
traz o suporte padrão para JavaServer Faces e inclui
aprimoramentos de edição versátil para páginas Facelets,
várias facilidades para trabalhar com classes de entidade e
uma suíte de assistentes JSF para tarefas de desenvolvimento
comuns, como criar beans gerenciados JSF, modelos Facelets
e componentes de composição. Durante a criação de um novo
projeto, a IDE apresenta em formato wizard7 a opção para
selecionar o servidor e para seleção dos frameworks que
serão utilizados no projeto e entre eles está o JavaServer
Faces. É possível também selecionar um pacote de
componentes a ser incluído no projeto, entre PrimeFaces,
Icefaces e RichFaces. Oferece ainda, documentação para a
API JSF, realce de sintaxe e detecção de erros em tempo de
projeto, além das opções para completar automaticamente as
sentenças e sugestões de conclusão para expressões. Um
novo projeto criado pelo wizard do NetBeans, cria um
template básico da estrutura de arquivos e pode ser
executado, apresentando uma página simples de saudação.
Para o desenvolvimento utilizando a API JavaFX, o
Eclipse não possui uma versão para download que inclua
suporte a esta tecnologia. O desenvolvedor que quiser utilizar
____________________________
6 Página de downloads da plataforma Eclipse:
<http://www.eclipse.org/downloads/> Acesso em: 15 Dez.
2012.
7 Método de interação que permite executar uma tarefa
utilizando uma sequencia de passos que vão guiando o
usuário até a sua conclusão.
T.I.S. 2014; 3 (2): 189-203
esta IDE tem duas opções. Uma delas é baixar ou atualizar o
kit de desenvolvimento do Java (JDK) na versão 7 ou
superior, pois esta já possui o JavaFX integrado, e incluir a
biblioteca dentro do projeto no Eclipse. Outra alternativa é
utilizar um plug-in chamado e(fx)clipse8, que é citado dentro
da seção de down-loads da página oficial do JavaFX, como
ferramenta de terceiros. Este plug-in deve ser instalado e
posteriormente deve-se informar ao Eclipse a pasta do
JavaFX-SDK.
Na IDE NetBeans, o JavaFX já está incluso, na mesma
versão que inclui o Java EE. Desta forma, basta a instalação
normal da interface para que o desenvolvedor já possa iniciar
o desenvolvimento de sua aplicação. A criação do projeto pelo
wizard do NetBeans gera um projeto com uma estrutura
básica que pode ser executada, fornecendo uma aplicação
simples com uma mensagem de saudação. A IDE oferece
ainda suporte para completar automaticamente as sentenças,
realce de sintaxe dos arquivos FXML e sugestão de
expressões.
C) Documentação
Um item essencial para que uma tecnologia seja aceita pelo
mercado é a facilidade com que o desenvolvedor tem acesso
às especificações de sua API. Parte integrante do
desenvolvimento de um projeto é a documentação de suas
funcionalidades. Uma boa documentação deve apresentar a
estrutura de um projeto, características funcionais, métodos
para implementação além de exemplos práticos. Os
desenvolvedores, principalmente quando iniciam no
aprendizado de uma nova tecnologia, tendem a visitar
frequentemente a sua documentação, desta forma, as
informações devem ser bem organizadas e de fácil acesso.
Um projeto bem documentado contribui para a padronização e
para a boa imagem perante a comunidade de desenvolvedores.
Para ter acesso à documentação do JSF, o desenvolvedor
tem a opção de consultar diretamente a sua especificação,
contida na JSR314. Acessando a página da Java Community
Process9, é possível encontrar as especificações técnicas descritas na JSR314, que determina as regras de padronização do
JavaServer Faces 2.0 e permitem ao desenvolvedor uma visão
geral da especificação. Dentro do domínio de documentos da
página oficial da Oracle é possível acessar a documentação da
plataforma Java Enterprise Edition10. Na seção de
documentação da API, são apresentados quatro links que
levam à documentação técnica da plataforma Java EE
englobando os pacotes e classes presentes além de um manual
geral de todas as tags Facelets, JSP e padrões HTML que são
utilizadas na construção das interfaces. Todas estas opções são
descritas em uma página padrão que apresenta os usos de cada
8 Página para consulta do
projeto e(fx)clipse:
<http://efxclipse.org/> Acesso em: 26 Set. 2012.
9 Página para acesso da JSR 314. Disponível em:
<http://www.jcp.org/en/jsr/detail?id=314> Acesso em: 01
Out. 2012.
10Documentação da Java EE 6. Disponível em:
<http://docs.oracle.com/javaee/> Acesso em: 01 Out. 2012.
193
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
funcionalidade, seus métodos e hierarquia de classes além de
exemplos de utilização. Na mesma página é possível acessar
as documentações das versões anteriores do Java EE.
A documentação11 da plataforma JavaFX pode ser acessada
diretamente da página oficial da Oracle, na seção destinada à
tecnologia JavaFX. Entre as opções de navegação da página,
a área de documentação é facilmente encontrada. Dentro dela
é possível visualizar uma lista completa de opções para
aqueles que desejam se familiarizar com a tecnologia. As
opções incluem vídeos demonstrativos que apresentam
algumas características importantes da plataforma, links para
artigos que abordam assuntos relacionados ao JavaFX como
boas práticas de programação, um roadmap apresentando
uma linha do tempo da API e futuras funcionalidades, além
do acesso ao conteúdo completo da documentação da API,
demonstrando os pacotes, classes e métodos de todos os
componentes do JavaFX. Além disso, o site do JavaFX
apresenta, dentro da seção Samples, uma aplicação
denominada JavaFX Ensemble, que é um showcase de todos
os componentes e funcionalidades da plataforma em sua
versão 2.x. É possível visualizar exemplos de animações,
efeitos 3D, componentes de aplicações como caixas de texto
e combos, além de uma extensa gama de gráficos animados.
Todos os exemplos podem ser baixados como projetos da
IDE NetBeans e podem ser usados como auxílio pelos
desenvolvedores.
D) Aparência e componentes gráficos
O que torna uma aplicação RIA atrativa ao usuário é principalmente a aparência refinada e as variadas possibilidades
de interagir com o ambiente apresentado. Com as tecnologias
atuais é possível criar aplicações inteiras com conteúdo
interativo e multimídia aliando a criatividade de web
designers para a modelagem de páginas, com as poderosas
ferramentas de renderização e reúso, apresentando ao usuário
um produto que alia bom gosto, interatividade, agilidade e
disponibilidade.
O JavaServer Faces utiliza a tecnologia Facelets para a definição da interface, permitindo a criação de um template de
página com áreas que podem ser sobrescritas, facilitando o
reúso e a padronização da aparência da página. A este
template, incluem-se os componentes de tela, organizados em
forma de árvore. Alguns destes componentes fazem parte do
pacote JSF, outros, porém, são distribuídos em forma de
bibliotecas de componentes e estendem as funcionalidades
dos componentes JSF, oferecendo riqueza de aparência e
interatividade.
Os componentes da biblioteca PrimeFaces oferecem várias
opções de temas que podem ser selecionados pelo desenvolvedor ou mesmo pelo usuário, utilizando um componente
próprio. Além disso, também oferecem total integração com
CSS, permitindo uma configuração personalizada. A Figura 3
mostra algumas variações que podem ser obtidas
________________________________
11 Documentação da Plataforma JavaFX. Disponível em: <
http://www.oracle.com/technetwork/java/javafx/documentatio
n/index.html> Acesso em: 01 Out. 2012.
simplesmente alterando o tema dos componentes.
Figura 3. Variações de temas para um combobox oferecido
pelo PrimeFaces (PRIMEFACES, 2012)
Os componentes da biblioteca PrimeFaces lançam mão de
poderosas funções em JavaScript e AJAX para implementar
funcionalidades que se aproximam e até superam os objetos
de tela em aplicações desktop. Dentre as possibilidades, são
oferecidos eventos de arrastar e soltar para reposicionar objetos em tela, galerias de imagens, tabelas interativas, renderização de partes da tela conforme a necessidade além de alguns
gráficos com opção de zoom e animação. Se considerarmos
que tudo isso acontece sobre um browser em tempo real, as
possibilidades de criação de aplicações são imensas. A Figura
4 demonstra um gráfico em bolha e que responde a eventos do
mouse.
Figura 4. Gráfico em bolha retirado do showcase do PrimeFaces (PRIMEFACES, 2012)
A plataforma JavaFX foi projetada para oferecer um diferencial na forma como a interface é projetada. Segundo Dea
(2011), JavaFX 2.0 é baseado em um paradigma de grafos de
cena (modo retido), em oposição à renderização estilo tradicional de modo imediato. Os grafos de cena do JavaFX são
como uma estrutura de dados em árvore que mantém nós
194
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
básicos baseados em vetor. Esta estrutura permite que a cena
seja renderizada conforme um nó raiz ao qual os outros nós
estão submetidos. Este conceito segue o modelo de criação de
cenas de jogos, onde a cena toda é baseada em grafos de cena.
Utilizando este paradigma, os componentes JavaFX
permitem, além da configuração CSS padrão, também a
configuração de intensidades de luz e sombra, o que gera um
efeito visual muito interessante. A Figura 5 ilustra um
exemplo da aplicação de sombra em um componente.
Figura 5. Variação de aplicação de sombra em componente
JavaFX
A abordagem baseada em grafos permite ao JavaFX a inclusão de animação em diversas partes da cena. As
animações acontecem pela movimentação dos nós baseados
em seu nó raiz. O plug-in do JavaFX utiliza as características
da placa gráfica do computador para gerenciar as
modificações da cena, permitindo um melhor desempenho.
Todas estas animações podem ser configuradas diretamente
durante a construção da interface ou em resposta a algum
evento.
A Figura 6 apresenta a aplicação de efeito sépia em uma
imagem variando um parâmetro no tom da imagem.
Figura 6. Aplicação de tonalidade em sépia utilizando componente JavaFX
T.I.S. 2014; 3 (2): 189-203
A lista de componentes do JavaFX apresenta, desde os básicos de interação via formulário, até os mais avançados,
incluindo uma rica seleção de gráficos, todos permitindo
interatividade, além de componentes 3D, players e controles
de multimídia, além de várias opções de efeitos que permitem
enriquecer muito visualmente a interface.
E) Aceitação pelo mercado
O quesito “aceitação pelo mercado” representa uma síntese
de outros quesitos abordados neste artigo. Para que uma
tecnologia tenha boa aceitação, é necessário que a sua
proposta cause um impacto na comunidade de
desenvolvedores e que este impacto gere um interesse. Além
disso, esta proposta deve ser facilmente implementada e traga
um ganho no tempo e na qualidade de desenvolvimento. Mais
ainda, é preciso que toda essa novidade esteja bem
documentada, com uma boa descrição de funcionalidades e
exemplos práticos que facilitem os primeiros passos do
desenvolvedor. Com tudo isso, cria-se uma nova comunidade
em torno desta nova tecnologia, e esta comunidade aplica,
cria, testa e reporta erros, e desta forma a tecnologia vai
evoluindo e criando uma base sólida.
O JavaServer Faces, desde a sua criação, passou por todos
estes passos e soma-se ainda o fato da Sun, e agora a Oracle,
oferecer todo o suporte para que a proposta do JSF criasse
raízes dentro do mundo Java. O fato de ser uma especificação
da JCP e de fazer parte da plataforma Enterprise já acarreta
um bom embasamento para os iniciantes na tecnologia, pois
demonstra a padronização para implementação e também que
o projeto está ativo e sendo sempre melhorado. Outra
característica importante é que suas versões evoluíram
seguindo uma crescente de qualidade sempre constante,
otimizando as funcionalidades e corrigindo erros. Com base
nestas constatações, Nunes e Magalhães (2010) afirmaram
que JSF é o framework Java mais usado para
desenvolvimento de aplicações web com Java. Seu excelente
conjunto de funcionalidades faz com que esta tecnologia seja
favorita no cenário de desenvolvimento em que está inserida.
A tecnologia JavaFX ainda caminha entre as características
apresentadas no início deste tópico. A plataforma passa ainda
por um processo de afirmação dentro da comunidade Java,
muito pelo fato de ter uma mudança drástica em sua
linguagem de definição de interfaces a partir de sua versão
2.0. Para uma aplicação que é focada em RIA, esta mudança
acabou causando uma quebra em sua evolução. Como
consequência, criaram-se duas comunidades, uma que utiliza
a antiga linguagem de scripts e outra que é entusiasta das
últimas versões. Por outro lado, a Oracle(C) (2012) aposta
bastante na tecnologia e afirma em sua página oficial que
JavaFX é o próximo passo na evolução do Java como uma
plataforma cliente rica, pois pode ser utilizada tanto para
aplicações desktop quanto para web. Na mesma página,
apresenta alguns casos de sucesso na utilização da tecnologia
por empresas no âmbito comercial.
F) Tecnologias para desenvolvimento da interface
Dentro do processo de desenvolvimento, faz-se necessário
195
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
a utilização de variadas tecnologias que unidas, se
transformam em uma poderosa ferramenta para a criação de
aplicações, tanto no universo desktop quanto no âmbito da
web. Com a evolução do projeto e a necessidade de novas
funcionalidades, o desenvolvedor pode lançar mão de
frameworks e bibliotecas de funções que oferecem novos
métodos para melhorar a qualidade da aplicação que será
oferecida.
Dentro de uma interface desenvolvida com JSF, algumas
tecnologias que podem ser envolvidas no projeto são:
Facelets: Segundo Oliveira (2011), O Facelets utiliza-se de
uma linguagem de descrição de páginas (PDL – Page
Description Language) criada especificamente para JSF. Ele
estabelece uma linguagem de templates que suporta a criação
da árvore de componentes das telas JSF, o que permite o
reúso de padrões de telas e a composição de componentes
JSF para formar novos componentes. A partir do JSF 2.0, o
facelets tornou-se o padrão para descrição das interfaces,
utilizando tags que substituem as tradicionais tags HTML
para a descrição dos componentes, bastando que se inclua no
arquivo a importação dos namespaces. Outra característica
importante é a utilização de templates. Conforme Oliveira
(2011), um template define um desenho padrão para as telas e
áreas substituíveis para a troca de conteúdo durante a
renderização da interface com o usuário. Isso significa que,
em aplicações onde o padrão da interface não se altera, é
possível utilizar um único modelo (template) da tela
principal, onde somente uma parte dela é alterada e dessa
forma, não é necessário que se repita por várias vezes a
programação das outras áreas da interface, que seguirão o
padrão do template.
AJAX: É um método de desenvolvimento que utiliza
linguagem JavaScript aliada ao XML para a manipulação de
trechos de tela, disponibilizando informações de forma
assíncrona, ou seja, mesmo aguardando a resposta de uma
requisição, o processo continua. A partir da versão 2.0, AJAX
passou a ser nativo do JSF, o que significa que é possível
programar requisições apenas utilizando a tag <f:ajax> (onde
f significa o identificador do namespace que provê esta
funcionalidade) e complementar com os eventos e ações a
serem tomadas. Muitos componentes já possuem várias
características programadas que utilizam AJAX.
Expression Language: a EL é utilizada para realizar a
conexão entre os componentes da interface e o controlador
(managed bean). Com EL, é possível definir valores iniciais
de componentes, como por exemplo uma caixa texto, ao
renderizar a tela e da mesma forma, é possível recuperar os
dados deste mesmo componente. Utiliza a seguinte sintaxe:
#{expressão}. A expressão pode significar uma propriedade
do controlador ou mesmo um método a ser executado. A EL
suporta também operadores e alguns literais.
Bibliotecas de componentes: São bibliotecas externas
normalmente desenvolvidas em projetos de terceiros, que
utilizam a arquitetura do JSF para o desenvolvimento de
novos componentes que agregam tanto no caráter visual
como também com novas funcionalidades. Estas bibliotecas
podem ser adicionadas conforme a necessidade do
desenvolvedor, porém não são obrigatórias dentro de um
projeto JSF. Um exemplo é o já citado PrimeFaces.
Para o desenvolvimento de interfaces utilizando a
plataforma JavaFX, algumas das tecnologias utilizadas são as
seguintes:
Linguagem FXML: Segundo a Oracle(B) (2012), FXML é
uma linguagem de marcação baseada em XML para
construção de grafos de objetos Java. Ele oferece uma
alternativa conveniente para a construção de tais grafos em
código processual, e é ideal para definir a interface de usuário
de um aplicativo JavaFX, uma vez que a estrutura hierárquica
de um documento XML possui uma estreita ligação com a
estrutura do grafo de cena JavaFX. Dentro da estrutura
FXML, os elementos podem representar a instância de uma
classe, uma propriedade de uma classe ou até mesmo um
bloco de código em script. As declarações seguem a estrutura
de árvore de um arquivo XML comum.
Java Nativo: Uma alternativa que a plataforma JavaFX
oferece para a criação da interface é utilizar a própria
linguagem Java. Este suporte permite que os objetos de tela
sejam declarados e instanciados da mesma forma que se usa
em uma aplicação Java comum. Todos os objetos possuem
atributos que definem as suas configurações.
Scene Builder12: É uma aplicação externa fornecida pela
Oracle que permite que a interface seja desenhada arrastando
e soltando componentes dentro de uma área determinada.
Possibilita ao desenvolvedor a visualização da interface em
tempo real de desenvolvimento, o que facilita muito
principalmente em relação ao design da tela.
É importante citar também que ambas as tecnologias
apresentadas oferecem suporte a configuração por CSS.
Incluindo um arquivo com as configurações determinadas, os
componentes de tela assumem estas configurações conforme
são determinadas dentro da programação das telas.
G) Facilidade de desenvolvimento
Dentro da área de desenvolvimento de software, busca-se
sempre a perfeição na entrega do produto. Para isso,
diariamente equipes trabalham na criação de ferramentas que
facilitem e padronizem os processos de desenvolvimento,
otimizando o tempo gasto com tarefas triviais e repetitivas e
resultando em maior produtividade.
Como já citado, o JSF foi desenvolvido com o intuito de
padronizar e facilitar o desenvolvimento de interfaces web.
Dentre as características oferecidas pelo framework, pode-se
considerar:
Possibilidade de utilizar o padrão MVC: esta característica
permite ao desenvolvedor projetar a sua aplicação de forma
que a programação da interface esteja separada da
programação do controlador, possibilitando um código mais
limpo e legível. O padrão MVC é bastante difundido e
utilizado dentro da comunidade de desenvolvedores, o que
facilita a comunicação e a troca de experiências.
_______________________________
12 Página para acessar o JavaFX Scene Builder. Disponível
em:<http://www.oracle.com/technetwork/java/javafx/downloa
ds/devpreview-1429449.html> Acesso em: 09 Out. 2012.
196
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
Templates para definir interfaces: Como citado
anteriormente, a possibilidade, oferecida pelo Facelets, de
utilizar um template principal para a aplicação, torna bem
mais enxuto o código e otimiza o desenho das interfaces da
aplicação. Além de evitar a repetição de código, o template
possibilita que os arquivos que definem a área dinâmica da
interface contenham unicamente o código relacionado ás suas
funcionalidades, evitando assim longos arquivos contendo
toda a definição do desenho da aplicação.
Tags intuitivas: A estrutura do arquivo de definição da
interface utiliza tags que por sua vez oferecem uma série de
propriedades para a definição dos componentes de tela. A
forma de organização e o conteúdo das tags possibilitam que
um desenvolvedor com médio conhecimento em HTML e
CSS, consiga facilmente assimilar a linguagem. A Figura 7
ilustra a declaração de um botão da biblioteca PrimeFaces
com a configuração CSS definida na propriedade styleClass,
com texto de exibição definido como “Finalizar” e que
executa a ação definida no método finalizar do gerenciador
managedBean sendo que ao final atualiza o componente de
tela definido pelo id “mensagens”.
Figura 7. Declaração de um componente commandButton
utilizando JSF e PrimeFaces
A plataforma JavaFX oferece uma forma de
desenvolvimento para web muito similar à forma utilizada em
aplicações desktop. Dentre as vantagens verificadas, podem
ser citadas:
Ferramenta para desenho de tela: A ferramenta Scene
Builder possibilita a criação das telas da aplicação por meio
de uma interface gráfica, muito parecida com a modelagem de
aplicações desktop. O usuário pode arrastar componentes para
dentro de uma região que representa a área visível da tela e os
ordenar conforme a sua vontade, com a possibilidade de
alteração de cores, fontes, tamanhos, entre outras
propriedades. A Figura 8 ilustra a criação de uma interface
utilizando o Scene Builder.
Figura 8. Tela principal do aplicativo Scene Builder
Java nativo: Além do Scene Builder, a plataforma JavaFX
oferece, a partir da versão 2.0, a possibilidade de criação da
interface utilizando código da linguagem Java. Ao invés de
utilizar as tags da linguagem FXML, o desenvolvedor que já
possui experiência com Java, pode modelar a sua interface
declarando objetos da mesma forma que utiliza em suas
aplicações comuns. Essa característica possibilita um ganho
de tempo com a familiarização de uma nova linguagem,
T.I.S. 2014; 3 (2): 189-203
porém o código da interface acaba se misturando ao código do
controlador. Utilizando FXML, é possível realizar esta
separação, muito importante para a organização do projeto.
Modelagem direta: Para a criação da interface, o
desenvolvedor não necessita instalar e configurar um servidor
de aplicações para testar o seu projeto. Tendo implementado o
código da tela, o projeto pode ser executado e já será
apresentada a interface principal da aplicação. Os projetos
197
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
de cena para construção dos seus componentes. Por esta
característica, as possibilidades e efeitos visuais como sombra
e rotações são muito grandes. Apesar de ser criada em 2005, a
tecnologia passou por uma mudança drástica de linguagem
durante a evolução de suas versões, o que fez com que a sua
aceitação não fosse tão regular, pois dividiu a comunidade de
desenvolvedores entre as versões mais antigas que utilizavam
scripts para a mais nova que utiliza FXML e Java nativo. A
plataforma oferece uma página cheia de opções para quem
deseja se familiarizar com a tecnologia, que vão desde vídeos
demonstrativos, blogs abordando o assunto, além de uma
documentação bem organizada descrevendo componentes e
apresentando exemplos. Oferece também uma ferramenta
gráfica para criação da interface além do suporte a linguagem
Java que serve de atrativo para desenvolvedores mais
experientes. É uma tecnologia que ainda está sendo
experimentada, com uma comunidade crescente, mas ainda
não muito expressiva. A Tabela 1 apresenta as principais
características das tecnologias dentro das opções listadas
anteriormente.
JavaFX são executados como aplicações desktop, e desta
forma podem ser executados sem a utilização de um servidor.
JSF é uma tecnologia estruturada para o desenvolvimento
web. As evoluções das versões geradas contribuíram para que
esta tecnologia, que é uma especificação da JCP e também
um framework presente no pacote Java EE, se firmasse como
uma das plataformas mais utilizadas dentro da comunidade
Java para web. JSF apresenta uma boa integração com as
principais IDEs para desenvolvimento, que fornecem suporte
para as configurações iniciais bem como durante o
desenvolvimento. Além disso, possui uma documentação bem
organizada, fornecendo informações e exemplos de classes e
métodos além das tags que definem os componentes de
interface. Ainda mais, possui uma comunidade ativa e
presente em diversos fóruns de discussão que fornecem um
bom suporte a dúvidas. JSF permite o desenvolvimento
dentro do padrão MVC, separando o código da interface que
utiliza os templates fornecidos pelo Facelets além de tags
intuitivas que permitem uma boa familiarização com a
linguagem.
Por outro lado, JavaFX é uma tecnologia que utiliza grafos
Tabela 1. Resumo das características das tecnologias JSF e JavaFX
198
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
V. EXEMPLO DE UTILIZAÇÃO
Para ilustrar as principais características das duas tecnologias foi desenvolvida uma interface de uma tela de cadastros
dentro do sistema de gerenciamento de eventos ezEvent. O
sistema em questão oferece a possibilidade da criação e
edição de páginas para variados eventos. Dentre as funcionalidades oferecidas estão a possibilidade de participantes
cadastrarem-se em determinado evento utilizando as páginas
geradas, além de enviarem seus trabalhos para avaliação e
possível apresentação no evento. Os trabalhos são avaliados
por revisores cadastrados no sistema e que utilizam como
parâmetro os critérios definidos pelo coordenador do evento e
que são também alimentados no sistema. Para este exemplo,
foi utilizada a tela de cadastro dos revisores e serão
apresentadas apenas as interfaces desenvolvidas.
O cadastro de revisores é uma interface simples que apresenta caixas de texto onde são informados os dados dos
revisores e os botões que executam as ações solicitadas pelo
usuário.
Para o desenvolvimento com JSF, foi utilizado um template
para definir a tela principal e um arquivo separado que define
a área de formulário onde estão inseridos os componentes.
Foram utilizados componentes PrimeFaces que são
importados por meio de declarações de namespaces no início
do arquivo, conforme ilustrado na Figura 9.
Figura 9. Importação dos namespaces do JSF e PrimeFaces
A estrutura do template da interface é definida utilizando
tags HTML suportadas pelo JSF iniciadas por “h” e tags Facelets, iniciadas por “ui”. Dentro da estrutura do template foi
determinado um espaço para a inserção do formulário. Este
espaço é determinado pela tag Facelets <ui:insert name="formulario">. Em um arquivo XHTML separado, são
definidos os componentes PrimeFaces que farão parte do
formulário, dentro de uma tag ui:composition que determina
que aquele trecho de código faz parte de uma composição. A
definição dos componentes PrimeFaces ocorre pela
declaração das tags iniciadas pela letra “p” (conforme
importação dos namespaces) seguida pelo nome do
componente e pelas propriedades definidas pelo
desenvolvedor.
Dentre as propriedades disponibilizadas, é possível determinar tamanhos máximos e mínimos para os campos do
formulário, bem como definir mensagens para guiar o usuário
(tooltips), determinar identificadores para os componentes e
textos de exibição. Utilizando a propriedade update é possível
determinar se outro componente será atualizado em resposta a
algum evento. Esta atualização é determinada pela tag
<p:Ajax> do PrimeFaces, que oferece suporte a eventos AJAX. Utilizando a tag <f:validator> é possível fazer uma
T.I.S. 2014; 3 (2): 189-203
chamada a uma classe para realizar uma determinada
validação nos dados informados. Os componentes que
recebem dados têm o valor de sua propriedade value
associado a um atributo da classe controladora por meio de
EL. A Figura 11 ilustra as declarações dos componentes para
os campos de login, senha e confirmação de senha, que
incluem validadores e eventos AJAX.
Na classe controladora são declarados os atributos que farão a interação com os componentes da tela, que devem ter o
mesmo nome que foi utilizado na propriedade value dos
componentes. Desta forma é possível carregar valores nos
atributos para exibição na tela como também capturar os
dados inseridos no formulário para inserção e validação. A
Figura 10 apresenta a declaração da classe controladora com
os atributos que fazem referência aos componentes de tela
exibidos anteriormente.
Figura 10. Declaração da classe controladora
Para o desenvolvimento da interface de cadastro de revisores na plataforma JavaFX foi utilizada a ferramenta Scene
Builder para o desenho da tela. Para a definição da interface, a
tecnologia utiliza os conceitos de stage, scene e node. Este
conceito é muito utilizando para desenvolvimento de jogos
para browsers. Todos os componentes da tela são formados
por um conjunto de nós (nodes) que são interligados a um nó
raiz compondo um conjunto de grafos de cena. O nó raiz, por
sua vez, é parte de um objeto de cena (scene), logo tudo o que
se vê dentro da interface apresentada está contido na cena. A
cena por sua vez, é inserida dentro de um palco (stage), representado pela janela ou browser onde a cena é apresentada.
Para que se altere a tela sem que seja necessário abrir uma
nova janela, são adicionadas cenas diferentes ao mesmo
objeto stage.
Utilizando a interface gráfica do Scene Builder, é possível
modelar a interface arrastando os componentes para a cena e
alterando as suas propriedades como estilo de fonte, tamanho
e cor. É possível também utilizar uma estrutura CSS para
configurar os componentes. Ao final, é gerado um arquivo
com a extensão “.fxml” que contém toda a estrutura de nós
inseridas a um nó raiz. Dentro desta estrutura já fica inserida a
referência para a classe controladora da interface. Também são
apontados os identificadores para cada componente, para que
permita sua integração no controlador. A Figura 12 apresenta
um trecho do código gerado, incluindo a referência da classe
controladora e os identificadores dos componentes.
199
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
Figura 11. Tags para a declaração de componentes da interface JSF / PrimeFaces
Figura 12. Código FXML gerado pelo Scene Builder
200
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
A classe controladora deve possuir o mesmo nome referenciado no arquivo FXML. Dentro dela, os atributos devem ser
declarados do mesmo tipo utilizado no componente da interface. No exemplo, foi declarado um componente do tipo
TextField para receber os dados do login do revisor. Na classe
controladora, o atributo deve ser do mesmo tipo e possuir o
mesmo nome do identificador do componente. Para que seja
identificada a referência, o atributo deve possuir a anotação
@FXML. A partir disso, o valor do componente de tela pode
ser manipulado na classe controladora. A Figura 13 apresenta
os atributos sendo declarados na classe controladora. Dentro
das classes controladoras é possível realizar as validações dos
dados informados, conversões e as operações básicas de
CRUD (Create, Read, Update e Delete) comunicando-se com
outras camadas da aplicação, de acordo com o modelo
adotado. É possível utilizar injeção de dependência das
classes no servidor por intermédio de um container EJB, por
exemplo, ou mesmo realizar a comunicação com o servidor
utilizando webservices. Este tipo de implementação não será
abordado por não ser o foco deste artigo. A interface
desenvolvida utilizando JSF pode ser vista na figura 14 e a
interface desenvolvida utilizando JavaFX pode ser vista na
figura 15.
Figura 13. Classe controladora do cadastro de revisores
Figura 14. Interface desenvolvida utilizando JSF / PrimeFaces
Figura 15. Interface desenvolvida utilizando JavaFX
T.I.S. 2014; 3 (2): 189-203
201
Análise das Tecnologias JSF2/PrimeFaces e JavaFX para a Criação de Interfaces Ricas para Internet
VI. TRABALHOS RELACIONADOS
JavaFX é muito conhecido por sua utilização em aplicações desktop e as comparações que são encontradas quanto a
sua utilização na web, o relacionam com outras tecnologias
como SilverLight da Microsoft e Flex da Adobe, pois
possuem algumas características semelhantes como a
necessidade de utilização de um plug-in para o browser e a
utilização de linguagens declarativas baseadas em XML para a
descrição da interface.
Um trabalho relacionado foi elaborado por Kratz(2008) e
aborda as tecnologias JSF, Flex e JavaFX, apresentando as
principais características de cada plataforma, enfatizando que
o JSF é uma tecnologia puramente baseada em browser e que
não tem a necessidade de utilizar um plug-in. Apresenta
também as dificuldades e pouco rendimento na utilização pura
de AJAX e JavaScript para o desenvolvimento e enfatiza,
conforme apresentado, a facilidade de utilização das coleções
de componentes que oferecem estas linguagens encapsuladas
nos componentes de interface. Apresenta ainda Flex e JavaFX
como tecnologias dependentes de plug-in e com linguagens
declarativas para descrição da interface. Vale dizer que esta
comparação foi realizada com as primeiras versões de
JavaFX, utilizando linguagem de script e enfatizando que é
uma plataforma nova.
No trabalho de Rocha (2010) é realizada uma comparação
entre as tecnologias Silverlight e JavaFX. São apresentadas as
duas tecnologias, com abordagem na linguagem e
apresentando alguns exemplos com códigos para ilustração.
Silverlight é citado como uma tecnologia mais fácil de utilizar
por usuários iniciantes por conta de sua linguagem XAML que
é baseada em XML e HTML. É importante citar que a versão
1.2 do JavaFX, utilizada nesta comparação, ainda
contemplava a utilização da linguagem de scripts, que unia
dados da camada de controle junto na interface. Hoje a
linguagem evoluiu para a utilização da linguagem FXML,
também baseada em XML. Apresenta ainda o Silverlight com
uma estrutura melhor de organização de código, mas com um
pacote de instalação muito grande e o JavaFX com mais
opções para complementação de código e um pacote de
instalação que varia conforme as funcionalidades escolhidas.
Demais artigos apresentam abordagens diferenciadas sobre
uma ou outra das tecnologias apresentadas. Araújo e Girelli
(2012) apresentam uma abordagem utilizando JSF para o
desenvolvimento de uma aplicação de exemplo em conjunto
com o Google APP Engine (GAE) que, segundo os próprios
autores, é uma plataforma que, utilizando os conceitos de
computação em nuvem, hospeda gratuitamente aplicações
web. O JSF é apresentado como um framework para
desenvolvimento de interfaces de usuário e como ele pode ser
integrado ao GAE de forma a fornecer a camada de visão para
uma aplicação nesta plataforma. Durante a criação da
aplicação de exemplo, é utilizada a estrutura de tags do
facelets para determinar a interface, bem como a utilização de
um managed bean como controlador, semelhante ao abordado
neste artigo. Ao final os autores concluem que o JSF oferece
praticidade e agilidade na implementação, além de uma boa
integração com a plataforma GAE.
Brigatto(2012) apresenta um trabalho envolvendo JSF e
PrimeFaces da mesma forma que é abordado neste artigo.
Com o intuito de demonstrar de uma maneira aprofundada a
tecnologia, o autor apresenta desde a criação de um projeto
utilizando a IDE Netbeans, até os detalhes de implementação
de namespaces e os ciclos para tratamento das requisições.
Apresenta também a maneira fácil de interagir com o controlador por meio de EL e a forma simples de implementar interações AJAX utilizando componentes PrimeFaces. A implementação de demonstração segue o modelo da aplicação
utilizada neste artigo, com os componentes PrimeFaces sendo
utilizados sobre o JSF 2 e executados em um servidor Glassfish.
JavaFX é apresentado por Querino (2012) como uma tecnologia promissora para ser utilizada em ambiente empresarial. O autor apresenta as características principais da plataforma como a linguagem FXML, a API Java nativa e a grande
coleção de componentes, da mesma maneira que é
apresentada neste artigo. Cita ainda a utilização de
webservices REST para a comunicação com as outras
camadas da aplicação. Apresenta uma aplicação de
demonstração que é desenvolvida no mesmo formato da
interface de cadastro de revisores criada neste artigo. O autor
conclui que a plataforma é emergente porém ainda começa a
ser explorada, o que condiz com as conclusões ao final deste
trabalho.
VII. TRABALHOS F UTUROS
Este trabalho teve como foco o estudo das tecnologias
apresentadas para o desenvolvimento de interfaces ricas. Não
foram abordados os métodos de comunicação dessas interfaces com o servidor, o que pode ser alvo de um estudo futuro,
visto que é interessante mensurar, principalmente em questão
de desempenho, as possibilidades existentes. Outra abordagem de trabalhos futuros seriam os requisitos de hardware
necessários para cada tecnologia e os impactos disto no desempenho da aplicação. Mais ainda, poderiam ser explorados
os métodos para validação de dados e segurança das
informações manipuladas por estas interfaces. Por fim, um
alvo de estudo também seria a utilização destas tecnologias
em aplicações comerciais.
VIII. CONCLUSÃO
Pelo trabalho realizado, foi possível identificar que as
tecnologias estudadas apresentam características interessantes
que, se bem estudadas e implementadas, permitem o
desenvolvimento de aplicações capazes de atender às
necessidades dos usuários, tanto no caráter estético, quanto
interativo. Ambas apresentam um conjunto de tecnologias
envolvidas que facilitam o processo de desenvolvimento,
abstraindo do desenvolvedor muitas tarefas que consumiriam
tempo e seriam maiores motivos para erros em tempo de
execução.
Com a expansão da computação em nuvem, mais e mais
aplicações tendem a migram para o ambiente web, o que
permite um mercado grande para o desenvolvimento das
tecnologias estudadas. JavaServer Faces é a tecnologia mais
202
T.I.S. 2014; 3 (2): 189-203
Leilson Fernando Murgo, Ivan João Foschini
consolidada dentro do universo Java para aplicações web.
Por ser uma especificação e também um framework, oferece
aos desenvolvedores um embasamento sólido em conceitos e
padrões. Possui uma documentação oficial inserida na
documentação da versão Enterprise do Java, além de uma
documentação não oficial oferecida pela grande comunidade
de desenvolvedores espalhados em diversos fóruns online.
Como é uma tecnologia que foi utilizada e aperfeiçoada, o
conhecimento da comunidade é baseado em aplicações em
produção, o que favorece a troca de aprendizado.
A plataforma JavaFX apesar de seu crescente número de
usuários e dos feedbacks positivos que recebe em suas
comunidades, ainda passa por uma fase de experimentação. A
versão 2.0 que trouxe significativas mudanças na tecnologia
ainda é muito recente se considerar a data de redação deste
artigo, de forma que ainda não foi criado um consenso geral
dentro da comunidade sobre as possibilidades de utilização
desta plataforma. Vale ressaltar que a própria Oracle cita o
JavaFX como possível substituto do Swing que é a sua
tecnologia para desenvolvimento desktop, ou seja, há um
investimento na plataforma. Isso é notado pelo suporte que é
oferecido na página oficial do JavaFX, que oferece além de
uma boa documentação, também vídeos demonstrativos,
blogs sobre a plataforma e um showcase demonstrando as
possibilidades de interação.
Um desenvolvedor que deseja iniciar testando qualquer
uma das tecnologias não terá muitos problemas, pois ambas
são bem documentadas e possuem suporte nas principais
IDEs para desenvolvimento, bastando algum tempo de
estudo para compreender os conceitos e ferramentas de cada
uma. Porém, para o desenvolvimento de aplicações
completas que serão utilizadas em produção, o mais
recomendado é utilizar JSF, pois como comentado, tem como
vantagem o fato de ser uma tecnologia consolidada com um
tempo a mais de utilização no mercado, além de possuir uma
comunidade maior e mais experiente neste tipo de aplicação.
Pesa também a favor do JSF a possibilidade de executar suas
aplicações em qualquer browser sem que seja necessário a
instalação de um plug-in, como ocorre com o JavaFX.
IX. REFERÊNCIAS B IBLIOGRÁFICAS
ARAUJO, E. C.; GIRELLI, F. C. Desenvolvendo com GAE
e JSF 2. Revista Java Magazine, Rio de Janeiro, n. 108, p.
16-24, out. 2012.
BRIGATTO, P. E. C. JSF 2 e o PrimeFaces. Revista Java
T.I.S. 2014; 3 (2): 189-203
Magazine, Rio de Janeiro, n. 108, p. 38-51, out. 2012.
BURNS, E.; SHALK, C. JavaServer Faces 2.0. ed. McGrawHill, 2010. 722 p.
DEA, C. JavaFX 2.0: Introduction by Example. ed. Apress,
2011. 196 p.
KRATZ, M. Three RIA Tools Examined: JSF, Flex, and
JavaFX. Sys-Con Media, 2008. Disponível em:
<http://java.sys-con.com/node/502481?page=0,0> Acesso
em: 16 Out. 2012.
NODA, M. M. JavaFX: Implementação na Prática. Maringá:
Centro Universitário de Maringá, 2009.
NETBEANS. Site oficial da Plataforma de Desenvolvimento.
Disponível em: < http://netbeans.org/kb/docs/web/jsf20support.html> Acesso em: 26 Set. 2012.
NUNES, V.; MAGALHÃES E. JSF 2.0 – Aprendendo JSF
com ScrumToys. Revista Java Magazine, São Paulo, n. 78,
2010.
Disponível
em:
<
http://www.devmedia.com.br/artigo-java-magazine-78-jsf2-0/16559>. Acesso em 24 Set. 2012.
OLIVEIRA, J. C. F. Facelets: Visão geral, conceitos,
utilização e criação de componentes. DevMedia, 2011.
Disponível em: <http://www.devmedia.com.br/faceletsvisao-geral-conceitos-utilizacao-e-criacao-decomponentes/14068> Acesso em: 08 Out. 2012.
ORACLE(A). Blog oficial do JavaFX. Disponível em: <
https://blogs.oracle.com/javafx/> Acesso em: 26 Set. 2012.
ORACLE(B). Documentação oficial da linguagem FXML.
Disponível
em:
<http://docs.oracle.com/javafx/2/api/javafx/fxml/docfiles/introduction_to_fxml.html> Acesso em: 09 Out.
2012.
ORACLE(C). Site oficial da Oracle: JavaFX 2. Disponível
em:<http://www.oracle.com/us/technologies/java/fx/overvi
ew/index.html> Acesso em: 25 Set. 2012.
PRIMEFACES. Página oficial da biblioteca de componentes
PrimeFaces.
Disponível
em:
<
http://www.primefaces.org/showcase/ui/home.jsf> Acesso
em: 01 Out. 2012.
QUERINO, L. C. JavaFX 2 no ambiente empresarial. Revista
Java Magazine, Rio de Janeiro, n. 108, p. 52-64, out. 2012.
ROCHA, R. A. Silverlight e JavaFX: Comparação de
Frameworks para desenvolvimento de Aplicações Ricas
para Internet. Maringá: Centro Universitário de Maringá,
2010.
203
Download