# Desenvolvimento de software móvel

Desenvolvimento de aplicações e sistemas para dispositivos móveis, por vezes utilizado apenas como desenvolvimento mobile é toda atividade e processos acerca do desenvolvimento de software para dispositivos móveis (handheld) como computadores de bolso, PDAs, smartphone, telefone celular, console portátil e Ultra Mobile PC combinado com tecnologias como GPS, TV portátil, touch, consoles, navegador de Internet, WAP, leitores de áudio, vídeo e texto, entre outros.
Estes aplicativos podem ser instalados durante a fabricação do aparelho, através dos sistemas operacionais de cada dispositivo ou distribuído através de arquivos de instalação pela web ou não. O desenvolvimento de aplicações para mobile possui particularidades do desenvolvimento tradicional devido as limitações tanto do processamento, tamanho de tela e área de trabalho, além de estar sempre bombardeado por configurações distintas tanto do hardware quanto do software por parte do fabricantes e suas concorrências.

## Ambientes de execução

Os principais sistemas operacionais do mercado atual são o Android, iOS, BlackBerry, HP webOS, Symbian OS, Bada da Samsung, e Windows Mobile que suportam aplicações binárias tipicas de PCs com códigos de execução nativas da máquina. Windows Mobile pode ser compilado até em um x86 sem a necessidade de um emulador, e também podem suportar aplicações portáteis desenvolvidas com as tecnologia .NET Framework, Windows Mobile, Android, HP webOS e iOS (Apple) através de IDE de distribuição livre.

## Definição de aplicativos mobile

Aplicativos mobile são softwares utilizados para funções específicas em dispositivos móveis como smartphones e tablets. Eles estão disponíveis através de plataformas de distribuição de aplicações que são normalmente operadas pelo proprietário do sistema operacional móvel, como App Store, Android Market, BlackBerry App World, Ovi Store, entre outros. Alguns aplicativos são gratuitos, e outros têm um preço. Normalmente eles são baixados da plataforma para um dispositivo de destino, como um iPhone, BlackBerry, Android ou telefone, mas às vezes eles podem ser baixados para computadores menos móveis, tais como laptops ou desktops.
Os aplicativos são destinados à facilitar o desempenho de atividades práticas do usuário assim como para puro divertimento.

## Vantagens do uso de aplicativos mobile

* Melhor experiência para o usuário: Aplicativos mobile possibilitam uma melhor utilização de recursos gráficos e de interface, proporcionando um uso mais rápido e agradável para o usuário. Além disso, é possível disponibilizar conteúdo para ser acessado de modo offline, ou seja, sem conexão com a internet.
* Menor custo de acesso: Nos aplicativos toda a parte da interface já se encontra instalada no celular, o que implica um tráfego de dados muito menor para se acessar um determinado conteúdo da internet.
* Acesso a recursos nativos do celular: Os aplicativos possibilitam a utilização de recursos nativos do celular como a câmera fotográfica, GPS, Bluetooth, agenda telefônica, entre outros.
* Vendas: É possível uma empresa vender bens, conteúdos e acessos premium dentro dos aplicativos.

## Desvantagens do uso de Aplicativos mobile

* Atualização de versões: Para cada alteração na estrutura ou conteúdo do aplicativo, o usuário precisará efetuar uma nova instalação na nova versão disponibilizada.
* Plataformas distintas: A gama de fabricantes e plataformas de desenvolvimento faz com que um aplicativo não funcione em todos os aparelhos.

## Principais categorias de aplicativos móveis

* Serviços: Aplicações úteis para resolver problemas e aumentar a produtividade em mobilidade como consultas, previsões, mapas, operações em tempo real, entre outros.
* Informações: Acesso a conteúdos diversos em mobilidade como endereços, telefones, promoções, produtos, entre outros.
* Comunicação: Interação com outras pessoas através de e-mail e redes sociais.
* Entretenimento: Uso destinado à diversão como os jogos por exemplo.

## Escolha da plataforma de desenvolvimento

