Dev (Back & Front)ARTIGO

O desafio de desenvolver apps para o mundo móvel – Parte 02

Temos três tipos de apps para desenvolver, com potencialidades, restrições e cuidados: os apps nativos, os apps web e os híbridos.

No artigo anterior, discutimos alguns aspectos diferenciados do desenvolvimento de apps em relação aos aplicativos em desktop. Um dos itens importantes de diferenciação é a diversidade de opções de dispositivos e os tipos de aplicação que podemos desenvolver. Basicamente, temos três tipos, cada um com suas potencialidades, mas também com restrições e cuidados especiais: os apps nativos, os apps web e os híbridos. Um app nativo é focado em uma plataforma ou conjunto de dispositivos específicos e desenvolvido pelo modelo de programação dessa plataforma.  Os apps web são entregues via browser, e os modelos híbridos agrupam características dos apps nativos com os da web.

Desenvolver um app nativo, ou seja, focado em uma plataforma específica como iOS ou Android, significa que podemos explorar ao máximo a potencialidade da plataforma e de seus dispositivos. O app é um executável que é baixado e executado no dispositivo e como resultado não pode ser executado em outro. De maneira geral, é obtido de um marketplace ou app store, como a App Store da Aplle ou a Google Play para Android. Como o app tem acesso direto aos recursos da plataforma como câmeras, compasso, acelerômetro, calendário, lista de contatos etc., consegue tirar o máximo dos aparelhos. Também utiliza os componentes básicos de UI (user interface) da plataforma, como botões e ícones, bem como suas interfaces gestuais. Por outro lado, aumenta a complexidade (e os custos) dos esforços de desenvolvimento, pois a empresa tem que desenvolver apps nativos para diversas plataformas. Isso demanda ferramentas e skills específicos. Um desenvolvedor que conhece profundamente iOS nem sempre terá a mesma proficiência em Android. Provavelmente a empresa deverá ter mais de uma equipe para desenvolver seus apps, sincronizando-os uns com os outros, para que a experiência do usuário em uma plataforma seja a mais próxima possível das outras plataformas. O volume de trabalho em manutenção, correção de bugs, atualizações etc. também aumenta à medida que mais plataformas são inseridas no contexto.

Os apps web são entregues via browsers, como muitas aplicações web do nosso velho conhecido desktop. Mas um app web móvel não é apenas  pegar a aplicação que roda na web tradicional e deixá-lo rodar no smartphone ou tablet. O app deve reconhecer o ambiente em que ele está operando e se ajustar de forma adequada. A tela que vai aparecer um um desktop deve ser diferente da que deve aparecer no tablet. Entre os aspectos positivos temos a facilidade de desenvolvimento, uma vez que não demanda códigos únicos por plataforma, dado que é inerentemente cross-platform (reduz custos, naturalmente), e como é acessado via URL pode ser integrado a sistemas web, como Twitter e Facebook, além de ter seu conteúdo acessado por motores de busca. Também bypassa as app stores, não precisando que o usuário faça downloads.

Com o HTML5, podemos fazer apps web bem próximos dos apps nativos em termos de exploração de potencialidades de recursos. O HTML5 permite implementar interfaces gestuais, usar a memória interna do dispositivo, minimizando o acesso às nuvens, obtém informações contextuais como geolocalização e permite implementar uma experiência visual bastante rica. Muitas empresas estão adotando HTML5 como seu padrão de mobilidade. Vale a pena ler o case do Finacial Times, quando anunciou sua entrada no mundo HTML5, neste link. E, mais recentemente, analisar o resultado dois anos depois, aqui. Um ambiente cross-platform acelera o desenvolvimento, mas a diversidade de dispositivos faz com que a etapa de testes em cada um deles ainda seja uma das grandes barreiras no processo. O padrão HTML5 é um work in progress e, é claro, que muitas questões de segurança ainda não estão completamente endereçadas. Mas a segurança em praticamente todos os ambientes móveis ainda está na infância, com os erros e tropeços da sua imaturidade. Quanto à segurança em HTML5 recomendo ler um relatório de 2011, da Trend Micro, “HTML5 Overview: a Look at HTML5 Attack Scenarios” (pdf).

Quanto ao uso do HTML5, recomendo dar uma olhada no marketplace de apps HTML5 aqui, bem como acessar este link para ter uma melhor visão do status dos principais browsers com relação ao suporte para HTML5.

A terceira alternativa são os apps híbridos. Basicamente contêm dois elementos: um componente web, baseado em HTML5, e um container ou “bridge” nativo que permite acessar os recursos intrinsecos da plataforma e dispositivos. O container mais usado é o projeto Open Source Apache Cordova, que é formado por um conjunto de APIs que permite o app HTML5 acessar os recursos nativos do smartphone ou tablet. O app híbrido tem seu codigo principal desenvolvido em HTML5 e é envelopado em um container, que o faz ser empacotado como um app nativo e portanto residindo em uma app store. Uma vantagem significativa é que as empresas podem usar o HTML5 para diminuir o custos de desenvolvimento cross-platform, deixando apenas parte do código que explora a funcionalidade especifica da plataforma ser escrita no modelo de programação da própria plataforma. E, como HTML5 é um work in progress, a cada funcionalidade que ele for incorporando nos próximos anos é menos código especifico nativo que o app precisará conter. Um paper sobre escrever apps hibridas que vale a pena ler é “Writing a Hybrid Mobile Application with PhoneGap and the Dojo Toolkit” (pdf).

Portanto, desenvolver apps móveis não é só começar a escrever código. É necessário uma estratégia que defina entre outros aspectos que tipo de aplicações serão desenvolvidas. Para essa decisão, uma série de variáveis devem ser consideradas, como expertise interna da equipe de desenvolvimento, disponibilidade de terceiros com expertise nas plataformas necessarias, existência de planos de monetarização dos apps (uma app store facilita isso…), budget disponível para desenvolvimento e evolução contínua, necessidade de cross-platform etc. Também avalie a possibilidade de dispor de tecnologias adequadas como um MEAP (Mobile Enterprise Application Platform) como o Worklight da IBM. Um MEAP é hoje um componente indispensável em uma estratégia de mobilidade. E considere que escolher apps a serem implementados pode ser uma ação tática, como aproveitar uma janela de oportunidade de mercado, mas a escolha do tipo de aplicação deve ter um viés estratégico.

É CEO da Litteris Consulting. Profissional e estudioso de Tecnologia da Informação desde fins da década de 70, com educação formal diversificada, em Economia, mestrado em Ciência da Computação e MBA em Marketing de Serviços, e experiência profissional moldada pela passagem em empresas de porte mundial. Escreve constantemente sobre tecnologia da informação em publicações especializadas como CIO Magazine, Mundo Java, além do iMasters, e apresenta palestras em eventos e conferências de renome. É autor de sete livros que abordam assuntos como Software Livre, Grid Computing, Software Embarcado, Cloud Computing e Big data.

Ver perfil