Texto original de Dennis Newel,
disponível em http://www.getelastic.com/developing-mobile-apps-for-multiple-platforms/
?

Um dos maiores obstáculos ao se desenvolver aplicativos móveis
hoje é o número de diferentes aparelhos de telefone que devem ser suportados.
Apesar de o iPhone
ser a mais popular plataforma para aplicativos atual, não é mais
suficiente ter suporte só para ele. O Android é um competidor valioso, e o iPad
apresenta diferentes opções e possibilidades que muitas vezes garantem o
desenvolvimento de sua própria experiência em aplicativos. Para oferecer,
verdadeiramente, uma oferta móvel, você também deve suportar Symbian,
Blackberry, Windows Mobile e Palm apenas para cobrir os smartphones mais
usados. Mas como você desenvolve para múltiplas plataformas?
Atuais
abordagens para o desenvolvimento de aplicativos móveis
A habilidade de
criar um aplicativo e o fazer “magicamente” funcionar em todos os
aparelhos móveis não está disponível no momento, apesar de existirem várias
empresas trabalhando duro para chegar lá. Enquanto isso, existem duas
abordagens diferentes, com uma terceira a caminho.
Uma delas é oferecer um “driver”
para cada telefone que oferece acesso a, por exemplo, acelerômetro e GPS a
partir de linguagens como JavaScript, Ruby e Python. Dessa maneira, um
desenvolvedor pode escrever o aplicativo em uma linguagem (juntamente com HTML
e CSS), que pode ser executado em todos os telefones que têm o
“driver”.
Outra é escrever o aplicativo em uma linguagem e, então, o
“traduzir” para outras linguagens que podem ser usadas em outros
telefones. O desenvolvedor então criaria o aplicativo (p.e. para o iPhone) e o
executaria através de uma ferramenta para produzir versões que podem ser
executadas em outras plataformas.
A nova maneira de
criar aplicativos está surgindo através do HTML 5, que é uma grande extensão
das especificações HTML atuais e que, entre outras coisas, poderia oferecer
APIs diretas para GPS e outros recursos móveis específicos. O principal
problema do HTML 5 é que o padrão ainda não foi finalizado, e poucos telefones
o suportam. Quando ele se tornar largamente suportado, no entanto, você
poderá, teoricamente, criar um aplicativo que será executado em todos os
telefones e browsers (que suportam HTML5).
Prós e contras
Existem prós e
contras para ambas as opções atuais e futuras. As principais vantagens em usar
essas tecnologias são velocidade de entrada no mercado e fácil manutenção de um
aplicativo em vez de múltiplos aplicativos.
Outras vantagens
são visual e sentido uniformes em todos os dispositivos, suporte para layout
flexíveis (usando HTML e CSS, pelo menos) e uso de tecnologias conhecidas. Ainda
não é fácil encontrar ótimos desenvolvedores para dispositivos móveis, mas é muito fácil achar
bons desenvolvedores web que estão familiarizados com HTML, CSS,
JavaScript, Ruby, Python e outras linguagens.
A principal
desvantagem, além de não suportar todas as plataformas, é que você fica
restrito ao que o “driver” e o “tradutor” são capazes de
lidar. Você provavelmente não será capaz de acessar o armazenamento local (isso será
parte do HTML5), Bluetooth, Wi-Fi ou similares que não estiverem acessíveis em
todos os telefones. Existe também a questão da performance, uma vez que o
código (seja traduzido ou escrito em uma linguagem que precisa ser
interpretada) pode não ser otimizado para um determinado telefone.
Frameworks disponíveis
- Usa
tecnologias web como HTML, CSS, JS, Python, Ruby e PHP - Pode
construir aplicativos móveis e para desktop - Possui
built-in analytics - Pode
acessar recursos do telefone como GPS e native UI - Suporta
iPhone, iPad e Android
- Usa uma máquina virtual no telefone para executar aplicativos
escritos em UXML,
CSS e JS - Constrói
aplicativos móveis e para desktop - Tem
grande foco em segurança - Suporta
anúncios dentro dos aplicativos - Tem
um server-side que permite integração com sistemas internos da empresa
como intranets ou CRM - Suporta
uma vasta gama de telefones
- Usa
o padrão J2ME para aplicativos e tem uma ferramenta que pode transportar o
aplicativo para vários outros telefones, incluindo iPhone, Blackberry e
Android usando seus componentes native UI.
- Usa
HTML e JavaScript para construir aplicativos - Oferece
acesso a recursos do telefone como GPS - Suporta
iPhone/iPad, Android, Palm, Blackberry e Symbian
- Usa
HTML, CSS e JavaScript para construir aplicativos - Oferece
uma série de serviços profissionais como criação de aplicativos,
hospedagem, gerenciamento etc
- Usa
Flex para construir aplicativos - Suporta
iPhone/iPad, Android, Windows Mobile, Symbian, mas pode ter problemas com
o último Contrato de Licença da Apple devido ao seu uso de Flex e à sua
ligação com a Adobe)
- Usa
HTML5 e Ruby - Hospeda
o IDE (Integrated Development Environment) - Suporta
iPhone, Windows Mobile, RIM, Symbian e Android - Oferece
acesso a recursos do telefone como GPS e câmera







