Quando se trata dos Apps, que tanto usamos nos nossos celulares hoje em dia como, Facebook e Twitter, não chegamos a pensar como essas empresas fazem para entregar o seu produto em tantos dispositivos, com tamanhos e formatos de telas diferentes e sistemas operacionais diferentes.

Falando em desenvolvimento de software para dispositivos móveis, uma preocupação que vem em mente para quem vai desenvolver é, para qual plataforma ou dispositivo é para ser desenvolvido? Por que nós estamos falando aqui de sistemas operacionais diferentes, de tipos de dispositivos diferentes, e para cada um tem uma linguagem de programação própria para o desenvolvimento, e então entregar um app compatível. Isto quer dizer que, um código deve ser reescrito várias vezes. Vale lembrar aqui, que não estou falando do backend, que são a parte das funcionalidades dos produtos que rodam em servidores, e são apartados do aplicativo, sendo assim independente do equipamento do usuário.

Uma solução que é bastante utilizada para o desenvolvimento de aplicativos para celulares, são os aplicativos híbridos. Estas soluções são escolhidas pois são mais baratas, não necessitam que sejam reescritos diferentes versões de códigos, para diferentes sistemas operacionais como, Android, iOS e Windows Phone. Porém muita gente torce o nariz quando alguém fala a palavra app híbrido.

Mas então, o que é, e como funciona um app híbrido?

Um aplicação híbrida nada mais é que um app convencional rodando um WebView, que por sua vez comporta um Web App, onde fica realmente todas as funcionalidades do aplicativo. Vamos com calma que vou explicar por partes.

Desenho mostrando como é estruturado uma aplicação híbrida

Quando falo app nativo, é um aplicativo convencional fazendo um papel de comunicação entre o sistema operacional e o WebView. Também é a camada onde é compartilhado, por meio de plugins, alguns recursos necessários, como o GPS e a câmera.

Uma WebView, é uma versão mais simplificada de um navegador, sem a maioria dos recursos, como a barra de endereços por exemplo, e normalmente é executado em “tela cheia”. Por ser usado uma WebView, não necessariamente o Web App precisa estar na internet, os arquivos que a compõem, podem estar contidos no próprio arquivo que é instalado no dispositivo, sendo assim é possível ser executado offline.

Um Web App, como o próprio nome diz, é realmente uma aplicação feita para ser executada pela web, utilizando-se das tecnologias HTML, CSS e JavaScript, bons exemplos são, o Google Docs e WhatsApp Web. No nosso caso aqui, é criado um Web App, de forma que “simule” um leiaute mais próximo possível de uma interface nativa. É aqui que as pessoas normalmente reclamam desse tipo de solução, pois acaba sendo aplicado um nível maior de abstração (para entender melhor sobre abstração, leia este texto do Gabriel Toschi http://www.deviante.com.br/noticias/ciencia/abstrair-e-conquistar-chave-da-computacao/), onde as instruções ainda necessitam ser interpretadas e compiladas. Isso poderia ser até verdade, mas atualmente essa diferença de performance é muito pequena, devido à evolução dos interpretadores de HTML e scripts. Para mostrar, que os aplicativos híbridos não tem tanta diferença em performance, veja os exemplos como Uber e Instagram.

Hoje em dia, aplicativos híbridos, não são sinônimos de aplicativos lentos.

Não estou falando que esta solução é a resposta para todos os problemas. Se o aplicativo for distribuído somente para celulares Android, ou então for somente destinado aos iPhones, com certeza a melhor opção é o desenvolvimento de uma solução totalmente nativa. Também existem outros casos em que o mais recomendado não é o híbrido, mas o objetivo deste texto é mostrar que os apps híbridos existem e que estão no meio de nós!

Links referentes:
https://developer.telerik.com/featured/what-is-a-webview/
https://clearbridgemobile.com/mobile-app-development-native-vs-web-vs-hybrid/
https://www.codementor.io/fmcorz/react-native-vs-ionic-du1087rsw
http://showcase.ionicframework.com/apps/top
https://eng.uber.com/m-uber/
https://developer.telerik.com/featured/what-is-a-hybrid-mobile-app/
http://www.deviante.com.br/noticias/ciencia/abstrair-e-conquistar-chave-da-computacao/