Quando se trata de desenvolvimento móvel, não faltam opções para que o trabalho seja feito. Entre as diversas abordagens disponíveis, dois frameworks poderosos vem se destacando no mercado: Xamarin e Flutter.
Embora você possa encontrar bastante material sobre os dois caminhos aqui mesmo no Código Fonte e não estejamos inclinados a bater o martelo nem para um lado, nem para o outro, com frequência somos perguntados sobre qual seria o melhor. Essa escolha pode depender dos seus objetivos e de seus conhecimentos iniciais, mas nós podemos fornecer a você um quadro comparativo das vantagens e desvantagens de cada um desses frameworks para que você mesmo tome essa decisão fundamentada na sua realidade
No seu cerne, tanto Xamarin quanto Flutter visam o mesmo objetivo: desenvolver aplicações móveis que funcionem em diferentes plataformas. Entretanto, cada uma delas atende de forma distinta alguns critérios que selecionamos nesse comparativo: custo, recursos disponíveis, linguagem de programação utilizada, curva de aprendizado e uso, performance e comunidade.
Custo
Antes mesmo de esquentarmos esse debate, vamos pensar na carteira. Nos dias de hoje é fundamental avaliar o custo de cada solução e os benefícios envolvidos. Então, que fique claro que Flutter é gratuito e de código aberto, independente do tamanho do seu projeto.
Em contrapartida, Xamarin é uma solução que é gratuita desde que esteja ligada a um projeto individual ou de um time pequeno, mesmo assim com limitações. Depois desse ponto seria necessária a aquisição de uma versão estendida do Visual Studio. A Versão Enterprise da plataforma pode chegar a impressionantes seis mil dólares anuais e mesmo uma licença individual do Xamarin, de pagamento único, pode custar US$499.
No orçamento final, essa grande diferença entre os dois frameworks pode ser drasticamente reduzida dependendo dos resultados obtidos, da produtividade, do nível de suporte e outros fatores que vão além do simples licenciamento.
Recursos disponíveis
Flutter não está vinculado a um único IDE e você pode usar aquele de sua preferência, desde que ele ofereça suporte a Dart. O que falta em robustez de uma solução dedicada sobra em ferramentas internas, com uma ampla seleção disponível. Porém, a documentação poderia ser mais extensa e esse é um dos pontos fracos do framework.
Xamarin, por outro lado, é um dos componentes do ecossistema do Visual Studio, ame-o ou deixe-o. A vantagem aqui é absoluta para quem está familiarizado com o IDE, uma vez que ele traz suporte nativo a toda uma gama de ferramentas úteis para desenvolvimento em Xamarin. A documentação do framework é abundante e bem-escrita, cobrindo praticamente todos os aspectos da solução.
Em termos de acesso às bibliotecas nativas das plataformas móveis, as duas abordagens se equivalem e o desenvolvedor não encontrará impasses para interagir com as APIs do Android ou do iOS escolhendo Flutter ou Xamarin.
Linguagem de programação empregada
Xamarin é uma solução Microsoft, incorporada no Visual Studio, consequentemente adota o .NET como sua plataforma. Desde sua concepção, o framework vem utilizando o C# como linguagem de programação. Para quem já tem uma experiência oriunda do desenvolvimento tradicional, isso é um diferencial importante.
Por outro lado, Flutter adota o novato Dart, introduzido pelo Google em 2011. Entretanto, Dart é baseado em C++ e programadores com experiência em linguagens orientadas a objetos, como Java ou mesmo JavaScript, não terão dificuldade em se adaptar ao seu ecossistema.
Na prática, é uma questão de contexto: programadores veteranos podem ver facilidade em adotar o Xamarin, enquanto quem está começando agora achará no Flutter uma porta de entrada mais tranquila.
Curva de aprendizado e uso
O tópico anterior nos leva ao próximo critério de comparação: a curva de aprendizado. É fácil instalar e configurar os dois frameworks? O desenvolvimento é tranquilo ou possui detalhes que podem torná-lo estafante? No caso de eventuais bugs, qual das duas soluções é mais prática para realizar testes e encontrar uma resposta?
Em termos de instalação, Flutter exige que você baixe os binários específicos para cada OS de seu Github e depois adiciona o Flutter ao PATH. Parece complicado, e tudo isso poderia ser facilitado com um gerenciador de pacote, mas a documentação é bem explicativa e ele possui uma ferramenta que ajuda na configuração.
O Xamarin, por sua vez, é tranquilo na instalação, desde que você tenha experiência com o Visual Studio. Nesse caso, é apenas uma questão de adicionar o SDK ao IDE.
Superada essa etapa inicial, qual é o melhor no dia a dia? Como visualizar as mudanças no código no produto que se está criando? O Xamarin possui ao mesmo tempo a vantagem e a desvantagem de fazer parte do ecossistema do Visual Studio, o que dispensa a necessidade de adotar diferentes ambientes, mas pode se tornar um obstáculo para quem não tem o hábito de usar o IDE da Microsoft. Essa falta de familiaridade, que poderia ser um problema para o Flutter, é compensada com o recurso de uma máquina virtual que permite visualizar alterações no aplicativo final em um piscar de olhos.
Em termos de testes, os dois frameworks praticamente se equivalem em eficiência. Xamarin traz todos os recursos do Visual Studio e possui até mesmo seu próprio ambiente de testes na nuvem. Flutter, por sua vez, também traz um amplo leque de ferramentas para teste, inclusive dedicadas especificamente para widgets individuais.
Performance
Chegamos então a um dos tópicos mais polêmicos: performance. Quando o usuário obtém o aplicativo final em seu dispositivo móvel, para ele não importa em qual framework aquilo foi desenvolvido, mas se o aplicativo “roda bem” em seu aparelho.
Flutter tem o poder de entregar aplicativos de altíssima performance, quase como se fossem nativos do sistema, a partir do momento em que tudo é compilado com sua biblioteca de C/C++, sem utilizar uma camada intermediária de Webview ou acesso a APIs nativas.
Não que Xamarin produza aplicativos lentos ou pesados, mas a solução adiciona uma camada extra de abstração através do Xamarin.Forms, o que leva a uma inevitável queda de performance que pode incomodar quem busca a perfeição.
É claro que o resultado pode variar de acordo com as boas práticas aplicadas e os dois frameworks oferecem recursos e ferramentas de otimização que podem e devem ser utilizados por seus desenvolvedores para obter performances melhores.
Quando levamos em conta o tamanho dos aplicativos gerados, um diferencial aos olhos co consumidor, nenhuma das duas soluções oferece vantagens em relação a aplicativos nativos, infelizmente. Entretanto, os binários gerados por Xamarin tendem a ser um pouco menores do que aqueles gerados pelo Flutter.
Comunidade
Uma comunidade forte significa um grupo de desenvolvedores se ajudando a crescer, a encontrar soluções para problemas comuns e evoluir aquela tecnologia que adotaram. Desde a explosão da internet, se tornou impossível separar a relevância de uma linguagem, de uma ferramenta, de um ecossistema, da força de sua comunidade.
Nesse ponto, Xamarin saiu na frente, mas apenas por ser o framework mais antigo. Atualmente, sua comunidade de código aberto conta com mais de 60 mil colaboradores ativos e não é difícil encontrar suporte nos canais oficiais. Até mesmo os iniciantes poderão se sentir à vontade com tantas ofertas de ajuda.
Entretanto, Flutter não está muito atrás. Apesar de trazer uma comunidade menor, ela vem crescendo em uma velocidade superior à da rival e é apenas uma questão de tempo para as duas se equivalerem. Com conferências organizadas e fóruns, o Flutter possui uma comunidade igualmente vibrante e acolhedora.
Uma vez que não estamos falando de torcidas organizadas, o volume de membros não tem qualquer impacto e é importante frisar que os dois frameworks na verdade contam com amplo apoio de suas respectivas comunidades e temos um claro empate técnico aqui.