
="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
A internet está se tornando uma importante e indispensável ferramenta para dispositivos móveis. Ela pode ser usada das mais diversas formas, seja como entretenimento através de jogos ou downloads disponíveis na web, como ambiente de compra e vendas on-line (hoje em dia tão comum) ou como ambiente para prestação de serviços, como sites de bancos. Porém, um problema constante para os desenvolvedores é “mover” uma aplicação web para os dispositivos móveis, pois a maioria dos celulares não reconhece HTML.
A Microsoft tem controles móveis que podem fazer a transferência de páginas ASP.NET para dispositivos móveis, no entanto, sistemas desenvolvidos em Java não tinham este controle. O Java EE é o padrão dominante na construção de sistemas web, por dispor de vários frameworks com ótimos componentes, tais como, o JavaServer Faces (JSF), o Tomahawk, o Ajax4JSF e outros, mas por não contar com tal controle, tornava a construção de sistemas web móveis extremamente trabalhosos.
Pensando nisso, a Ericsson desenvolveu uma plataforma chamada MobileFaces, a qual será apresentada nesse artigo.
Conhecendo o MobileFaces
O MobileFaces é um framework de controle que pode fazer a conversão de páginas da web para dispositivos móveis e vice-versa. Ele é um projeto Open-Source, aceitando assim, modificações dos usuários em seus códigos. Antes do MobileFaces, o programador que desejasse construir uma aplicação web com Java, tanto para Web browsers, quanto para Mobile browsers era obrigado a replicar suas páginas web utilizando wml (linguagem interpretada por Mobile browsers). Com este framework isto se torna desnecessário, pois o MobileFaces faz a conversão do código de acordo com browser em que está sendo interpretado, ou seja, se for um Web browser, seu código torna-se um HTML, e se for um Mobile browser, seu código torna-se um WML.
Este Framework é baseado na arquitetura do JavaServer Faces, como é mostrado na Figura 1, e é compatível com qualquer implementação do JSF. Para isso, contém adaptadores de mídia, conversores de imagens, filtros, entre outros, sempre visando a melhor adaptação das aplicações web para dispositivos móveis.

Figura 1 – Arquitetura do MobileFaces
O MobileFaces é composto de vários kits de desenvolvimento, entre eles:
· Mobile JSF: Pacote desenvolvido para construção de aplicações com JavaServer Faces (JSF);
· MobileSecurity: Pacote desenvolvido para aplicar autorizações e autenticações para aplicações web móvel, tais como, autenticar sua aplicação de acordo com o protocolo SSL (Secure Sockets Layer), ler Nota 1;
· MobileAjax: É um pacote que combina o uso do Ajax com o JSF, permitindo assim aplicações móveis com o uso de Ajax;
· MobilePortlet: Mostra como usar uma aplicação Portlet, empregando as soluções móveis do MobileFaces.
Nota 1. SSL – Secure Sockets Layer
O protocolo SSL é uma tecnologia de segurança comumente utilizada para codificar os dados trafegados entre o computador do usuário e o um website. Este protocolo, através de um processo de criptografia dos dados, previne que os dados trafegados possam ser capturados, ou mesmo alterados no seu curso entre o navegador (browser) do usuário e o site com o qual ele está se relacionando. Isto garante a segurança entre a troca de informações sigilosas como os dados de cartão de crédito.
Agora faremos uma breve apresentação do JavaServer Faces(JSF), para podermos falar do Mobile JSF.
O que é o JavaServer Faces (JSF)?
O JSF é um framework MVC que foi projetado para simplificar o desenvolvimento de aplicações Web. Você deve estar se perguntando, “o que é MVC?”.
O MVC é um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do usuário (View) e do fluxo da aplicação (Controller), permitindo assim, que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces.
Diversos frameworks foram desenvolvidos com o intuito de ajudar o programador a implementar o padrão MVC, entre eles estão o Struts, Web-Work, Spring-MVC e o JSF.
Além de uma clara separação entre a visualização e a regra de negócio, o JSF incorpora um modelo de interfaces gráficas baseado em eventos e recursos de navegação e internacionalização.
O JSF utiliza componentes GUI (Graphical User Interface) semelhantes aos do pacote Swing/AWT, como botões, formulários, caixas de texto, etc.
Para mais informações sobre o JSF, acesse http://java.sun.com/javaee/javaserverfaces.
E como o MobileFaces é associado ao JSF?
Da seguinte forma, você pode construir seu sistema Java EE normalmente, utilizando o JSF. Após aplicar o MobileFaces, ele interpreta suas páginas de acordo com as necessidades do browser de cada dispositivo, “re-codificando” suas páginas, como é mostrado na Figura 2.

