Introdução ao Desenvolvimento do Aplicativo Remoto

Com o IBM MobileFirst Platform Foundation, é possível desenvolver aplicativos móveis usando uma das quatro diferentes abordagens: desenvolvimento web, desenvolvimento híbrido, desenvolvimento híbrido combinado e desenvolvimento nativo.

O IBM MobileFirst Platform Foundation fornece recursos para ajudá-lo a responder ao desenvolvimento acelerado de dispositivos móveis. Essa estrutura flexível oferece mais opções para quando você implementa seu canal de comunicação de dispositivo móvel ou quando libera uma nova versão de seu aplicativo, seja ele um aplicativo híbrido ou nativo. É possível avaliar a melhor abordagem para cada situação, de acordo com habilidades, tempo e funcionalidade, sem estar limitado a uma abordagem específica para o desenvolvimento do aplicativo móvel.

Com o IBM MobileFirst Platform Foundation, é possível desenvolver aplicativos móveis usando um espectro de abordagens suportadas. Veja a Figura 1.
Figura 1. Espectro de abordagens de desenvolvimento de aplicativo móvel

Desenvolvimento de website em desktop e dispositivo móvel

Com a abordagem de desenvolvimento de website, os usuários iniciam o navegador preferencial e navegam para o website corporativo. O aplicativo é executado dentro do navegador do dispositivo móvel e usa tecnologias padrão, como HTML5, CSS3 e JavaScript para criar o website. O aplicativo não depende da plataforma, portanto, não é necessário desenvolver um novo aplicativo para suportar uma nova plataforma remota. Podem ser necessárias modificações nos aplicativos para suportar um mecanismo de navegador diferente. Em contrapartida, aplicativos da web móvel não podem acessar funções do dispositivo (por exemplo, a lista de contatos) porque dependem apenas do navegador e dos padrões da web associados. Além disso, se o website e, em especial, os sistemas backend corporativos não estiverem otimizados para interações móveis, a experiência do usuário ficará abaixo do agradável. Os aplicativos remotos da web não são distribuídos por meio de um armazenamento de aplicativos. Eles são acessados por meio de um link em um website ou de um marcador no navegador do dispositivo móvel do usuário.

Desenvolvimento Híbrido

Com a abordagem de desenvolvimento híbrido, é possível criar aplicativos que usam partes das abordagens de desenvolvimento nativo e da web, com padrões como HTML5, JavaScript e CSS. O aplicativo híbrido é executado dentro de um contêiner nativo e usa o mecanismo do navegador para exibir a interface de aplicativo. A interface baseia-se frequentemente em HTML e JavaScript, e também pode incorporar elementos nativos. O contêiner nativo permite que seu aplicativo acesse recursos de dispositivo que não são acessíveis a aplicativos da web, por exemplo, o acelerômetro, a câmera e o armazenamento local em um smartphone. Esses recursos podem ser alavancados a partir doJavaScript usando o Apache Cordova. O aplicativo é construído usando o IDE nativo do sistema operacional de dispositivo móvel, por exemplo, o Xcode. Semelhante a aplicativos nativos puros, os aplicativos híbridos são distribuídos por meio do armazenamento de aplicativos da plataforma.

Conforme mostrado no diagrama, há várias abordagens possíveis para desenvolvimento híbrido:

