Xamarin é uma plataforma open source da Microsoft para a criação de aplicativos mobiles 100% nativos, onde tudo é desenvolvido acessando as APIs nativas de cada uma das plataformas, como iOS e Android, por exemplo.
Se você deseja escrever apenas um código para diversas plataformas o Xamarin é uma ótima opção, pois ele tem justamente o intuito de compartilhar a mesma base de código para a criação de apps em várias plataformas. Assim, você consegue ter o aspecto multiplataforma e a performance e eficiência das aplicações nativas. Aqui no blog já falamos sobre as diferenças entre aplicativo nativo ou híbrido.
Os aplicativos gerados com a plataforma são nativos pois contém controle de interface dos usuários padrões, além de ter o mesmo desempenho dos aplicativos nativos já que o Xamarin aproveita a aceleração de hardware específica de cada um deles. O Xamarin fornece a interoperabilidade, onde é possível invocar diretamente o Objective C, Java, C e C++. Assim é possível reutilizar libs escritas para iOS e Android.
O Xamarin tem como IDE padrão o Visual Studio, que apresenta todos os recursos necessários para o desenvolvimento com o Xamarin, incluindo um recurso para o desenvolvimento de apps iOS: o Pair to Mac. Ele conecta o Visual Studio a um host de build do Mac, facilitando o desenvolvimento para essa plataforma.
Curso F# (F Sharp) - Fundamentos
Conhecer o cursoArquitetura Geral
Na imagem abaixo, retirada do próprio site da Microsoft, podemos ver a arquitetura geral de um aplicativo Xamarin.
Para compilar os apps de forma nativa no Android é utilizado o Xamarin.Android. Os apps rodam num ambiente de execução mono, este que manipula automaticamente tarefas como alocação de memória e interoperabilidade com plataformas subjacentes, e passa por uma compilação JIT (Just-In-Time).
Para aplicativos iOS é utilizado o Xamarin.iOS onde as apps também são executadas no ambiente de execução mono e usam a compilação ahead-of-time (AOT C#) para compilar o código para a linguagem assembly.
O Xamarin estende da plataforma .NET e traz para ela acesso a recursos nativos, como a XAML para a criação dinâmica de aplicações mobile usando o C#. Ainda é possível utilizar features do C# no desenvolvimento destes aplicativos, além de bibliotecas para trabalhar com padrões, como o MVVM e libs específicas para trabalhar com outras plataformas que incluem a acessos a APIs do Google, Apple e Facebook.
Curso C# (C Sharp) - TDD
Conhecer o cursoUm framework bem importante para o desenvolvimento com o Xamarin é o Xamarin.forms. O desenvolvimento de apps na plataforma Xamarin é feito utilizando Xamarin.Forms, Xamarin.iOS ou Xamarin.Android. O Xamarin.forms é um cross-platform UI library, ou seja, uma abstração para a criação de elementos comuns em todas as plataformas, como elementos de design, navegação, animações, etc. Permite que os desenvolvedores criem interfaces do usuário em XAML com code-behind em C#. Essas interfaces do usuário são renderizadas como controles nativos de alto desempenho em cada plataforma.
Considerações finais
Com o Xamarin você tem grande reaproveitamento de sua base de código quando está desenvolvendo com o foco em mais de uma plataforma. O Xamarin é indicado para todos os desenvolvedores, principalmente os que querem escrever apps multiplataforma em C# e compartilhar códigos, testes e lógica de negócios entre plataformas.