É muito comum os desenvolvedores que estão começando a entrar no mundo mobile se depararem com diversas abordagens de desenvolvimento de apps. Vamos olhar de uma maneira clara, objetiva e de alto nível as opções e quais são as vantagens e desvantagens de cada uma delas. Como um aplicativo é desenvolvido é quase tão importante quanto o que um aplicativo faz. Por isso, os desenvolvedores devem se questionar quanto aos objetivos do app e as suas restrições de projeto para decidir qual a abordagem mais apropriada.
Desenvolvendo um aplicativo nativo
Desenvolver um aplicativo nativo significa desenvolver separadamente para cada plataforma ou sistema operacional (Android, iOS, BlackBerry, Windows Phone, etc). A vantagem de se projetar um aplicativo inteiramente a partir do zero na linguagem de programação nativa da plataforma algo é que você pode projetar a aparência de cada aplicativo especificamente para cada dispositivo e usar os recursos que o dispositivos oferecem de maneira plena. A desvantagem óbvia é que o código deve ser desenvolvido de forma independente para cada plataforma e você será obrigado a programar o mesmo aplicativo tantas vezes quantas forem as plataformas alvo. Este método é o mais custoso em tempo porém, proporciona controle total sobre todos os aspectos do aplicativo.
Desenvolvendo com o .NET Framework – Mono
Os desenvolvedores familiarizados com .NET Framework da Microsoft não precisam mudar para Objective-C ou Java a fim de desenvolver para Android, iOS ou outras plataformas. A possibilidade de desenvolver usando uma linguagem familiar reduz os requisitos de competências e as despesas gerais de infraestrutura para o desenvolvimento. Ao utilizar a linguagem C# junto com o .NET Framework e o projeto open-source Mono, programa-se apenas uma única vez a lógica da aplicação utilizando um modelo de desenvolvimento (MVC) de forma a poder reaproveitar esse código em todas as plataformas alvo. Essa arquitetura de código (pesquise sobre o MonoCross) permite compartilhar o código da lógica (ou Business Layer) enquanto que a interface do aplicativo é programada de forma específica para cada plataforma, permitindo assim tirar o máximo de vantagem dos componentes gráficos nativos enquanto que aproveitando o máximo de código possível. É possível também o acesso à API nativa através de bindings (ou mapeamentos) fornecidos pelos projetos comerciais MonoTouch e MonoDroid. Dessa forma o desenvolvedor não tem que se preocupar com falta de acesso aos recursos nativos dos dispositivos.
Desenvolvendo com Frameworks de desenvolvimento mobile cross-plataform
Se a sua necessidade é desenvolver os aplicativos apenas uma vez e reaproveitar todo código em todas as plataformas com o máximo de acesso possível aos recursos dos dispositivos então essa é a opção certa. Existem três frameworks principais: PhoneGap, Titanium e o Rhomobile. Esses frameworks para atingir o maior número de dispositivos possíveis são baseados em tecnologias web como HTML5, JavaScript e CSS3. A vantagem deste método é que ele possui um ótimo custo-benefício e requer pouca manutenção enquanto que todo o código é completamente aproveitado nas plataformas. A desvantagem é que não é possível tirar proveito de recursos da interface gráfica nativa (exceto pelo Appcelerator Titanium) e o acesso aos recursos e hardware do aparelho não é completo e depende de plugins. Veja o comparativo dos frameworks aqui: http://www.markus-falk.com/mobile-frameworks-comparison-chart/
Não está completamente atualizado mas dá pra ter uma boa idéia.
Desenvolvendo um site mobile em HTML5
Com o advento do HTML5, em vez de desenvolver aplicativos para dispositivos móveis, os desenvolvedores podem simplesmente fazer sites e aplicações web que podem então ser convertidos para um app. Desenvolver um aplicativo em HTML5 é simples e rápido e exige menos código e manutenção do que as opções acima. Somente o conhecimento de HTML e JavaScript são necessários para criar um aplicativo deste tipo e você pode utilizar alguns frameworks como jQuery Mobile e Sencha Touch. Primeiro, o desenvolvedor pode criar um site HTML5 com qualquer outra tecnologia no back-end como NET ou PHP. Então utiliza-se um código para iPhone, Android, ou uma solução Windows, que carrega os controladores do navegador do dispositivo. Os controladores do navegador ficam então responsáveis pelo gerenciamento do app. A vantagem dessa abordagem é o desenvolvimento muito rápido e sem a necessidade de conhecimento de linguagem específica adicionais. A desvantagem é que o acesso às funcionalidades dos dispositivos fica bastante limitado. O HTML5 apresenta na sua especificação funcionalidades que ajudam a cobrir a deficiência nessa área, porém nem todos os browsers implementam a especificação de maneira completa ainda. O Chrome é o browser que vem mostrando um maior esforço em aderir a essas tecnologias.
Desenvolvendo um site mobile amigável
A opção mais fácil é simplesmente projetar um site simples, que só tem a aparência de um app, embora na realidade ele seja apenas um site normal. De todas as soluções listadas até agora, esta é a com a menor quantidade de custo e tempo de desenvolvimento. No entanto, é também a que menos se parece com um app, já que não vai conseguir praticamente interação nenhuma com o aparelho.
Conclusão
Como decidir qual destas abordagens usar? Como regra geral, depende das restrições de tempo do projeto e das necessidades do aplicativo de acesso aos recursos do aparelho. Ao se mover para baixo na pirâmide o tempo de desenvolvimento diminui e as soluções passam a ser mais universais ao mesmo tempo em que o acesso ao dispositivo fica cada vez menor.
De maneira geral, caso você pretenda desenvolver aplicativos que tenham a sensação de um aplicativo nativo em cada plataforma específica ou tenha que acessar recursos específicos ainda não suportados pelos frameworks baseados em HTML5, há a opção do Mono (caso você tenha familiaridade com .NET nem pense duas vezes) ou resta apenas desenvolver para cada plataforma separadamente. Caso os apps não tenham essas restrições visuais e os recursos necessários pela aplicação sejam mais comuns como GPS, Acelerômetro, etc, já suportados pela maioria dos frameworks, então a melhor opção são os frameworks de desenvolvimento cross-plataform como PhoneGap, Titanium e Rhomobile. As opções abaixo dessas oferecem apenas uma vantagem maior para os desenvolvedores web que decidem migrar para o desenvolvimento mobile, visto que, eles possuem uma base de conhecimento nas tecnologias web considerável. O HTML5 está evoluindo cada vez mais rápido e talvez no futuro vejamos apps em HTML5 muito mais completos e competitivos no mercado. Porém, mesmo assim ainda há vantagens no desenvolvimento nativo que dificilmente serão supridas algum dia.
Fonte: Artics.