Desenvolvimento para dispositivos móveis: Nativo x Cross Platform

Nos últimos anos a demanda por aplicativos móveis cresceu em um ritmo acelerado. Somente no último trimestre de 2011, foram vendidos 157, 8 milhões de smartphones, um aumento de 54,7% em relação ao mesmo período do ano anterior, segundo a consultoria IDC. À medida que as vendas crescem a necessidade de aplicações também cresce tanto no âmbito corporativo quanto no entretenimento. A partir deste crescimento, cada vez mais surgem técnicas e ferramentas para tornar este desenvolvimento produtivo, principalmente nas três plataformas mais populares do momento: iOS, Android e Windows Phone.

Vamos abordar três modos de desenvolvimento para dispositivos móveis: desenvolvimento nativo, cross-platform e site móvel (web mobile).  Focando nas suas principais vantagens e desvantagens, apresentando casos de sucesso no intuito de permitir que o leitor conheça melhor as três abordagens e ajudando a definir qual a melhor alternativa para cada situação.

Aplicativo Nativo

É a abordagem mais simples e direta: para cada plataforma é desenvolvida uma versão do aplicativo.

O grande benefício desta abordagem é a melhor experiência de interface e comportamento obtida. Os aplicativos móveis requerem excelentes experiências de uso na interface e comportamento para se destacarem e obterem a atenção do usuário. E a experiência de uso não é portável de uma plataforma para outra. Ela deve ser repensada e construída do zero a cada plataforma em que o aplicativo é criado. Um simples exemplo pode ser visto na posição das abas: no iOS, as abas se posicionam abaixo do conteúdo;  enquanto no Android, acima. Apresentando maior diferença, o Windows Phone as “abas” estão todas em um mesmo plano, sendo acessadas deslocando o conteúdo horizontalmente.

Cada uma das plataformas possui suas convenções sobre interfaces e comportamentos. Essas convenções auxiliam ao usuário a rapidamente compreender a utilização do aplicativo, já que ele é habituado com a plataforma onde todos os aplicativos seguem os mesmos padrões de interface e comportamento.

As capacidades de cada dispositivo e plataforma também são acessíveis sem restrições.  A cada nova versão da plataforma, novas bibliotecas são adicionadas, tornando possível ou facilitando o desenvolvimento de vários recursos pelos aplicativos. Essas versões são liberadas em uma alta frequência, uma por ano ou mais, e geralmente coincidem com a chegada de novos aparelhos cujo hardware aproveita todos essas novas capacidades. Os usuários desses novos aparelhos requererão os novos recursos o mais breve possível, e utilizando o desenvolvimento nativo é possível satisfaze-los mais facilmente (versões betas são liberadas anteriormente para os desenvolvedores).

O desenvolvimento nativo também conta com uma documentação mais abrangente e completa, e a busca por soluções ou resolução de problemas é facilitada, já que a maioria dos desenvolvedores opta por essa alternativa.

Apesar de todas as vantagens, essa abordagem pode ter um alto custo. Construir n versões do mesmo aplicativo para variadas plataformas geralmente multiplica o custo do projeto na mesma taxa. Este custo adicional é adicionado à manutenção, já que são várias bases de código, e em cada uma delas pode haver erros que não se encontram nas outras. Outra dificuldade é a obtenção de uma equipe que consiga desenvolver para as múltiplas plataformas ou a obtenção de uma equipe para cada plataforma.

Caso de Sucesso: Facebook

Aplicativo Cross-Platform

