13
respostas

Mobile? Por onde começar?

Olá pessoal Estou interessado em aprender mais sobre o mundo mobile, desenvolver aplicativos tanto para Android quanto para IOS. Bom, eu tenho uma grande logica de programação, já trabalho com Java a 3 anos e entendo bem do funcionamento, estive vendo aqui na alura o Xamarin e comecei a aprender C# e vi que é bem parecido com o Java e já estou tendo uma enorme facilidade. Por incrível/estranho que pareça meu nível de conhecimento em HTML e CSS é pessímo e tive vendo muitas pessoas que recomendam o Cordova e o Ionic além do React Native. Chega de enrolação, por onde é melhor começar? Continuo estudando para desenvolver Xamarin? Mudo para Cordova, Ionic ou React? Ou começo logo desenvolvendo no Android Studio? Se eu não tenho Mac? Como vou programar para o IOS replicando o que fiz no Android Studio?

13 respostas

Boa tarde Matheus, meu conselho seria mesmo uma tecnologia híbrida, pois para desenvolvemos para iphone/ipad precisa mesmo de um computador apple.

Com relação as tecnologias híbridas, o react native é bem legal e por ser do facebook tem um grande suporte por trás né... Agora é pessoal mesmo a escolha da tecnologia.

Mas em resumo você tem dois caminhos... aprender as tecnologia s nativas de android e ios ou escolher um ou mais tecnologias híbridas

Obrigado pela resposta guilherme. Porém para aprender IOS nativo só com Mac certo? Então basicamente a minha unica solução é hibrido ahah

Matheus, eu nao desenvolvo pra mobile ainda (quero aprendender logo), mas ja fui em algumas palestras de tecnologia e varios palestrantes falaram a mesma coisa.

Que sai muito mais barato pra empresa ter uma equipe que desenvolve em plataforma hibridas do que manter equipes que desenvolvem em plataforma nativa.

Acredito que alem da facilidade de compilar um único código para varias plataformas pode ser que você encontre mais oportunidades no mercado.

Valeu Felipe, é que em outro tópico eu vi a desenvolvedora do APP da Alura dizendo que era interessante aprender cada uma por si só pois tem BUGs específicos de cada plataforma então eu fique na duvida de o que fazer. Ainda estou na duvida em outra questão, qual melhor? Xamarin, Cordova, React ou Ionic? Seus pros e contras alguem consegue me dizer?

Alguem?

Também tendo a mesma dúvida :(

Gostei do tópico! Deu pra dar um norte. Valeu mesmo.

Gostaria de alguem que entendesse bastante de mobile para opinar

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.

Felipe, parabéns pelo resumo.

Acredito que o que fica dessa discussão é que a escolha vai realmente depender de cada equipe/empresa.

Matheus, pelo que você disse, acho que faz mais sentido continuar pelo caminho do Xamarin, com base em seu conhecimento e experiência com Java, com certeza você vai tirar proveito desse caminho de maneira mais rápida.

De qualquer maneira se você deseja gerar o código nativo para Mac vai precisar do Mac OS X.

Felipe ótima explicação, muito obrigado.

Pedro, em relação a sua ultima frase, utilizando o APPCode da JetBrains não consigo programar SWIFT?

Consegue, desde que esteja utilizando o OS X.

Veja na página de download ou na página específica de requisitos, os requisitos do sistema para instalação do AppCode:

  • macOS 10.11 or higher
  • Xcode 8.2.x-9.0
  • 2 GB RAM recommended

Eu estava nessa de aprender Xamarin aqui na Alura, até me deparar com o maldito XAML, que eu peguei trauma. Não consegui aprender XAML de jeito nenhum, então fui pro Córdova e IONIC. Estou estudando front-end pra passar a desenvolver usando Córdova e IONIC, principalmente depois que vi que um amigo desenvolveu um app e ficou muito bom e rápido usando Córdova.

Mas caso alguém tenha alguma dica de como aprender XAML, eu corro de volta para o Xamarin, porque C# é minha linguagem favorita!