E aí pessoal,
existem diversas formas de ingressar no mundo mobile, cada uma tem suas particularidades, vantagens e desvantagens (não há certo nem errado), mas sempre fica a dúvida: nativo ou híbrido?
Essa é uma decisão que deve ser baseada em diversos fatores e vou tentar ajudá-los. Quais as diferenças entre esses dois mundos?
Nativo
No desenvolvimento nativo manipulamos o ecossistema de cada plataforma (Android ou iOS) de forma isolada, ou seja, temos que conhecer as ferramentas, linguagens, sistemas operacionais de cada mundo.
Vantagens
É possível aprender muitas coisas diferentes de mundos diferentes e ver as diferenças e semelhanças de um código Android e um iOS. Por exemplo: qual a diferença entre Swift e Kotlin? Como é o ciclo de vida de uma app Android e iOS? O que eu posso fazer no Android e não posso fazer no iOS?
Desvantagens
Escrever a mesma app duas vezes e cuidar de dois códigos distintos pode ser trabalhoso se não houver um cuidado com boas práticas de programação.
Híbridos
Para tentar resolver esse problema de manutenção de dois ou mais códigos para a mesma app, criaram uma forma de escrever apenas um fonte e "convertê-lo" para Android e iOS. Essa forma foi chamada de desenvolvimento híbrido. Existem diversos ambientes para desenvolvimento híbrido: Córdova e IONIC são os principais.
Vantagens
- A app possui apenas um código-fonte que é "exportado" para todas as plataformas.
- Na teoria, não precisa aprender o funcionamento específico do Android ou iOS.
- Usa Javascript, HTML, CSS e quaisquer tecnologias Web para escrever apps.
Desvantagens
- Essa app rodará numa webview (um navegador disfarçado), por isso acessar recursos de hardware específicos pode ser beeeem chato. Geralmente existem libs para intermediar o acesso a esses recursos.
- Bugs dependentes de plataforma são chatos para serem resolvidos.
Bônus: mundo """"híbrido""""
Vocês podem ter se perguntado sobre Xamarin e React-Native. Esses caras ficam numa categoria que eu chamo de """"híbrido"""": você faz apenas um fonte, maaas eles não geram uma webview. Eles geram código nativo!
Vantagens
- Código nativo. \o/
- Apenas um fonte.
- Usa C# ou Javascript, se for Xamarin ou React-Native.
Desvantagens
- Para gerar esse código nativo, precisa do Android Studio (Android) ou do Xcode (iOS) e o Xcode só roda no Mac (ou nos Hackintosh... Hehehe).
Conclusão
Para aqueles que quiserem conhecer as particularidades do Android e iOS, usar o Android Studio e Xcode, estudar Kotlin e Swift recomendo o desenvolvimento nativo.
Porém, se quiserem ir pro híbrido ou """híbrido""", ficaria com a turma do React-Native e Xamarin.
PS.: As apps da Alura são nativas, com Java (Android) e Swift (iOS). ;)
Abraços.