Aplicativo de shell nativo que inclui um website móvel externo
O uso desta abordagem é semelhante ao desenvolvimento de website móvel, no entanto, seu website móvel é exibido dentro de um shell nativo que é fornecido pelo IBM MobileFirst Platform Foundation em vez do navegador do dispositivo. Usando essa abordagem, seu website móvel está apto a acessar a funcionalidade nativa do dispositivo por meio de APIs expostas pelo contêiner nativo. Há vários drawbacks com essa abordagem: desenhar o código do aplicativo e a interface com o usuário remotamente a partir de um website pode fazer downgrade da experiência do usuário significativamente; quando suas opções de armazenamento em cache somente no navegador são manuais ou por meio do manifest HTML5, o funcionamento offline não é otimizado.
Recursos HTML5 predefinidos
Essa é a abordagem mais comum ao desenvolver aplicativos móveis híbridos. Com essa abordagem, é possível criar aplicativos que usam um contêiner para acessar recursos do dispositivo, mas também usar outros componentes nativos específicos da plataforma, como bibliotecas ou elementos específicos da interface com o usuário, para aprimorar o aplicativo móvel. Diferente da abordagem anterior, os recursos da web não são carregados a partir de um website externo, mas são empacotados dentro do próprio aplicativo. Além de alavancar a funcionalidade nativa que é fornecida por um contêiner nativo, o aplicativo pode conseguir melhor desempenho e responsividade porque todos os recursos necessários para a funcionalidade do aplicativos são empacotados dentro do próprio aplicativo e não precisam ser carregados por meio de uma rede. Usando essa abordagem, seu aplicativo adquire a capacidade para trabalhar e armazenar dados no modo offline. Para conseguir a melhorar experiência do usuário, é importante otimizar para vários fatores de formato usando técnicas como o design de web responsivo.
Combinando web e nativo em código e interface com o usuário (HTML5 + interface com o usuário nativa/essencialmente nativa com algumas telas HTML5)
Aqui, combinam-se elementos nativos e da web em uma de duas abordagens: você tem um aplicativo híbrido no qual inclui componentes e gestos da interface com o usuário ou possui um aplicativo essencialmente nativo e inclui telas HTML5. Desenvolvendo nesse estilo, você é capaz, por exemplo, de iniciar seu aplicativo com uma tela nativa e mover para uma tela da web em um estágio posterior ou até mesmo combinar componentes nativos e da web na mesma tela. Há vários benefícios:
  • Você alavanca totalmente todas as funções da plataforma, como acessar a câmera ou a lista de contatos a partir de código nativo e JavaScript.
  • Você consegue desempenho e experiência do usuário aprimorados onde necessário, usando recursos nativos.
  • Você reutiliza código e qualificações de desenvolvimento da web usando HTML5/JavaScript/CSS onde possível.

Desenvolvimento nativo puro

Com a abordagem de desenvolvimento nativo puro, é possível criar aplicativos que são gravados para uma plataforma específica e executados somente nessa plataforma. Seus aplicativos conseguem um ótimo desempenho e podem alavancar totalmente as funções da plataforma, como acessar a câmera ou a lista de contatos, ativar gestos ou interagir com outros aplicativos no dispositivo. Para suportar plataformas como Android, iOS, Java™ ME e Windows Phone, você deve desenvolver aplicativos separados com linguagens de programação diferentes, como Objective-C for iOS, Java for Android ou C# for Windows Phone Silverlight 8. Diferente de aplicativos móveis da Web e de desktop, os aplicativos híbridos e nativos são distribuídos através de uma loja de aplicativos.

Aspectos de cada Abordagem de Desenvolvimento

Cada uma dessas abordagens de desenvolvimento possui vantagens e desvantagens. Você deve selecionar a abordagem de desenvolvimento apropriada de acordo com os requisitos específicos de uma solução de dispositivo móvel individual. Essa opção depende muito das características remoto e de seus requisitos funcionais. Mapear os requisitos para selecionar uma abordagem de desenvolvimento apropriada é a primeira etapa em um projeto de desenvolvimento de dispositivo móvel. O Tabela 1 descreve os principais aspectos das quatro abordagens de desenvolvimento e pode ajudar a decidir qual abordagem de desenvolvimento é apropriada para seu aplicativo móvel específico.

Tabela 1. Comparação de abordagens de desenvolvimento de dispositivo móvel. Nessa tabela, é possível localizar os diferentes aspectos de desenvolvimentos remotos e o nível de dificuldade ou as possibilidades que o desenvolvimento da web, o desenvolvimento híbrido, o desenvolvimento misto híbrido e o desenvolvimento nativo pode trazer para cada aspecto.
Aspecto Desenvolvimento de website móvel Shell nativo, website móvel externo Recursos HTML5 predefinidos Combinando web e nativo em código e UI Desenvolvimento nativo puro
Fácil de aprender Mais fácil Mais fácil Médio Difícil Mais difícil
Desempenho do aplicativo Mais lento Moderado Bom Mais rápido Mais rápido
Conhecimento de dispositivo necessário Nenhum Algum Algum Algum Muito
Ciclo de desenvolvimento (construir/testar/implementar) Mais curto Mais curto Médio Médio Mais longo
Portabilidade do aplicativo para outras plataformas Mais alto Alta Alta Médio Nenhum
Suporte para funcionalidade de dispositivo nativo Algum A maior parte A maior parte Todos Todos
Distribuição com mecanismos integrados Não Não Sim Sim Sim
Capacidade para gravar extensões em recursos de dispositivo Não Não Sim Sim Sim