O que devo saber sobre aplicações Híbridas e Nativas
Tags: beginners, mobile, architecture
Published: 2021-12-22 12:28:08

## Introdução

Hoje em dia o uso do celular pessoal vem se tornando cada vez mais indispensável para as atividades do ser humano. Devido o aumento dessa necessidade, o mercado de TI, contém demandas consideráveis de programadores para os mais diferentes nichos de projetos para essa sub área. Quando estamos iniciando na área mobile, encontramos termos que podem confundir e ser um empecilho durante o caminho trilhado pelo estudante e muitas vezes por desenvolvedores experientes, pois a escolha de uma das abordagens podem refletir no futuro do seu produto de software relacionado a aplicações Híbridas e Nativas. Nesse artigo trago a diferença entre essas duas abordagens, além de mostrar casos usos vividos por mim durante minha jornada DEV.


![people hold phones](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/99h971289wx7jme13vzr.jpeg)

## Tecnologias Híbridas

As tecnologias híbridas ganharam um espaço marcante dentro do mundo mobile, pela sua praticidade, flexibilidade e pelo fato de usar linguagens queridinhas encontradas no mundo web como nosso amado Javascript como seu core de desenvolvimento.
Seu foco principal gira em torno de desenvolver apenas um código que será transpilado para ambos os sistemas operacionais mobile.
Quando existia apenas aplicações nativas, as empresas precisavam manter dois times especializados no desenvolvimento de cada sistema, o que custava rios de dinheiro para esses lugares, mas com a chegada desse recurso, aplicações com essa abordagem de software vem sendo escolhida com uma maior frequência. Além de conter uma infinidade de plugins para as mais variadas funções, o que enriquece o leque de desenvolvimento para o desenvolvedor.
Apesar de facilitar o desenvolvimento com apenas um código, as aplicações híbridas não são tão performáticas em relação às nativas, pois esta usa um esquema de "bridge" ou ponte, no qual transpila seu código de forma que este seja interpretado como um elemento nativo. Esse processo é oneroso ao sistema o que pode haver perca de performance.

## Tecnologias Nativas

Foi a primeira abordagem mobile criada. Como seu próprio nome diz, foi criada nativamente para atender sistemas especificos, no caso atual os mais famosos sistemas IOS e Android. As linguagens mais famosas usadas para desenvolve esse tipo de abordagem de desenvolvimento é o Swift com o foco no IOS e o Java ou Kotlin para aplicações Android.
Com o crescimento das tecnologias Híbridas o foco de desenvolvimento nativo é escolhido principalmente pela sua performance, já que esse tipo de abordagem foi pensada exclusivamente para sistemas específicos. Um dos seus focos principais também é a segurança, pois o número de falhas encontradas nesse quesito são bem menores comparadas a recursos híbridos. 
Antigamente um dos alvos principais das aplicações nativas era o acesso a recursos nativos do próprio smartphone, mas com o avanço dos projetos open source dentro de cada comunidade de aplicações híbridas, isso vem sendo mitigado e aos poucos essas opções são colocadas dentro do arcabouço delas.

## Caso de Uso 

Durante meus poucos anos atuando como desenvolvedor, estagiei e trabalhei em ramos diferentes dentro da TI. Não atuei mexendo com ambas as abordagens, mas participava dos ritos de planejamento e tinha ideia como eram projetados os produtos para cada caso. 
A um tempo atrás trabalhei em uma empresa voltada para IOT, onde seu produto principal eram fechaduras inteligentes que funcionava não especificamente pelo celular, mas este era sua principal funcionalidade. Certo dia resolvi perguntar o porquê do CTO ter escolhido usar linguagens nativas em vez de híbridas. Ele me respondeu que a nativa lhe proporcionava uma maior flexibilidade e performance para conexão com seus produtos. Como eles usavam o bluetooth para conectar com as portas, este encontrava apenas nos nativos. No tempo fez muito sentido e me contentei com aquela resposta.
Com o passar do tempo fui trabalhar em outros projetos e empresas e me deparei de uma forma mais concreta com tecnologias híbridas e aquela dúvida reacendeu. Após algumas pesquisas no npm e me deparei com bibliotecas que lidava com bluetooth também. Ainda não testei ambos para verificar se tinha discrepância entre a conexão de ambos, mas de acordo com comentários da própria comunidade esta parece funcionar realmente.

## Conclusão

Após essa trajetória foi possível ver que ambas as alternativas têm pontos a se analisar dependendo do seu caso de uso. Hoje em dia com o avanço de tecnologias híbridas e pela pressa de entregar demandas em períodos curtos esse tipo de abordagem vem sendo queridinha. Logo escolher aplicações nativas é um assunto mais de nicho, pois provavelmente seu uso vai para produtos que precisam de alta performance em seus produtos. 
Não podemos descartar as nativas, pois muitos sistemas já são desenvolvidos nativamente e mudar para uma abordagem híbrida não faz muito sentido. Mas o uso do nativo como primeira opção atualmente pode não ser uma boa escolha.