Atualmente, com o grande número de sistemas operacionais para dispositivos móveis, os desenvolvedores tem encontrado uma difícil decisão: construir aplicativos direcionados para um determinada plataforma ou construir aplicativos genéricos, na web, que podem ser utilizados por qualquer dispositivo. Ambas as abordagens possuem vantagens muito claras, e obviamente, desvantagens. O que o desenvolvedor precisa descobrir ainda na época de projeto, é como a aplicação irá ser desenvolvida, e, baseando-se nessas informações, tomar a melhor decisão de projeto. É importante notar que esse não é um debate sobre qual abordagem irá vencer, ou deverá vencer, a batalha pelo mercado. É simplesmente um guia para que os desenvolvedores possam escolher melhor o que desejam para seu aplicativo.

Desenvolvimento para sistemas operacionais móveis

Esse termo, desenvolvimento para sistemas operacionais móveis, é muito comum de ser utilizado nos últimos tempos para aplicações nativas. Isso se dá porque não se trata de um sistema totalmente móvel, pelo fato de só funcionar em um tipo de dispositivo. Nos dias de hoje, as aplicações realmente móveis são construídas, geralmente, em um misto de HTML5, JavaScript e CSS, o que significa que são aplicações preparadas para serem executadas como uma página web.

Nos dias atuais, existem diversos sistemas operacionais para dispositivos móveis, com diferentes fatias de mercado e diferentes métodos de desenvolvimento. O principal deles é, sem dúvida, o Google Android, sistema de código aberto da Google que está presente em grande parte dos smartphones hoje em dia. Outro sistema operacional com uma fatia interessante do mercado é o iOS, da Apple. Por fim, é interessante destacar o Windows Phone, que vem tendo um crescimento constante nos últimos anos, e é a aposta da gigante Microsoft nessa briga dentro do mercado. A Figura 1 mostra as fatias de mercado das principais concorrentes em 2012. É interessante ressaltar que o crescimento do Windows Phone tem sido uma constante, e, como tal, sua fatia de mercado nos dias de hoje é muito maior.

