Passado, Presente e Futuro do Desenvolvimento Android

Com mais de 80% de participação no mercado, o Android é hoje o sistema operacional (SO) dominante. Ele está presente em incontáveis modelos de smartphones e tablets, assim como em muitos outros dispositivos. Com base nisso, alguém poderia pensar que programar para Android é simples e fácil. Ou é?

A alguns anos atrás, Rodolfo ainda cantava nos Raimundos, Malu Magalhães era uma criança, Vinny “estourava” com “Mexe a Cadeira” e desenvolver para Android era muito complexo. Os desenvolvedores tinham muitos problemas mesmo ao construir aplicações super simples para Android.

(Referência: SmashingMagazine)

Por que? Pois bem, querido leitor, os problemas estavam por toda parte:

  • IDEs bugadas – Você já tentou consertar seu carro com uma pá? Ou tentou pegar meninas dirigindo um Del Rey do seu avô? No mundo Android, nós tínhamos uma IDE oficial para desenvolvimento – Eclipse, ele tinha uma tonelada de problemas que poderiam deixar você louco em 10 minutos. O plugin ADT do Eclipse era bugado, lento e hostil para projetos mais complexos. Rapidamente ficávamos doente e a espera de um milagre.
  • Fragmentação do SO – A versão Gingerbread (2.3.7) do Android ocupava boa parte do mercado (pelo menos de 15% à 20%) entre as versões existentes do SO. Como você deve saber, o Android passou por uma revisão completa com a versão 4.0 (Ice Cream Sandwich) – chegaram novos elementos de interface, novas APIs, novas densidades de tela… Com isso tivemos que ser cuidadosos ao otimizar e programar nossos apps para funcionar bem tanto nas versões novas do Android quanto nas antigas. Tudo isso afetou muito nosso processo de desenvolvimento e resultou no aumento do tempo de desenvolvimento, e também em mais bugs.
  • Emuladores lentos – Precisamos testar nossos apps em diferentes versões e dimensões de tela do SO Android, então temos que comprar pelo menos 20 diferentes dispositivos Android. Parece loucura? Ok, então podemos usar emuladores. Mas você já tentou usar o emulador padrão do Android? Ele é tão lento que chega a doer, rapidamente você se pega contando carros estacionados na frente do escritório enquanto o aplicativo está sendo instalado no emulador.
  • Interface com usuário (UI) – Aplicativos Android eram chatos. Se você cometer blasfêmia e der uma olhada nos apps iOS, você verá que eles sempre foram cheios de vida e cores. Tudo é animado, transformações, indo da esquerda para a direita, da direita para a esquerda e assim por diante… Nossos apps eram estáticos, e se quiséssemos enriquecer a experiência do usuário, o velho Gingerbread vinha matando todas as nossas esperanças e desejos.

Mas isso foi até 2013!

Um recomeço

Tudo mudou no último ano, e as mudanças foram acontecendo tão rápido que você poderia facilmente perder o controle delas e perguntar a si mesmo, “Quando foi que isso aconteceu???” O mais importante é que todo o ecossistema Android passou por várias melhorias – nós temos novos hardwares (relógio inteligente), novos software (Gradle, Android Studio), um novo SO (Android 5.0 Lollipop).

Todos contribuíram –  o Google, os fabricantes de dispositivos e os desenvolvedores. Todos tiveram o mesmo objetivo e se questionaram: “Ok, agora nós temos um SO estável, bilhões de apps com bilhões de usuários – como podemos simplificar e melhorar Android ainda mais? Como podemos fazer o processo de desenvolvimento melhor?” É aqui que os princípios “open access” e “open source” tem mostrado seu verdadeiro potencial – qualquer um pode fazer uma mudança. Uma melhoria. Alguma coisa nova.

Não é fácil resumir todas as mudanças, então fiz uma lista de coisas que são (na minha opinião) mais importantes:

  1. Android Studio

Nossa IDE favorita para desenvolvimento Android finalmente se tornou estável com a versão 1.0. Não vou entrar em muitos detalhes sobre o porquê do AS ser ótimo para o processo de desenvolvimento, porque esse assunto já foi tema de outros artigos. Vou apenas dizer que o plugin Eclipse ADT está oficialmente deprecated e eu recomendo fortemente que você migre todos os seus apps para o Android Studio. Salve o Rei!

  1. Gradle

Gradle é uma ferramenta de automação de projeto que tem substituído o Apache Ant como sistema de build padrão para aplicações Android. Ele ganhou muita popularidade entre os desenvolvedores Android porque permite automatizar praticamente tudo – dividir os apps em diferentes flavors, incrementar os números de build, definir fácilmente dependências externas e muito mais.

