Concrete Logo
Hamburger button

Reflexões sobre o Google I/O

  • Blog
  • 7 de Junho de 2017
Share

Android 2017: novos padrões, mesmos fundamentos

2017 está se mostrando um excelente ano para os desenvolvedores Android. A plataforma está crescendo em um bom ritmo há algum tempo, mas este ano o Google mudou de direção de verdade, o que eu acho que vai tornar nossas vidas muito melhores.

Então eles reconstruíram o Android do zero, tirando todas as armadilhas já conhecidas? É claro que não =) Mas resumidamente é como se fosse isso.

Vamos entender o porquê (eu poderia linkar aqui tudo o que foi falado em cada sessão individual do I/O, mas acho melhor só deixar o canal do Youtube aqui e você decide o que quer ver):

– O Android está recebendo melhorias constantes por debaixo dos panos. O nível de performance está atingindo novos patamares com melhor compactação de memória, vetorização, instruções SIMD e do runtime ART, entre outras coisas. Temos melhores defaults para os processos de background, mais segurança desde a inicialização até o isolamento de componentes, melhores gráficos de performance com menos requerimentos de recursos, mudanças nos sinais vitais do Android, entre outras coisas. O Google está, é claro, investindo em como a engenharia pode ser melhorada. Como em todos os anos, um monte de trabalho entra nas coisas que não vemos. Se é isso que te chama a atenção, sugiro passar por todas as sessões de segurança e desempenho do I/O.

– Os desenvolvedores estão muito mais felizes com as ferramentas. Finalmente temos um grande projeto de profiling no ambiente de desenvolvimento. Um catálogo de dispositivos no Google Play, melhores configurações para dependências Gradle que visam projetos multi-módulos, um suporte de sintaxe Java 8 mais fácil que o Jack… Bom, é mais bacana ser um desenvolvedor quando se tem ferramentas mais agradáveis.

Entretanto, o que realmente é diferente neste ano é que a comunidade influenciou muito mais o Google. Em minha opinião, três coisas provam este ponto:

1. KOTLIN é o óbvio. Toda uma nova linguagem criada com base nas melhorias já mencionadas (e todos os benefícios da plataforma). Eu não acho que as pessoas esperavam isso. A comunidade estava empurrando para esse resultado, mas todas as pistas que o Google nos deu eram que não estava nos planos deles. Entretanto, está acontecendo e o Google está apoiando oficialmente.

Que dia!
Nós devemos ver várias novas libraries, padrões e melhores práticas sendo criadas, discutidas e reorganizadas. Uma coisa que me preocupa sobre tudo isso é a energia anti-Java que está crescendo. Acho que o Android e a comunidade Kotlin não podem separar as pessoas da comunidade Java. E o diabo está nos detalhes: quando falamos sobre Kotlin nós não precisamos falar como se estivéssemos aprisionados pelo horrível mundo de Java. Podemos simplesmente dizer que é uma linguagem diferente, ao invés de dizer “por que é que as pessoas ainda acham que Java é uma linguagem?” ou algo do tipo. Para mim, a competição é boa e muitos JSRs podem influenciar o Kotlin e vice-versa. Algumas coisas que eu adoraria ver em qualquer uma das linguages é suporte a macro e value types (diferente de data classes) que estão sendo discutidos como parte do projeto Valhala. Se o Java adota e o Kotlin não, o que será do desenvolvimento Android? Coisas para se pensar.

2. Componentes de Arquitetura.

Nunca pensei que nós veríamos o Google se posicionando sobre isso. E que posição! A comunidade debate sobre isso há muitos anos. Nós começamos com metade de uma arquitetura (o framework cru Android não é uma arquitetura, é um esqueleto) e passamos para um monte delas. MVC, MVP, MVVM, MVI, Clean Architeture e assim por diante. Na minha opinião, algumas resolveram problemas específicos da plataforma Android, mas tenho selecionado desenvolvedores por anos e notei que todas essas arquiteturas têm várias interpretações diferentes. Elas estão solidificando conceitos na comunidade aos poucos, mas a maioria não resolveu o problema de verdade: a visualização ponta a ponta das camadas da sua aplicação. O que quero dizer é que você pode usar MVP com um repositório padrão e uma abordagem reativa, mas você ainda teria que decidir (ou discutir) sobre quais mudanças de configurações considerar ou coisas do tipo. Além disso, me parece que a maioria das arquiteturas não resolvem as especificidades do Android de ciclo de vida e estado. O Google (e Yigit com seu time, mais especificamente) está tentando resolver a questão com toda a comunidade, e o resultado está muito perto de uma solução ponta a ponta para o Android especificamente. Isso deve ajudar muito. Muito mesmo.

3. Testes.

Alguém imaginaria uma sessão no Google I/O sobre TDD (Test Driven Development)? Só há pouco tempo surgiu um artigo tentando defender a ideia de que TDD é possível em Android. Uma coisa para prestarmos atenção aqui é que o lançamento de uma nova library de testes ainda está pendente. Então, a sessão não foi sobre novas ferramentas para testes (embora eles tenham mencionado que elas vêm). Foi mais sobre o que é testar em Android. Testes locais ou instrumentados? Bom, eu devo discordar da divisão que eles mencionaram na talk, com @SmallTest, @MediumTest, @LargeTest e até que nós todos devemos usar Espresso para testes funcionais, mas seria legal ver um diagrama do ciclo de testes, e senti falta disso na documentação.  Nós nos perguntávamos quais eram as melhores práticas de testes em Android, mas agora temos uma orientação, e oficial. Eu espero ouvir mais do time de Android Testing Support Library no futuro.

Por último, mas não menos importante, conhecemos várias novas tecnologias legais e de ponta. TensorFlow está em todo lugar, e isso é significativo. Firebase e Play Services estão ganhando milhares de melhorias, como em autenticação, segurança, APIs e etc. A lista está sempre crescendo. Este ano, porém, parece que nós teremos mais tempo para olhar essas melhorias, uma vez que nossa engenharia está mais rápida, mais estável e com mais ferramentas e orientações para tomar decisão.

É bom estar aqui este ano =)

Tem alguma coisa a dizer? Aproveite os campos abaixo. Até a próxima!

É desenvolvedor Android e quer trabalhar em times fantásticos? Acesse aqui.