Figura 1. Fatias de mercado dos principais sistemas operacionais móveis (Fonte: http://wp7designcorner.wordpress.com/tag/market-share/)

Essa é uma informação para os desenvolvedores pensarem. Existem cerca de 18,1% de dispositivos que possuem sistemas operacionais não tão comuns, que fogem um pouco do mundo Android, iOS e Windows Phone. E a tendência futura, ainda, é que o número de SOs móveis aumente. O que, para os desenvolvedores, significa uma tarefa um tanto quanto árdua de criação de dispositivos para tantas plataformas.

A grande vantagem das aplicações nativas de um sistema operacional é a capacidade que as mesmas possuem de se comunicar com os dispositivos do aparelho, como câmera, acelerômetro, entre outros. Isso faz com que a aplicação fique mais completa. Por isso que é importante saber de antemão tudo o que a sua aplicação irá utilizar. O planejamento, quando construímos uma aplicação móvel, é tão ou mais importante que o código que será utilizado pela mesma. Além desses detalhes, as aplicações móveis normalmente precisam lidar com questões de aproveitamento de energia, para não gastar muita bateria, e também com a potência, para que o aparelho não superaqueça.

Caso a decisão seja pela construção de uma aplicação móvel nativa para cada um dos sistemas operacionais, é preciso um pouco mais de estudo também. Isso se dá pelo fato de que cada um dos sistemas utilizam uma linguagem de programação diferente, bem como possuem um modelo diferente de exibição. O Windows Phone, por exemplo, utiliza aplicações Metro Style, um conceito criado pela Microsoft recentemente que foi a base para o Windows Phone e também para o Windows 8. A Tabela 1 traz uma comparação das tecnologias dos principais sistemas operacionais do mercado.

Sistema Operacional

Linguagem de desenvolvimento preferencial

Tecnologia de interfaces

IDE

SO de desenvolvimento

iOS

Objective-C

Cocoa Touch

XCode

MacOS

Android

Java


Eclipse / Android Studio

Windows, Linux, MacOS

Windows Phone

C#

Metro

Visual Studio

Windows

Tabela 1. Comparação entre as tecnologias para os principais SOs móveis

Observando a grande diferença de tecnologias, os desenvolvedores começaram a pensar em maneiras de criar aplicações que fossem compatíveis com todos os dispositivos. Foi esse descontentamento geral que fez com que os desenvolvedores buscassem novas alternativas para o desenvolvimento de aplicações móveis. Com o grande avanço da internet móvel, aplicações móveis utilizando tecnologias da web passaram a ser uma realidade nos smartphones.

Aplicações móveis baseadas em tecnologias web

Pode surpreender alguns, mas a ideia inicial da Apple no lançamento do iPhone era permitir apenas aplicações criadas com tecnologias web. Porém, a ideia acabou não dando muito certo e teve que ser deixada de lado, principalmente com o grande crescimento do Google Android, que se baseou em uma linguagem de programação muito conhecida, o Java.

O grande marco na história das aplicações móveis baseadas em tecnologias web veio com o lançamento do HTML5. O HTML5 incorporou uma série de elementos multimídia ao HTML comum, o que fez com que ele rapidamente se tornasse uma excelente opção de desenvolvimento. A grande vantagem dessa linguagem é o fato de que ele pode ser lido em qualquer navegador, móvel ou não.

Embora o HTML5 possa ser uma excelente opção, é preciso ter em mente questões de performance. Além disso, o HTML5 não é uma linguagem de programação comum, o que significa que falta a ele alguns elementos de interface, por exemplo, além de métodos mais avançados. Isso acaba sendo compensado com o advento do CSS e do JavaScript. Entretanto, para algumas aplicações móveis, isso acaba gerando uma grande perda de performance, que pode afetar a utilização da aplicação.

Outro problema muito comum com aplicações móveis baseadas na web é que essas aplicações geralmente precisam estar conectadas à internet para funcionar. Como nem todos os usuários de smartphone possuem conexão à internet constante, e essas conexões geralmente não são de muito boa qualidade, pode não ser uma boa ideia confiar apenas nessas tecnologias. Como sempre, é preciso que haja um planejamento, sempre pensando no que a aplicação precisa, na experiência que o usuário terá, e como isso será entregue através da aplicação.

Uma vantagem importante de aplicações móveis baseadas na web é que não há uma necessidade de atualizar a aplicação constantemente. No caso de aplicações nativas, a cada nova versão do SO, pode ser interessante disponibilizar uma nova versão do aplicativo, para utilizar o que há de mais novo em termos de funcionalidades. Porém, no caso da web, isso não existe, pois a web vai continuar sendo dessa forma por muitos anos. Por isso, a necessidade de um update da aplicação só existe para a adição de novas funcionalidades, correção de erros ou uma evolução da própria aplicação.

Aplicações Híbridas

Na grande maioria dos casos, aplicações híbridas trazem a resposta para os desenvolvedores que desejam desenvolver para muitas plataformas, sem grande perda de desempenho. Essa abordagem permite ao desenvolvedor criar um núcleo do programa de forma nativa, o que permite que haja um controle sobre as funcionalidades (e pode permitir acesso à dispositivos do smartphone) da aplicação, e, dentro da aplicação, uma parte multiplataforma. Isso faz com que, em suma, a experiência do usuário que está utilizando a aplicação em um iOS seja a mesma que um em um Windows Phone, por exemplo, o que é muito importante em grande parte das aplicações.

Essa abordagem híbrida vem ganhando muito destaque nos últimos tempos, pois permite que o desenvolvedor aprenda apenas o básico sobre cada uma das plataformas, uma vez que a parte principal da aplicação será desenvolvida utilizando tecnologias web. Porém, novamente, há um porém: a conexão à internet. No caso do iOS, por exemplo, o controle WebView não suporta off-line caching, que serviria para salvar o estado da aplicação e utilizá-la, de alguma forma, sem conexão à internet.

Para finalizar esse artigo, é preciso lembrar de uma palavra chave, que foi discutida ao longo do texto: planejamento. Toda aplicação móvel precisa criar algum tipo de experiência com o usuário para ser interessante e utilizável. É por isso que as grandes empresas costumam realizar todos os tipos de pesquisas de campo antes de começar o desenvolvimento de qualquer produto. Por isso, é preciso sempre pensar no que é melhor para o usuário, antes de pensar no que é melhor para o desenvolvedor. Uma aplicação pode ser muito mais simples de ser desenvolvida usando tecnologias web. Porém, se aquele não for o melhor caminho para ela, invariavelmente ela não será um sucesso de vendas.

Aqui, vale um dica importante: coloque em uma planilha tudo que há de mais importante em uma aplicação móvel: interface e experiência do usuário, interoperabilidade, segurança, cosmética, funcionalidade, desenvolvimento, independência de plataforma, acesso a redes sociais, entre outros. Tudo o que você conseguir pensar que possa ser importante para a aplicação. Uma vez feito isso, dê uma nota para cada um dos tipos de desenvolvimento: nativo, web e híbrido. A partir desse estudo, é possível ter uma boa ideia do que esperar antes de começar a desenvolver realmente a aplicação.