Por conta disso, Gradle tem se tornado um tipo de ferramenta de administração, com a qual podemos definir e manter as configurações dos nossos projetos. Ele é também uma das principais razões para o aumento no número de bibliotecas para automação de testes e servidores de build automatizado, que trouxe a integração contínua de uma vez para o SO Android. Mas nem tudo são rosas – Gradle é também muito criticado pela sua velocidade de execução. Ele pode ser realmente lento em projetos complexos, mas esperamos que esse problemas seja resolvido com a chegada das próximas versões e releases.

  1. Lollipop

Google diz que o Lollipop foi o maior avanço do Android desde o início da humanidade, e eles estão certos. Por toda parte houveram modificações e melhorias, mas ainda veremos como os usuários irão reagir a essas mudanças. Tivemos vários problemas com a atualização de dispositivos antigos para o Lollipop, mas esperamos que isso seja resolvido com as próximas versões.

  1. Lollipop por fora – Material Design

Várias pessoas tem escrito sobre o brilho da nova interface de usuário (UI) do Android, chamada Material Design. Ela é uma das mais importantes inovações no SO Android nos últimos anos, alterando completamente  o look and feel das nossas aplicações. O que eu mais gosto no Material Design é a mudança de princípios UX – tudo passa a ser importante. Não há nenhum pequeno detalhe que pode ser ignorado. Nós temos que responder a todas as interações do usuário, click, toque, etc. Porque, como Google diz, movimento fornece significado. Temos que ser ousados, abraçar novas cores vivas, usar animações em cada etapa, fontes grandes – simplesmente quer dizer – adicionamos vida aos nossos aplicativos. Além disso, Material Design é totalmente ajustável ao ecossistema Android e se adapta aos diferentes tamanhos de tela. Isso porque nossos apps tem uma aparência similar mas não igual em diferentes dispositivos.

  1. Lollipop por dentro – ART

Todo mundo falando sobre design, componentes UI, animações, cores…. Mas somos desenvolvedores e estamos interessados no que está por debaixo do capô. E, olha rapaz, o motor é pura beleza: uma nova marca de sistema de execução, chamada ART. Apenas para lembrar, ART não é uma coisa nova – ela foi introduzido como um sistema de execução alternativo no KitKat. Com a chegada do Lollipop, ele se tornou o sistema padrão substituindo completamente a Dalvik. ART é ótima por diversos motivos, mas irei mencionar apenas dois deles:

  • Ela usa compilação AOT (ahead –of time), o que significa que ela compila a linguagem intermediária (Dalvik bytecode) em um binário dependente do sistema. Isso resulta em um tempo de execução curto dos nossos apps, menos uso de CPU e menos consumo de bateria. Por outro lado, o processo de instalação é um pouco demorado.
  • Ela fornece suporte a multidex. Os arquivos dex Dalvik tinham uma grande falha – eles poderiam conter apenas 65.356 métodos. Por isso, tínhamos que organizar nossos apps de uma forma que o total de métodos não excedesse esse limite. ART organiza sua aplicação de uma forma que ela quebra o bytecode em múltiplos arquivos dex que são empacotados juntos em um único APK.
  1. Android está em todo lugar

Temos iniciado o desenvolvimento de apps para relógios, TVs e carros, mas porque parar aqui? Se você está sentado na sua sala tomando um cafézinho quente,  pare um pouco e olhe a sua volta. Você verá ao menos cinco coisas que irão rodar o SO Android nos próximos anos – a TV, o laptop, tablet, câmera, bicicleta, utensílios de cozinha, termostatos, carros, etc. Android começou como um experimento e tem provado que pode rodar bem em qualquer coisa que tiver um microprocessador.

  1. Melhoria na qualidade dos smartphones

Os smartphones ainda são os principais dispositivos para o SO Android. Por um longo tempo, tivemos problema com a qualidade dos aparelhos. Dispositivos Android antigos são muito mais feios e lentos que os iPhones antigos – iOS sempre foi mais fluido. Isso era especialmente verdade para dispositivos mais baratos produzidos por fabricantes chineses.

Felizmente, a qualidade e velocidade dos smartphones Android tem melhorado continuamente, então hoje temos uma infinidade de novos dispositivos que são adequados para o orçamento e necessidade de todos. Não interessa se você quer um telefone móvel com ótima resolução de câmera, design, processador ou bateria – temos isso tudo.

O que vem depois?

Deixando o Java para trás

Como temos resolvido principalmente nossos problemas com IDEs e versões de SO, podemos mudar o nosso foco para outros problemas do Android.

