Android: Qual Tecnologia de Desenvolvimento Utilizar?
(9461) (12)
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
CategoriaEngenharia de Software
Autor(es)Vaughn Vernon
EditoraAlta Books
Edição1ª
Ano2024
Páginas160
Tudo bem?
Neste artigo vou dar minha opinião sobre qual tecnologia utilizar para o desenvolvimento de aplicativos Android. Minha opinião. E, acredite, não vou "puxar sardinha" para o Kotlin - e nem para nenhuma outra tecnologia.
Certamente o conteúdo deste artigo será de maior valia àqueles que estão indecisos sobre o que utilizar no desenvolvimento de apps Android.
Confesso que também aguardo a sua opinião na área de comentários, pois hoje, com a quantidade de caminhos disponíveis para seguir no dev Android, essa acaba sendo uma das principais discussões.
Antes de prosseguir, não esqueça de se inscrever na 📫 lista de e-mails do Blog para receber em primeira mão todos os conteúdos exclusivos.
A seguir os tópicos abordados em artigo:
- Por que este assunto agora?:
- Aplicativos bem sucedidos;
- Existe uma melhor tecnologia de desenvolvimento?:
- O meu problema com frameworks:
- A grande próxima tecnologia de desenvolvimento;
- Slides;
- Conclusão.
Por que este assunto agora?
Como o Blog e canal Thiengo Calopsita estão disponíveis desde Setembro de 2013, não é incomum inúmeras dúvidas chegarem em caixa de entrada 📬.
Algumas dessas dúvidas acabam sendo repetidas e assim a melhor opção é então criar um artigo sobre o assunto.
Uma das mais frequentes era "Como prosseguir com os conteúdos liberados no Blog?". Sendo assim foi criado um artigo somente sobre isto: Estudando Android - Lista de Conteúdos do Blog.
E apesar de a dúvida não ser exatamente essa "qual tecnologia utilizar no desenvolvimento Android?", ela é bem próxima disso.
Mais precisamente "Thiengo, o que você acha do Flutter?". Sendo assim foi escolhido criar algo mais completo, pois, acredite, até mesmo o Delphi é uma excelente tecnologia para desenvolvimento de aplicativos Android 😱.
Ok, mas quais são suas fontes?
Bom para mim que desde o início deixei claro que todo o conteúdo do artigo é a minha opinião ✌. Sim, não tenho (e nem sei se eles existem) resultados de pesquisas de empresas como: Comscore, Nielsen e Gartner.
Como falei anteriormente: o projeto do Blog e canal está disponível desde 2013.
Sendo assim não é incomum, principalmente vindo daqueles que estão iniciando no desenvolvimento Android, chegarem dúvidas frequentes, muitas delas perguntando sobre a melhor tecnologia para utilizar na construção de aplicativos.
Algo que também ocorre, mas com menos frequência do que as dúvidas de desenvolvimento, é a "solicitação de indicação de profissionais" para projetos Android.
Alias, há no Blog uma lista de profissionais, dezenas deles, somente para indicações. Se você acompanha o Blog já a algum tempo você deve fazer parte dessa lista e até já ter recebido contatos para jobs.
Dessas oportunidades de freelas que chegam até o Blog, muitas vêm de pessoas físicas precisando de developers para prosseguirem com suas ideias de aplicativos Android.
Mas também, ainda com menos frequência, empresas e profissionais de RH entram em contato solicitando indicações precisas, esses já informando o tipo de tecnologia que o profissional deve conhecer.
Acredite, não é fora do comum eles solicitarem indicações, por exemplo, de desenvolvedor Kotlin que domine o trabalho com a API KODEIN e também com a ReactiveX, API para programação assíncrona com fluxos observáveis.
Acrescente, ao conjunto de conhecimento tácito acima, as comunidades online que participo, onde há inúmeras discussões e anúncios de vagas - algumas, de maneira implícita, precisando de alguém com experiência na NASA 🤔 (sendo sarcástico aqui).
Resumo 📑: o artigo será baseado no que ando vendo e vivendo, desde 2013, na área de desenvolvimento de aplicativos Android - solicitações de indicações (PF e PJ); anúncios de vagas; dúvidas e discussões em caixa de entrada, comunidades e redes sociais do Blog.
Aplicativos bem sucedidos
Antes de prosseguir para as tecnologias de desenvolvimento Android em especifico, eu queria lhe fazer uma pergunta e, se possível, responda com sinceridade:
O sucesso de um aplicativo Android está relacionado a tecnologia de desenvolvimento utilizada na construção dele?
Vou tentar facilitar a pergunta, consequentemente a resposta:
O Instagram, por exemplo, que utiliza HOJE o framework React Native, segundo o Facebook informa. Este aplicativo somente tem sucesso por causa do React Native?
Detalhe importante: o framework React Native é do Facebook como também é o Instagram.
Enfim, sem rodeios, acredito que você concorda comigo 🙄, até porque não é preciso ser o "NERD das galáxias" para saber disso: a tecnologia utilizada para o desenvolvimento do aplicativo não afeta em nada no sucesso dele.
Thiengo, "em nada" é muita coisa. Você realmente acredita nisso?
Certamente. Se o profissional for excepcional na tecnologia que ele utiliza para o desenvolvimento de aplicativos Android, o já conhecido Delphi, por exemplo. Acredite, esse profissional desenvolve qualquer ideia de app "no luxo" 😎.
Hoje o Facebook informa que o Instagram e o próprio aplicativo do Facebook utilizam o React Native. Mas ambos os aplicativos vieram bem antes deste framework existir.
E, adivinhe? 🙈
Os dois apps já eram muito populares. E confesso que não vi nada mudar depois que esses passaram a utilizar um framework ao invés de somente alguma das linguagens oficiais de desenvolvimento: Kotlin, Java, C++ e C.
Thiengo, "somente"?
Sim. Continue lendo o artigo que você vai entender que mesmo com os populares frameworks de desenvolvimento Android, ao menos o conhecimento de alguma das linguagens oficiais ainda é prudente.
Bom, o que temos até aqui?
É improvável que a tecnologia que você utilize no desenvolvimento de seus aplicativos Android tenha papel considerável no sucesso de algum deles.
Obviamente que a qualidade do produto final, o aplicativo, é necessária, mas isso você consegue com inúmeras tecnologias de desenvolvimento Android, não existe uma que oferece mais qualidade do que a outra, a diferença aqui está na habilidade do desenvolvedor com a tecnologia utilizada.
Ok, Thiengo, mas eu ouvi dizer que o Ionic 🤢 não é tão bom quanto o restante.
Certo, mas você ouviu isso de alguém que tentou um "Hello World!" com o Ionic ou de um especialista em Ionic? 😶 É importante levar isso em consideração.
Existe uma melhor tecnologia de desenvolvimento?
No geral, como informado anteriormente: não há uma melhor tecnologia para desenvolvimento de aplicativos Android.
Mas há tecnologias que eu, novamente, minha opinião baseada no que venho acompanhando em mercado, considero de maior destaque 🏆 em determinados contextos.
A seguir vou indicar essas tecnologias que acredito que serão úteis principalmente se você estiver iniciando 🧐 no desenvolvimento de aplicativos Android.
Para freelancer
Hoje em dia é muito comum um freelancer ser contratado com a responsabilidade de desenvolver projetos não tão grandes (exemplo: rede social e marketplace. Estes são projetos grandes), mas que sejam entregues já para os dois principais sistemas operacionais mobile: Android e iOS. 😲
Quando falo "freelancer" não estou incluindo aqui profissionais de desenvolvimento que firmam contratos na indústria como PJ ao invés de PF. Estes entram na área de profissionais que devem ficar de olho no que a indústria anda solicitando em tecnologia - um tópico posterior neste artigo.
Enfim, voltando aos freelancers 💰... é prudente apostar em frameworks que permitem o desenvolvimento cross-platform, desenvolvimento que gera um compilado em mesmo nível de linguagem oficial 😒.
Sendo assim temos dois populares hoje em dia:
- React Native - Facebook;
- Flutter (DART) - Google.
Ok, Thiengo. Mas ainda há duas opções. Com qual você seguiria se estivesse iniciando no mundo de desenvolvimento Android como freelancer?
Continue lendo!
Bolsa de valores
Dos dois frameworks citados apenas o Flutter é de uma empresa, Google, que também controla um dos dois principais sistemas operacionais mobile, no caso o Android.
Uma outra informação: tanto o Google quanto o Facebook são concorrentes diretos também em bolsa de valores 🤑.
Concorrentes diretos?
Sim. Ambas são empresas de tecnologia, mais precisamente: de Internet. Ou seja, se o mercado de tecnologia ficar em baixa, os papéis, ações, de ambas as empresas tendem a cair. Se ficar em alta, ambas as empresas tendem a ter seus papéis valorizados.
Isso porque são as duas do mesmo setor na indústria.
Ok, Thiengo, mas ainda não entendi? 😅
O comum é que um investidor em ações, independente do tamanho dele, invista em setores distintos e não em empresas do mesmo setor, isso, para os ganhos conseguirem, no mínimo, zerarem as perdas.
O que vou falar parece um pouco utópico 😴, principalmente se você não conhece nada sobre bolsa de valores. Mas, por exemplo, se o Google entra em um viés de baixa muito mais crítico do que o Facebook, não deixa de ser uma boa estratégia dificultar a entrada de aplicativos desenvolvidos com React Native, entrada na Google Play Store.
Obviamente que os apps populares, já desenvolvidos com o React, não seriam prejudicados. Prejudica-los certamente seria um tiro no pé. Mas dificultar a entrada de novos... provavelmente promoveria as tecnologias Google para desenvolvimento Android.
É aquilo, como falei, parece utópico, mas não duvide de estratégias de empresas privadas para aumentar o valor delas em bolsa.
Quer alguns exemplos de estratégias mais utópicas do que apenas bloquear a ferramenta de uma empresa concorrente? Dê uma pesquisada nas empresas a seguir para saber o que aprontaram em stock marketing:
- OGX Petróleo e Gás Participações S.A. 🤬;
- Enron Corporation 🤮.
Como freela, eu apostaria no framework do Google
Com isso, querendo seguir como freelancer, eu apostaria no Flutter, pois as chances de o Flutter ser descontinuado são menores do que a do React Native.
Tendo em mente, em um cenário catastrófico àqueles que apostaram todas as suas fichas em frameworks 🤯, que a Apple, também concorrente do Google e do Facebook em bolsa de valores, pode querer dificultar a entrada, na App Store, de aplicativos desenvolvidos com o React Native ou com o Flutter.
Ou seja, no pior cenário, aqueles que apostaram no Flutter 😬 continuarão ao menos desenvolvendo para o Android.
Thiengo, acho que você está viajando 😡. Como que é possível saber se o aplicativo foi desenvolvido ou não com um determinado framework?
Confesso que eu não tenho expertise na construção deste tipo de algoritmo: que identifica padrões em código compilado.
Mas não duvide da capacidade de engenheiros de software que trabalham especificamente com isso. 🛠 Eles provavelmente conseguem desenvolver algoritmos que encontram padrões diferentes, em compilados, de códigos desenvolvidos em linguagens oficiais.
Para a indústria
Se você quer mais oportunidades em mercado, oportunidades de emprego. Sem mais: Kotlin ou Java, done! 😮
Não vou forçar a barra.
Assim que você terminar de ler este artigo dê "uma volta" em grupos e comunidades de desenvolvimento Android. Os anúncios de oportunidade de emprego, em 99% deles (sem exagero 🤔), são para profissionais Kotlin, principalmente (olha eu puxando sardinha 😁), ou Java.
Thiengo, você está afirmando que os frameworks não têm espaço na indústria? 🤥
Todas as tecnologias têm espaço na industria, o que estou lhe apontando são as que têm mais espaço para que você seja contratado.
Sobre o mérito do salário 😀: o que vejo é diferença se você entra como Junior, Sênior, Analista ou Engenheiro de Software. A tecnologia em si não influencia no salário, digo, das tecnologias populares citadas neste artigo.
Obviamente que se você for desenvolvedor C ou C++ 👴, tendo de utilizar o NDK, há grandes chances de você ser mais bem pago em todas as posições citadas, pois você acaba sendo um profissional escasso em mercado.
Desde 2013 aqui e ainda nem mesmo esbarrei com algum desenvolvedor Android que utilize ou o C ou o C++ junto ao NDK. Então estou assumindo que este tipo de profissional é escasso - lei de mercado: se você é escasso e há demanda, então você vale mais 👍.
Sobre o mercado virar e alguma outra tecnologia "tomar conta" da industria de aplicativos Android ao invés do Kotlin e do Java: é óbvio que isto pode acontecer.
Mas confesso que não estou vendo o mínimo indicio de que isso vem a ocorrer. 🙄
O problema do Java no Android
Somente se você estiver iniciando no mundo de desenvolvimento é que será uma novidade para você saber que o Java na verdade pertence a Oracle e que está empresa tem litígio contra o Google devido ao uso do Java no Android. 😱
É, na verdade o "devido ao uso do Java no Android" é um breve resumo da briga judicial entre as empresas.
Mas a real preocupação em relação a isso é que o Google não perdeu tempo em adicionar, como linguagem oficial Android, uma que tivesse características similares ao Java, no caso, a linguagem Kotlin.
Linguagem que por ser mais nova, de 2010, tem uma curva de aprendizagem mais simples, principalmente para os iniciantes em desenvolvimento de aplicativos Android.
Juntando essas informações, o medo que fica é: será que o Java continuará sendo uma linguagem oficial de desenvolvimento Android? 👀
8,8 bilhões de dólares já foram perdidos pela Oracle devido ao sucesso do Android. Não é claro ainda se esse valor já foi pago pelo Google a Oracle. Sempre há a história das "instâncias a recorrer". ⚖💸
8 bilhões é muita grana, independente do tamanho da empresa.
Para o Google: até onde vale a dor de cabeça? 🤕 Não seria melhor manter somente o Kotlin como linguagem JVM?
Thiengo, e o OpenJDK?
Sobre o OpenJDK: aparentemente as coisas não são tão simples assim, pois até hoje ele vem como kit opcional no Android Studio IDE.
Em resumo: apesar do Java também ser uma excepcional linguagem de programação 👌, não dá para saber se continuará ou não como linguagem oficial no Android, algo que dá para afirmar em relação ao Kotlin.
Então eu fico com qual linguagem?
Eu, Vinícius, fico com o Kotlin (puxando sardinha 😂). Tanto que não medi esforços para migrar de linguagem assim que o Kotlin foi anunciado como linguagem oficial Android.
Mas é principalmente devido a isso: a possibilidade de o Java deixar de ser uma linguagem oficial. ☠
Thiengo, ouvi falar que o Java deixará de ser gratuito 😭. É sério isso?
Então, eu confesso que não sou um evangelista Java a ponto de destrinchar a documentação oficial, incluindo os releases de novas versões e produtos da Oracle.
Mas eu também fui atrás desse assunto, com profissionais que trabalham com o Java já a décadas.
O que fui informado é que a Oracle sempre fez isso: avisou, de maneira oficial, que iria começar a cobrar licenças para uso do Java. Mas que a empresa nunca chegou a efetivar a cobrança.
Então temos que: pode acontecer de o pagamento de licenças Java ser necessário, mas é improvável que ocorra devido ao histórico 🤥 dessa informação.
Para hobby ou empreendedor(a) solo
Antes de continuar eu volto a enfatizar: a qualidade do aplicativo depende mesmo é da habilidade do desenvolvedor (ou desenvolvedores) com a tecnologia utilizada.
Outra importante informação: "qualidade" não é sinônimo de "sucesso". O sucesso de um aplicativo envolve muito mais variáveis do que somente ter bons programadores alocados em projeto. 😁
Por que estou informando isso?
Para o desenvolvimento de uma ideia de app que você teve em mente, uma oportunidade de negócio pouco explorado, ou somente o desenvolvimento como hobby (acredite, tem dentista que segue os conteúdos do Blog e canal porque gosta de desenvolver nas horas vagas 😮).
Para esses contextos, hobby e empreendimento solo, é prudente utilizar a tecnologia que você já conhece, para já colocar a mão na massa e ver se o mínimo necessário desenvolvido já traz alguma informação sobre se vale a pena ou não seguir com o desenvolvimento.
Conheço desenvolvedores que utilizam Delphi para criar seus aplicativos. Um deles está até mesmo largando mão do Java junto ao Android Studio IDE para voltar ao Delphi Rio 🧙♂, onde ele se sente mais confortável em entregar o projeto com maior qualidade.
E, acredite, tem profissionais que utilizam o Basic para desenvolvimento de apps Android. Alias, um deles é também seguidor do Blog e ganha uma quantia boa com aplicativos de verificação de FGTS.
Ok, Thiengo. Mas por que essas tecnologias "marginais" você indica somente para empreendedores solo ou para aqueles que programam como hobby?
Na verdade não é que "eu as indico", mas se você já consegue desenvolver em alguma tecnologia que também permita o desenvolvimento de aplicativos Android, então permaneça com ela até o momento em que o "mundo" lhe forçar seguir com outras peças.
O mundo?
Sim. Veja o cenário:
Você é um excepcional desenvolvedor Android utilizando o Basic. Porém você quer encontrar vagas no mercado, carteira assinada.
A pergunta: existem vagas para desenvolvedores Android que utilizam Basic?
Deve existir, mas certamente será algo difícil de encontrar 🤞, pois além do Basic não ser uma tecnologia popular para desenvolvimento de aplicativos Android, ela também não é oficial para está plataforma mobile.
No caso do empreendedor solo eu encorajo ainda mais a utilizar o que ele tem em mãos. Pois muitas vezes precisa-se de algo pronto o quanto antes, para conseguir, por exemplo, mais pessoas no projeto ou até investimentos.
Esperar aprender a tecnologia XYZ, que é utilizada somente para desenvolvimento Android, para depois desenvolver à ideia 😴, isso certamente vai levar muito mais tempo, mesmo se a curva de aprendizagem da tecnologia for pequena.
O meu problema com frameworks
Caso você não saiba, eu vim do mundo do desenvolvimento Web. Fui por muito tempo um profissional full-stack, desenvolvia no front-end e no back-end. 🤔
No back-end eu utilizava, e ainda utilizo quando necessário, a linguagem PHP. E uma das características do PHP é a quantidade de frameworks disponíveis.
CakePHP, Codeigniter, Laravel, Zend Framework, Symfony, Yii, e so on! 😰
É uma infinidade de frameworks. A pergunta que fica é: qual framework utilizar?
Com o PHP eu me vejo com mais propriedade para opinar em relação ao contexto "frameworks", e seguramente afirmo: aprenda primeiro a desenvolver na unha, sem framework. 😨
Todos esses frameworks, independente do que você escolher, têm limitações e há chances, mesmo que pequenas, de uma hora ou outra lhe deixarem na mão.
Mas no caso do PHP é ainda menos crítico do que no caso do Android. Pois com frameworks PHP, se uma característica XYZ não for atendida pelo framework, você já está ali com o PHP, então é prosseguir com a construção da funcionalidade na unha mesmo. 🤘
No caso do Android, se o framework utilizado não tiver APIs ou plugins que permitam um algoritmo ou funcionalidade necessária em projeto, você terá que utilizar alguma das linguagens oficiais, ao menos com os dois frameworks mais populares (Flutter e React Native) será assim.
Mas você focou somente no estudo do framework. E agora? 😓
Agora é preciso utilizar alguma das linguagens oficiais! Note que neste caso estou assumindo que você já rodou as comunidades de seu framework e o StackOverflow... e nada de solução.
Então eu devo parar de utilizar os frameworks?
De forma alguma! Se você está tendo resultados satisfatórios 💪 com essas tecnologias, então faça o óbvio, alias, faça isso para qualquer tecnologia de desenvolvimento Android que você esteja tendo bons resultados:
Foque e se torne especialista, domine os plugins, o principal IDE e as APIs disponíveis - crie até mesmo suas próprias bibliotecas e as disponibilize, se possível, a comunidade em seu repositório público.
Em minha opinião: quando você é especialista na tecnologia utilizada é muito difícil você encontrar alguma barreira no momento do desenvolvimento. 👏
A grande próxima tecnologia de desenvolvimento
Este é o tópico que mais vejo como relevante em todo o artigo: a grande próxima tecnologia. 🥇
Na época em que construo este artigo, Outubro de 2019, o Flutter era a tecnologia mais comentada junto ao React Native, isso devido a elas serem novidades em relação a outras tecnologias para desenvolvimento Android.
Logo que iniciei no desenvolvimento Android, em 2013, dois outros frameworks eram muito comentados e utilizados: PhoneGap e Titanium. 🙂
Depois de um certo tempo, se não me engano um pouco mais de um ano, veio o Ionic 😐. Então veio o Kotlin, ainda sem ser linguagem oficial. 😤
Deu para entender?
A todo momento está surgindo a "super nova tecnologia de desenvolvimento Android". 👎
Alias, isso é comum também em outras áreas. Pergunte aos profissionais JavaScript que iniciaram com Dojo e jQuery, a quantidade de novas bibliotecas que não param de surgir no JS.
Será que realmente vale a pena a todo momento ficar "mudando de galho"? 🤔
Uma vez, em sala de aula, ouvi um professor falando que um bom desenvolvedor estuda uma nova linguagem a cada ano. 😣
Hoje, já com mais experiência na indústria e em desenvolvimento, vejo que isso não é verdade.
Uma tecnologia de desenvolvimento, linguagem ou framework, tende a ser grande o suficiente para que em apenas um ano você não se torne uma autoridade nela: alguém que consiga criar aplicativos dos mais variados domínios, simples ou complexos, utilizando somente aquela tecnologia.
Em minha opinião, ficar mudando de tecnologia, sempre aderindo à mais atual e "poderosa" não leva o programador além da mediocridade, a média. 🙄
Não há tempo e espaço para se tornar especialista em toda nova tecnologia de desenvolvimento que aprece. E o surgimento de uma nova tecnologia não indica, em hipótese alguma, que as já existentes estão depreciadas.
E, acredite, hoje o que mais se fala é do Flutter e do React Native, em pouco tempo você verá cursos e produtos de outras novas "super tecnologias" que continuam surgindo e sendo utilizadas por "trocentos milhões" de aplicativos "bem sucedidos". 👀
Slides
Conclusão
No conteúdo do artigo acima você deve ter notado que em nenhum momento eu abordei "processamento das tecnologias para desenvolvimento Android".
Certamente querer apontar alguma tecnologia como sendo melhor em processamento, mesmo com "provas", seria no mínimo inapropriado. Esses são testes de marketing, para mostrar que "o meu produto é melhor do que o seu".
Em desenvolvimento de software o que realmente faz a diferença é a ideia de projeto e a habilidade do desenvolvedor em relação a tecnologia que será utilizada no desenvolvimento.
É improvável que exista algum aplicativo de sucesso que conseguiu isso, o "sucesso", porque foi utilizado em seu desenvolvimento a tecnologia Kotlin, Flutter, React, Delphi, so on. A influência da tecnologia, em minha opinião, é próximo de zero.
Mas enfim, tenho certeza que você não concorda comigo em todos os pontos. Pode ser até mesmo na parte em que falo sobre a bolsa de valores, que para mim tem sim muito efeito.
Então... deixe nos comentários a sua opinião sobre o assunto. Será um prazer discutir isso contigo.
Gostou do conteúdo? Não deixe de compartilhar e de se inscrever na lista de 📧 e-mails do Blog para receber em primeira mão os conteúdos Android publicados com exclusividade aqui.
Abraço.
Comentários Facebook