O desenvolvimento Cross-Platform, consiste em um desenvolvimento único para várias plataformas. Atualmente, existem várias ferramentas que permitem essa abordagem, onde a parte visual é normalmente desenvolvida em HTML 5 e CSS e que são “renderizados” em um browser embutido no SDK padrão da linguagem nativa (Objective-C do iOS, Java do Android, etc.) tornando assim possível o desenvolvimento para várias plataformas. Abaixo são listadas duas das principais ferramentas do mercado e que foram utilizadas internamente:

  • Adobe Air:
    Utilizando o Adobe Air é possível programar em Actionscript 3.0 em background e desenvolver a parte visual utilizando MXL (linguagem de marcação da Adobe) ou ainda utilizando HTML 5/CSS. Atualmente é possível criar versões para Android, iOS e Blackberry Tablet OS. Para instalar um aplicativo desenvolvido utilizando o Adobe AIR é necessário ter instalado no dispositivo o Adobe AIR Runtime. Entretanto, ao tentar instalar um aplicativo desenvolvido no AIR, automaticamente é solicitada a instalação do o Adobe Air Runtime.  O SDK do Adobe Air é totalmente gratuito, porém, o Flash Builder que é uma IDE também desenvolvida para Adobe, com uma série facilidades para desenvolvimento é paga. A referência da linguagem (Actionscript) é bem detalhada, porém a documentação da parte visual não é tão rica.
  • Motorola Rhomobile
    A plataforma Rhodes foi adquirida pela Motorola no início de 2012 se tornando Rhomobile. No Rhomobile é possível desenvolver em Ruby, com o framework parecido com o já famigerado Rails, já a parte visual pode ser desenvolvida em HTML5 e CSS. Ao criar um projeto novo, já está incluso um “skin” em CSS de cada plataforma.  A própria criação do projeto já contém uma rotina que determina em qual plataforma o aplicativo está rodando.  Também possui uma vasta camada de abstração de banco de dados, tornando esta parte do desenvolvimento simples. Em contrapartida, a parte da sua API que trata requisições HTTP e Threads ainda é muito instável, além disso, a documentação e o suporte no Brasil deixam a desejar, principalmente nas questões de licenciamento do produto.
  • Outras ferramentas disponíveis no mercado:
    • PhoneGap
    • Appcelerator Titanium SDK
    • MoSync

Aplicativos desenvolvidos em ferramentas cross-platform, geralmente diminuem consideravelmente o custo de um projeto, principalmente quando várias plataformas são envolvidas. Porém pelo fato de ser genérico, o acesso a recursos nativos se torna mais trabalhoso e frequentemente problemático. A parte visual também se transforma em um problema, pois em algumas ferramentas se comporta de maneira substancialmente diferente nos vários dispositivos suportados. Sendo assim, frequentemente é utilizado no desenvolvimento de aplicativos simples que não necessitam tanto de recursos nativos.

Caso de Sucesso: Machinarium

Site Móvel (Web Mobile)

Com a popularização do HTML 5 e a sua adoção pelos navegadores dos dispositivos móveis, abriu-se uma nova frente para o desenvolvimento: os sites móveis.

O acesso aos recursos do dispositivo como câmera, GPS, acelerômetro etc., é possível, embora complicado em alguns momentos.

Um site móvel não depende de uma loja de aplicativos e a sua respectiva política de avaliação. Isso permite entregas rápidas, onde existe uma ágil implementação de novos recursos e correções de erros. O fato de não necessitar de instalação por parte do usuário também pode ser contado como um fator positivo.

Em um site móvel não se deve simular o visual e comportamento de um aplicativo nativo. Usuários sabem distinguir entre uma ótima experiência em um aplicativo nativo e uma ótima experiência um site móvel. Para obter essa ótima experiência, a atenção deve ser focada em construir um site que tenha uma ótima usabilidade em telas de toque e/ou pequenas.

O custo de construir um site móvel é mais baixo do que construir aplicativos nativos para cada plataforma. É mais comum a existência de profissionais que conheçam a tecnologia envolvida. Entretanto, os sites móveis, obviamente tem um requisito principal, acesso à internet. Embora isto seja um requisito básico, nos Estados Unidos e na Europa, no Brasil a rede móvel ainda não é tão comum nos smartphones e tablets. Por isso, um site móvel torna-se mais interessante quando o aplicativo necessite essencialmente de acesso a web.

Caso de Sucesso: Kindle Store

Referências bibliográficas:
Net Magazine
Stackoverflow – Are there any huge differences between objective-c and Java, or iPhone and Android?
Stackoverflow –  Developing cross platform mobile application
Martin Fowler
iOS Developer Library
Developers Android

 

Contribuição:
João Paulo Gonçalves

Desenvolvedor de Sistemas na Teclógica.

Artigos relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *