O que é Xamarin?

Criado em 2011 e comprado pela Microsoft em 2016, Xamarin é uma plataforma que permite desenvolver, monitorizar e testar aplicações para iOS, Android e Windows  usando C# como linguagem de desenvolvimento.

Existem outras plataformas usadas para o mesmo intuito. Todavia, estas costumam estar baseadas em HTML5, CSS e Javascript (ao que costumamos chamar de Aplicações Web ou Web Apps).

Aplicações nativas tendem a produzir melhores resultados para os utilizadores, isto porque elas integram-se naturalmente com a plataforma, são mais rápidas, mais eficientes energeticamente (gastam menos bateria) e costumam ter melhores visuais que as suas variantes Web.

O Xamarin apareceu como sendo um grande diferenciador, porque usando uma única linguagem e ambiente de desenvolvimento, produz aplicações nativas com interfaces nativas nas plataformas alvo (iOS, Android e Windows). Tudo o que é possível fazer em Swift ou Objective-C para iOS ou Java para Android, também é possível fazer com Xamarin e C#.

O ambiente de desenvolvimento em Xamarin não é de todo um problema: Xamarin é executado tanto em Windows como em MacOSX

Em Windows pode ser usada com o Visual Studio, já que está plenamente integrada com o IDE nas suas ultimas versões ou com o Xamarin Studio.

Para Mac, uma versão de Xamarin Studio também se encontra disponível ou pode-se usar o Visual Studio para Mac.
No entanto, um Mac com o Xcode instalado continua a ser necessário para desenvolver, visto que a compilação para iOS tem de ser efetuada num Mac. Especialmente quando se está a desenvolver em Windows (seja em Visual Studio ou Xamarin Studio). O Xamarin integra ferramentas que permitem a um computador Windows de se ligar a um computador Mac pela rede e de fazer a compilação iOS remotamente.

Existem duas abordagens quando se desenvolvem aplicações usando o Xamarin:

– A abordagem tradicional (Tradicional Xamarin)
– A abordagem com Xamarin.Forms

screen-shot-2017-01-13-at-07-41-52

Como se pode ver na figura acima, ambas as abordagens partilham o código “backend” em todas as plataformas. O que significa que a lógica de negócio só precisa ser programada uma vez, reduzindo assim ao máximo erros e diferenças de lógica que se introduzem quando se escreve código em plataformas diferentes.

A diferença principal em ambas as abordagens é em termos de construção da interface.

Enquanto a abordagem tradicional requer que se construa e programe os elementos da interface em cada plataforma, o Xamarin.Forms usa código partilhado, aumentado com XAML e este de seguida produz controlos nativos em cada plataforma, isto quer dizer que a interface só é construída uma vez e que esta é posteriormente traduzida numa interface nativa em cada plataforma.

O método tradicional é o preferido quando se constrói uma aplicação que use uma interface altamente costumizada ou que necessite ser “pixel perfect”, enquanto o Xamarin.Forms é mais usada quando a aplicação usa só elementos simples nativos ou quando se quer produzir um protótipo funcional rapidamente. Pela minha experiência, posso garantir que personalizar o comportamento e elementos da interface, quando se usa o Xamarin.Forms, requer um esforço muito grande e o resultado final nunca é aquele que se pretende.

Se o Xamarin permite ser mais rápido nos ciclos de desenvolvimento, este ainda requer que os programadores conheçam bem as plataformas nativas e as diferenças que nelas existem.