Existem várias plataformas que um desenvolvedor pode escolher para seus aplicativos. Porém, em geral, são mutuamente incompatíveis (ou seja, um aplicativo desenvolvido em uma plataforma não irá rodar em outra). Além disso, cada dispositivo móvel suporta apenas uma plataforma em particular. Portanto, para maximizar o alcance e as receitas para as suas aplicações, um desenvolvedor precisa decidir cuidadosamente quais plataformas irá apoiar.
Desde os primeiros computadores portáteis da década de 1980, a popularidade dessas plataformas tem aumentado consideravelmente. Muitos modelos de celulares do final dos anos 2000 incluem a capacidade de executar o software instalado pelo usuário.

## Plataformas que suportam dispositivos de vários fabricantes

Projetada desde o início para dispositivos móveis, a plataforma Symbian é um sistema operacional multitarefa especificamente projetado para funcionar bem em sistemas de recursos limitados, maximizando o desempenho e vida útil da bateria e, ao mesmo tempo, minimizando o uso de memória.

## Plataformas de desenvolvimento

Diversas plataformas dão suporte ao desenvolvimento mobile através de Ambiente de desenvolvimento integrado (IDEs), providas com diversas ferramentas para escrever, testar e desenvolver as aplicações. O seguinte sumario apresenta as principais plataformas e IDE do mercado atual.
| | Linguagem de programação | Debugador disponível | Emulador disponível | IDE disponível | Compatibilidade de plataforma | Opção de pacote para intalação | Custo da ferramenta para desenvolvimento |
| Adobe AIR | Action Script, HTML, CSS, JavaScript | Sim | Sim | Flash Builder, Flash Professional, IntelliJ IDEA | iOS (iPhone, iPad, iPod touch), Android, BlackBerry | Distribuição em formato nativo para cada uma das plataformas | Flash Builder, Flash Professional, IntelliJ IDEA - Licenças comerciais disponíveis |
| Android | Java, porém, porções de código em C, C++ podem ser inserido | Debugador integrado por padrão. | Sim | Eclipse, IntelliJ IDEA, Project Kenai Android e plugin para NetBeans, Android Studio Google | Android | apk | Livre, IntelliJ IDEA Community Edition |
| BlackBerry | Java | Debugger integrado na IDE | Sim | Eclipse, BlackBerry JDE | BlackBerry apenas, devido a arquitetura RIM API | alx, cod | Livre |
| Java ME | Java | Sim | Emulador gratuito, mpowerplayer | Eclipse, LMA NetBeans Mobility Pack | Sim, porém algumas VM necessitam de implementações específicas para cada dispositivo instaladas separadamente | Jad/JAR e arquivos PRC para Palm OS | Livre |
| Symbian | C++ | Sim | Sim | Vários | Compilo por alvo (target) | SIS deployment | Licenças commerciais e ferramentas livres |
| Ubuntu Touch | QML, C, C++, JavaScript, HTML5, CSS | Sim | Sim | Linhas de comando através do Qt Creator, Eclipse | Ubuntu desktop/Apps baseados em WEB disponível para browsers e outras plataformas. | Ubuntu OS, App store, Web | Desenvolviment requer Ubuntu desktop 12.04 ou posterior, Livre |
| webOS | JavaScript, CSS, HTML, e C++ | Sim | Sim | Eclipse | webOS, Palm | Construção e build por OTA, webOS através de App store, Web, Precentral, .ipk | Livre |
| Windows Mobile | C, C++ | Sim | Emulador livre (com código fonte disponível), também acoplado na IDE | Visual Studio, 2010, 2008, 2005, eMbedded VC++ (free), Satellite Forms | Windows Mobile, Windows FU, Windows CE | OTA, arquivos CAB, ActiveSync | Linhas de comando e ferramentas livres ou eMbedded VC++, or Visual Studio (Edição padrão ou posterior) |
| Windows Phone | C#, Visual Basic, C, C++ | Sim | Emulador disponível, também acoplado na IDE | Visual Studio 2012, Visual Studio 2010 | Windows Phone | .OTA, .XAP | |

## Distribuição e lojas de aplicativos