Na minha humilde opinião, o problema mais importante hoje no desenvolvimento Android é o Java. Não me leve a mal – eu acredito muito que o Java é uma linguagem de programação boa, mas eu também acho que essa é a hora certa para pensar fora da caixa. Precisamos começar a olhar para outras linguagens de programação que possam substituir o Java como a linguagem principal para desenvolvimento Android.

Basta olhar para nosso concorrente mais importante – Apple. Eles introduziram uma linguagem completamente nova chamada Swift que combina as principais características de diversas outras linguagens (como Python, Ruby ou C#). Nós já precisamos consideravelmente de mais tempo para desenvolver um mesmo app, agora seremos ainda mais lentos.

É por isso que precisamos de algo novo. Temos algumas ideias sobre qual linguagem poderia substituir o Java. Meus olhos estão na mira do Groovy. Sua sintaxe é bastante similar à do Java (atualmente ele construído sobre o Java) e já temos alguém trabalhando em protótipos. Também, não esqueça que ele é a linguagem padrão do Gradle – então porque não usá-lo para o desenvolvimento Android?  Ou talvez Scala (que está rapidamente ganhando novos usuários) ou Kotlin?

Ficando melhor na gerência de banco de dados

Eu gostaria também de apontar mais um problema – a API de gerência de banco de dados. Se mais uma vez você cometer blasfêmia e der uma olhada nos nossos concorrentes – iOS (Core Data, para ser mais preciso) – você verá que eles tem métodos realmente legais e GUI para criação de objetos de banco de dados, métodos CRUD, listeners, etc. Mas se você olhar a API Android padrão – não temos ido mais longe do que escrever comandos SQL, o que afeta muito nosso processo de desenvolvimento.

Debugar erros SQL não é tão fácil – é demorado, e nós não temos nenhuma GUI para visualizar os dados dos nossos bancos. Embora existam boas bibliotecas ORM (como GreenDAO, ActiveAndroid ou SugarORM), cada uma tem seus problemas. Eu nunca estive completamente satisfeito com elas – ou são complexos para usar ou falta alguma coisa. Minha mente está focada no Realm for Android e DBFlow, que eu torço para resolver esse problema e encurtar o tempo de desenvolvimento.

Conclusão

Muita coisa mudou nos últimos anos para o Andorid. Ele evolui de um SO simples de smartphones para estar presente hoje em muitos outros dispositivos. O tempo irá dizer o que ele irá se tornar. Quem sabe, talvez iremos ainda programar reatores de fusão nuclear com ele. Ou Terminators. Os Terminators são mais legais.

 

Este artigo é uma tradução e adaptação feita por mim. Ele foi escrito por Zeljko Plesac em ingês e sua versão original está disponível aqui.

8 comments for “Passado, Presente e Futuro do Desenvolvimento Android

  1. Evecimar
    24 de Março de 2015 at 14:43

    Muito bom!

  2. André Monjardim
    24 de Março de 2015 at 20:37

    Muito bom artigo!

  3. 25 de Março de 2015 at 0:22

    Muito bom ! só discordo do groovy… se o problema é o java (para mim sempre foi) tem que pensar numa linguagem própria para o ambiente como a Apple fez e não numa linguagem que mantem semelhanças com java(que em alguns caso é util apenas para agradar os desenvolvedores antigos, ou seja, manter legado)
    Talvez abraçar o Javascript como fez o webOS que com os avancos atuais da comunidade node.js e da engine do chrome já está bem eficiente.

    É importante desapegar dos nossos gostos, eu sempre gostei de python, mas recentemente aprendi na marra que nao da para ir usando uma linguagem em todo e qualquer contexto. Digo isso, porque usei a linguagem rapydscript para programar meu projeto de gradução e ela é ,basicamente, “python compilado para javascript”. Eu nao queria programar usando javascript pois nao gosto da sintaxe. Acabou que no mestrado migrei para Coffee-Script, pois o rapydscript tentava imitar os recusos de python na web e isso algumas vezes trazia mais problemas que soluções. Já o coffee-script foi pensado para web e nao tenta impor nada fora do contexto web do javascript. Por isso, hoje, estou muito satisfeito com ele.

    Portanto, Acho que o google deveria criar uma linguagem própria para o ambiente android e bem planejada. Ela nem precisa ser a linguagem que o dispositivo entende, essa pode continuar sendo java (se os impactos técnicos forem muitos), pois as IDEs poderiam compila-la para java.

  4. Renato Alves
    30 de Abril de 2015 at 11:33

    Bela tradução, amigo, mas eu ainda estou esperando o momento em que um desenvolvedor possa configurar o seu ambiente para desenvolvimento android, baixar uma IDE (qualquer uma) e fazer as duas operações que eu considero as mais importantes (desde a época da faculdade): COMPILAR E RODAR! Não quero ser ofensivo, mas me parece que o desenvolvimento de software comercial tem se tornado cada vez mais sofrível, não por estarmos fazendo aplicações mais complexas, mas pelo fato de que os procedimentos prévios ao fazer um “Hello World” é mais complexo e “bugado” que escrever o próprio código. Eu mesmo sinto um diferença gigante entre fazer “Hello” em android e fazê-lo em C. Faz sentido para vocês, leitores desenvolvedores?

    Bom, José Alexandre, espero que você deixe de um pouquinho de lado o interesse comercial sobre a promoção do “desenvolver em android” e me permita mostrar essa pequena observação aos colegas.

    Desde já, sou grato.
    Abraços.

    • 4 de Maio de 2015 at 10:03

      Olá Renato, obrigado pela mensagem. Concordo em partes com sua observação. Acredito que escrever o “Hellor World” não ficou mais complexo, são contextos diferentes que precisam de um ambiente (ou infraestrutura) diferentes. Os bugs aparecem por conta do desenvolvedor, o processo de compilação não passou a ser mais “bugado” não :) Realmente não é simples começar em uma linguagem ou paradigma novo, porque muitas vezes é uma mudança grande e a inércia não ajuda…. Abs.

  5. Luciano
    11 de Agosto de 2015 at 9:41

    Parabéns pela publicação. Você acha que o Dart, nova linguagem do Google pode substituir o Java em um curto prazo?

  6. 31 de Agosto de 2015 at 10:55

    Eu espero que o Dart substitua o Java.

  7. Beto
    30 de Setembro de 2015 at 23:02

    Meu Deus…

    Sério que eu li isso, Lollipop e sua interface mais do que é uma copia do Windows Phone e IOS que já traziam cores vivas e chapadas com um visual Flat, primeiro introduzido pelo Windows Phone, claro que este visual era muito usado em WEB, principalmente a Microsoft usava e o Windows Phone, queira ou não difundiu isso. Android sempre precisou das fabricantes, na realidade a Google não fez nada pelo Android e sim as fabricantes, elas criava os recursos, e depois de muito tempo a Google colocava no Android, prova disso que o Android Puro é pouco usado, a linha Nexus possui poucas vendas e pouca expressividade. O projeto Android One esta indo mal, onde a Google libera o Android Puro para pequenas fabricantes, e pelo o que se sabe, não esta indo bem. Outro pequeno detalhe a Google é lenta, apenas no Lollipop 5.1 que o Android veio ter suporte nativo a Multi Chip, e somente no Android 6.0 ele poderá instalar completamente os aplicativos no MicroSD, coisa que o tão odiado Windows Phone já oferece e com desempenho excelente. Pior, Android vem exigindo cada vez mais Hardware e por mais que a Google afirme que ele roda bem em aparelhos de baixo custo, nenhuma fabricante se atreve a vender aparelhos de baixo custo. Outro problema do Android que com o tempo de uso, ele começa a ficar lento, todo mundo que tem Android sempre da Hard Reset em seus aparelhos, pois o sistema é péssimo em gerenciar tudo. Coisa que não ocorre com o Windows Phone e nem mesmo com o IOS….. Resumindo, é um sistema que domina, mas para um sistema que dominava em 2012 90% do mercado, depois 85% em 2013 e em 2014 perdeu mais usuários e passou a dominar apenas 80%, vem perdendo muitos usuários na Europa para Windows Phone e IOS, esta estável nos Estados Unidos, mas o Android precisa de toda uma quantidade absurda de fabricantes para vender muito, enquanto o IOS sozinho consegue os melhores aplicativos, e mesmo que tenha mudado, o Android ainda possui aplicativos inferiores que o iOS. Eu ainda acredito mais na unificação do Windows 10, o mesmo sistema rodando em PC, Smartphone, Tablet, Relógio, Óculos e assim por diante, onde as únicas limitações será o Hardware, mesma loja, aplicativos universais, e novo modo de fazer as coisas. Sem mencionar que a Google boicota o Windows Phone, não produz aplicativo para o mesmo, pois ela deixa claro que o Windows Phone é ameaça, e agora a dona Google esta cheia de processos nos Estados Unidos e Europa por monopólio e por prejudicar buscadores concorrentes, e por não permitir desinstalar aplicativos dela, e não venham argumentar que se fizer Root, poderá, mas 90% dos usuários Android não sabem fazer isso. Mesmo sendo uma evolução, Android é um atraso, pois é um sistema que nasceu Livre, Open Source, onde muitos especialistas afirmam, cada atualização a Google fecha mais o Android, um especialista fã do Linux mesmo disse: Android esta mais para IOS, Windows Phone como sistema fechado do que para Linux, como deveria ser.