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óveisA 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 contrasExistem 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íveisTitanium
Usa uma máquina virtual no telefone para executar aplicativos escritos em UXML, CSS e JS
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.
PhoneGap
Usa HTML e JavaScript para construir aplicativos
Grapple
Usa HTML, CSS e JavaScript para construir aplicativos
Usa Flex para construir aplicativos
Usa HTML5 e Ruby
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óveisA 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 contrasExistem 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íveisTitanium
- 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.
PhoneGap
Usa HTML e JavaScript para construir aplicativos
- Oferece acesso a recursos do telefone como GPS
- Suporta iPhone/iPad, Android, Palm, Blackberry e Symbian
Grapple
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