Para adquirir uma aplicação mobile, geralmente as empresas o fazem a partir de web stores (lojas na internet) onde garantem a distribuição através de licenças ou através de compras. A Nokia possui o Ovi, onde além de contar com diversos serviços de internet, também possui sua loja para os aplicativos que rodam no seus dispositivos. Já á Google possui a Google Play, que é a loja online mantida pela Google para distribuição de aplicações, jogos, filmes, música e livros. Anteriormente a loja chamava-se Android Market. A BlackBerry World é a loja para aplicativos da BlackBerry. Já para aplicativos iPhone, podem ser adquiridos pela App Store (iOS). Existem outras webstores como a Amazon Appstore que são focadas principalmente para o SO Android.
A lista abaixo resume o fluxo de desenvolvimento de um aplicativo até a disponibilização do mesmo em uma das plataformas de distribuição de aplicações e posterior verificação de sucesso do aplicativo.
* Tornar-se parceiro da loja;
* Desenvolver o aplicativo;
* Submeter o aplicativo à loja;
* Aguardar aprovação da loja;
* A loja disponibiliza o aplicativo para download;
* Empresa divulga o aplicativo;
* Usuário realiza o download do aplicativo;
* Empresa mensura resultados.
Existem inúmeras opções de aplicativos disponíveis na internet para download. São oferecidos gratuitamente ou a baixo custo, podendo ser encontrados em lojas de aplicativos.
Exemplos de lojas de apps para celulares:
| Loja | Apps | Downloads | Usuários | Plataforma Found In |
| Ovi Store | 2500 | 10 milhões | 250 milhões | Symbian S60 + Java |
| Android Market | 30000 | n/d | 1 milhão | Android |
| App World | 2000 | n/d | 8 milhões | Blackberry OS |
| App Store | 140000 | 3 bilhões | 75 milhões | iOS |
| Software Store (Palm) | 5000 | 1,8 milhão | 150 mil | WebOS |
| Windows Marketplace for Mobile | 376 | n/d | n/d | Windows Mobile |

### Ovi Store

Uma loja de aplicativos para os celulares Nokia foi lançada internacionalmente em maio de 2009. Em abril de 2011 havia 50.000 apps, e em agosto de 2011, 9.000.000 downloads por dia. Em fevereiro de 2011, a Nokia informou que vai estar usando o Windows Phone 7 como seu principal sistema operacional, porém a loja Ovi ainda estará disponível para celulares Symbian.
Na loja virtual da Nokia, o usuário pode realizar o download de jogos, aplicativos, vídeos, imagens e toques em seus celulares. O serviço oferecido pela operadora interliga os aparelhos móveis aos computadores pessoais, facilitando o compartilhamento dos conteúdos criados pela Internet.
O usuário indica o modelo de seu aparelho celular e todo o conteúdo disponível para ele é automaticamente filtrado, contendo as recomendações de outros usuários. Os aplicativos estão divididos em classificações bem definidas apresentando facilidade no momento de realizar download.

### Android Market

O Android Market é uma loja de aplicativos móveis desenvolvido pelo Google para dispositivos Android. Foi inaugurado em outubro de 2008. Em março de 2009, cerca de 2300 aplicativos estavam disponíveis. Em maio de 2011, o Google anunciou que há 200 mil apps,com 4,5 mil milhões de aplicativos baixados e instalados.
O Android Market apresenta para todos os aparelhos compatíveis com a plataforma Android uma gama de aplicativos para diversos estilos e situações. A divisão é feita basicamente por programas pagos ou gratuitos, com uma interface muito simples de compreender, incluindo links para os sites oficiais dos softwares. No próprio site também está disponível o SDK para que os desenvolvedores possam criar e vender os seus aplicativos.
Em março de 2012 o Google anunciou a mudança de nome do Android Market para Google Play Store, fazendo parte de uma central de conteúdo de entretenimento digital chamada Google Play.

### App World

BlackBerry App World é um serviço de distribuição de aplicativos pela Research In Motion (RIM) para a maioria dos dispositivos BlackBerry. O serviço oferece aos usuários do BlackBerry um ambiente de navegação para fazer downloads e atualização de aplicativos. O serviço entrou no ar em 01 de abril de 2009.

### App Store

A App Store é um serviço para o iPhone, iPod Touch e iPad criado pela Apple Inc., que permite aos usuários navegar e fazer download de aplicativos da iTunes Store. Dependendo da aplicação, ela pode ser grátis ou paga. As aplicações podem ser baixadas diretamente no dispositivo, ou baixados para um computador via iTunes.