Para quem está pensando em aprender programação para mobile ou pensando em contratar um desenvolvedor, toma conhecimento de que existem vários formas de programar para celulares. Os principais que você certamente irá ouvir são “híbrido” e “nativo”, que são duas coisas completamente diferentes de se fazer.
Qual a diferença entre híbrido e nativo?
Vou falar o que é cada um deles, dai em seguida vemos as diferenças, vantagens e desvantagens de cada um.
Aplicativo Nativo
É desenvolvido na linguagem de programação “ideal” para o dispositivo. Se for para Android será Java, se for para iOS será Objective C ou Swift, se for para Windows Phone certamente C#. Desta forma, o aplicativo terá 100% dos recursos do celular acessíveis, ou seja, ele foi feito da “maneira certa” então funcionará muito bem! Observe que se quiser fazer um app que funcione tanto em Android quanto iOS, e Windows Phone, você precisará programar em 3 linguagens diferentes, e ter uma máquina Windows e um Mac.
Aplicativo Híbrido
É um aplicativo que abre dentro de si uma página web, e essa página web é seu sistema. Feito basicamente com HTML e JavaScript, sua aplicação na verdade ficará dentro de uma aplicação nativa, porém feita em uma linguagem que não é a “ideal” para o dispositivo. Com isso não terá um desempenho tão bom e a interface não será tão “natural” quanto os aplicativos nativos. O acesso aos recursos do celular como GPS e câmera poderão ser feitos, mas não serão tão eficientes quanto o nativo.
Analogia do app Híbrido e Nativo
Se você deseja andar na cidade o ideal é que vá de carro (nativo), pois poderá ir ouvindo sua música favorita, no ar condicionado e sem se preocupar se irá chover ou não. Por outro lado, indo de bicicleta (híbrido) você pode fugir do trânsito e chegar muito mais rápido ao seu destino, mas com algumas limitações.
Você quer chegar rápido gastando pouco (mesmo que um pouco suado e com a roupa amassada), ou prefere demorar um pouco mais, gastar mais, e chegar impecável ao seu destino?
Como escolher entre híbrido e nativo?
Criei algumas perguntas para te ajudar a escolher qual caminho seguir.
Quão rápido você quer seu aplicativo pronto?
É para ontem? Então o híbrido é a melhor saída, existem mais desenvolvedores que conseguirão desenvolver e a implementação poderá ser feita em bem menos tempo. O desenvolvimento nativo costuma levar muito mais tempo pois a programação é mais complexa e menos programadores estão aptos pra trabalhar nisso.
Você tem um desenvolvedor para Android e outro para iOS?
Se tem estes dois caras, tudo ok. Senão, o híbrido é a melhor solução, pois poderá gerar versão para os dois ambientes com a mesma base de código (e até pra Windows e Black Berry).
Seu aplicativo precisará ser atualizado com que frequência?
Se a resposta for “constantemente” (mais de uma vez na semana), o híbrido é mais adequado, porque parte do seu código poderá estar online e ser atualizado pelo sistema web dentro do aplicativo, sem precisar atualizar o aplicativo todo ou enviar novas versões para as lojas.
É apenas uma experiência seu aplicativo?
Vá de híbrido. Não gaste todas suas moedas em um aplicativo para “ver no que vai dar”. Invista menos fazendo com híbrido e se a ideia vingar, se os usuários gostarem e a coisa começar a crescer, ai sim valerá a pena investir no nativo. Neste momento até um investidor poderá ser convidado, já que a ideia já foi validada.
Você quer que seu usuário tenha a melhor experiência possível?
Então a resposta é nativo, pois eles apresentam o máximo de performance e a interface é 100% natural, o usuário (conscientemente ou não) percebe que o aplicativo é “fluído”, que responde rápido aos toques e que aparência é igual dos outros aplicativos do mesmo ambiente. Já o híbrido (em 80% dos casos) não fica idêntico a um aplicativo nativo, terá uma carinha própria.
Tabela comparativa
Espero que você tenha tido uma ideia das diferenças de um para o outro. Mas pra facilitar ainda mais segue uma tabela comparando as duas metodologias, dai você examina o que é importante ou não para você agora e decide.
Híbrido | Nativo (android/iOS) | Melhor | |
---|---|---|---|
Gráfico | HTML, Canvas, SVG | APIs Nativas | Nativo |
Performance | Lenta | Rápida | Nativo |
Aparência “natural” | Emulado | Aparência real | Nativo |
Recursos do equipamento | Muita | Total | Nativo |
Publicação nas lojas | Quase normal | Normal | Nativo |
Reutilização do código | Total | Nenhuma | Híbrido |
Custo de desenvolvimento | Médio | Alto | Híbrido |
Tempo de desenvolvimento | Baixo | Alto | Híbrido |
Facilidade de atualização | Fácil | Médio | Híbrido |
Conhecimentos requeridos | HTML5, CSS e Javascript | Java, ObjectiveC e Swift | |
Curva de aprendizado | Média | Lenta | Híbrido |
Maneiras e mais maneiras de ser híbrido
Enquanto no nativo temos uma linguagem certa para cada plataforma (normalmente), para fazer híbrido você pode usar um grande leque de ferramentas, bibliotecas e frameworks.
Atualmente os mais comuns são Cordova, e o Ionic. Muitos têm usado o React e Angula também para criar suas interfaces.
Híbrido, mais nativo
Isso é coisa de uns dois anos pra cá e vem tomando mais força. Te permite programar usando javascript, porém, gerar aplicações nativas para as duas principais plataformas (Android, iOS).