Figura 2 – Comportamento das aplicações desenvolvidas com o MobileFaces
Arquivos de configuração do sistema
Sistemas Java para web contam com um arquivo de configurações padrão, o web.xml. Todas as configurações referentes ao sistema constam nesse arquivo, por exemplo, tempo de duração de uma sessão, página inicial da aplicação, mapeamento de servlets e filters, etc. Na Listagem 1 é apresentado como deve ficar o arquivo web.xml com o trecho de configuração do mapeamento do servlet JSF (linhas
1. < ?xml version="1.0" encoding="UTF-8"?>
2. < web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
3. < servlet>
4. < servlet-name>Faces Servlet
5. < servlet-lass>javax.faces.webapp.FacesServlet
6. < load-on-startup>1
7.
8. < servlet-mapping>
9. < servlet-name>Faces Servlet
10. < url-pattern>*.jsf
11.
12. < session-config>
13. < session-timeout>30
14.
15.
Listagem 1. Arquivo web.xml da aplicação
Aplicações que utilizam o framework JSF contam também com outro arquivo de configurações, o faces-config.xml (ver Listagem 2), que por sua vez, tem todos os mapeamentos de classes, ações, páginas, etc. A declaração de objetos é feita nesse arquivo, através dos managed-beans (MB), objetos que podem ter suas propriedades alteradas na aplicação web.
Um managed-bean também é chamado de backing bean, pois contém os dados e os métodos que serão executados quando algum dos componentes JSF tiver que executar uma ação. Esses managed-beans recebem o nome do objeto através da tag
É através do arquivo faces-config.xml que podemos mapear nossas ações ou páginas. Para mapear a página podemos fazer com que um método retorne uma String e mapear a página para quando receber essa String, abrir uma nova página. Por exemplo, você tem uma página de cadastros. O seu método salvar deverá retornar a String “sucesso”, se a ação for concluída com êxito e “falha”, caso contrário. A partir desse ponto, você pode configurar sua aplicação para que abra a página x, se receber uma String “sucesso” e a página y, se receber a String “falha”. Através da tag
No arquivo faces-config.xml, também configuramos os validadores do nosso sistema, através da tag
1. < ?xml version='1.0' encoding='UTF-8'?>
2. < faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
3. < application>
4. < view-handler>com.sun.facelets.FaceletViewHandler
5.
6. < managed-bean>
7. < managed-bean-name>usuarioMB
8. < managed-bean-class>managedbeans.UsuarioMB
9. < managed-bean-scope>Request
10.
11.
12. < navigation-rule>
13. < from-view-id>/principal.xhtml
14. < navigation-case>
15. < from-outcome>ok
16. < to-view-id>/detalhes.xhtml
17.
18.
19.
20. < validator>
21. < validator-id>uploadValidator
22. < validator-class>validators.UploadValidator
23.
24.
Listagem 2. Arquivo faces-config.xml
Componentes JSF
Como foi citado antes, o JSF utiliza componentes GUI (Graphical User Interface) semelhantes aos do pacote Swing/AWT. Esses componentes possuem algumas propriedades que facilitam o envio ou recebimento de dados da sua página. A seguir apresentaremos os componentes JSF mais utilizados nas aplicações:
· Botão < h:commandButton>: esse componente é usado para submeter dados de um formulário;
· Formulário < h:form>: é necessário em qualquer página que necessite submeter dados;
· Campo de texto < h:inputText>: responsável por receber entradas de texto na página;
· Saída de texto < h:outputText>: responsável por qualquer saída de texto impressa na view;
· Tabela < h:dataTable>: responsável pela organização de dados na view. Ela deve vir acompanhada sempre de uma ou mais colunas;
· ...