Apresentação utilizada em workshops ministrados em grandes empresas do Brasil, onde apresento a Plataforma Xamarin e todo o conjunto de recursos, incentivando a sua adoção e utilização em projetos e times de desenvolvimento móvel.
Agenda
Desenvolvimento mobile;
Por que criar aplicações nativas;
A Plataforma Xamarin e código
compartilhado;
Clico de vida de aplicativos e DevOps;
Xamarin e Microsoft;
Xamarin no Grupo Viceri
O mesmo aplicativo várias vezes
Abordagem
de Silos
Java
Eclipse
Android App
C#
Visual Studio
Windows App
Objective-C
XCoce
iOS App
Três vezes mais problemas
• Perfis diferentes de profissionais;
• Investimento em hardware diferentes;
• Linguagens incompatíveis entre si (JAVA, Objective C, C#);
• Sobrecarga na Gestão;
• Dificuldades para execução de Teste;
• Maior tempo para lançamento de novas funcionalidades.
Então vamos começar pelo mais fácil
• Aplicativos Android custam de 2 a 3 vezes mais
para desenvolver do que Aplicativos iOS;
• Fragmentação de ambiente (8 versões do OS e
mais de 7mil dispositivos diferentes);
• Produtividade;
• API’s mais complexas (difíceis de utilizar);
* Mesmo se você tiver o mesmo esforço
de desenvolvimento para todas as três
plataformas ainda terá três meses
de projeto
* Utopia
1 Mês iOS + 2 Meses para Android = 1 projeto de 3 meses;
Abordagem da “caixa mágica preta”
• Experiência do usuário pobre
• Não utiliza toda a capacidade de recursos das
plataformas de forma homogenia;
• Apresenta problemas de compatibilidade e
performance;
• Difícil manutenção e debug;
• Alta taxa de abandono e desperdício de
investimento
Black Box
Escreva uma vez e execute em qualquer
dispositivo
Interfaces fora
do padrão
Performance
não nativa
Acesso a API’s
limitados
Mas o HTML5 vai nos salvar!?
"The biggest mistake we made as a
company was betting too much on
HTML5 rather than native"
- Mark Zuckerberg
“As pessoas esperam uma grande
experiência em dispositivos Mobile”
- Miguel de Icaza
Aplicações Nativas
Interface de usuário Nativa
High-fidelity API Access
Native Performance
App’s são construídas utilizando interface e ,
controles padrão permitindo interações fáceis e
familiares
App’s têm acesso a toda a gama de funcionalidade
exposta pela plataforma independente de dispositivo
App’s tiram vantagem de aceleração de hardware
e recursos específicos da plataforma, e são
compilados como binários nativos, não
interpretadas em tempo de execução.
Não só Smartphones e Tablets
Nearables
Xamarin.Robotics
Wearables
http://bit.ly/xamarin-nearables
http://bit.ly/xamarin-robotics
http://bit.ly/xamarin-wearables
Compartilhamento de Código
• Compartilhar apenas o core da
aplicação;
• Interface Nativa;
• Cria a interface de acordo com as
características de cada plataforma.
• Abuso das características do
dispositivo;
• 100% de compatibilidade;
C#
Backend
70%
C# UI
30%
Media de Compartilhamento
Desenvolvimento Acelerado com
Compartilhamento de Código
Estatísticas de construção utilizando código compartilhado com Xamarin, para um aplicativo
simulador de circuitos em tempo real utilizado para desenha circuitos analógicos e digitais.
User Interface Code
App Logic
70%
30%
86%
14%
85%
15%
88%
12%
{ iOS } { Android } { Windows RT } { OS X }
http://icircuitapp.com/
50 milhões de linhas de código
compartilhado
• Precisavam de uma solução escalável para
aplicativos nativos em múltiplas plataformas.
• Aplicativos originais construídos utilizando
abordagem de silos. Equipe era incapaz de
entregar novos recursos em todas as
plataformas simultaneamente.
• Custos elevados para desenvolvimento e
manutenção de aplicativos.
50 milhões de linhas de código
compartilhado
Utilizando Xamarin
Rdio agora compartilha mais de 50 milhões
linhas código de C # através iOS, Android e
Windows, permitindo que eles se concentrem
em recurso de paridade e experiência do
usuário.
“Rdio’s mobile app is also the best looking and best
implemented of the three [music streaming apps reviewed]”
– Wired
Xamarin é Código Nativo
• Interoperabilidade com qualquer linguagem;
• Utilizar bibliotecas Android e iOS de forma nativa;
• Debug de objetos Java e Objective C.
• Executa código Java e Objective C
• Empacota e disponibiliza uma aplicação nativa única;
• Posso utilizar Binding para bibliotecas e objetos Java (JAR);
• Não é possível fazer fora de framework nativo.
Performance Nativa
App’s construídas com Xamarin são nativas pois utilizam código
nativo.
Xamarin.iOS executa compilação Ahead Of
Time (AOT) produzindo o binário (.app) ARM
para Apple App Store.
Xamarin.Android tira vantage da compilação
Just In Time (JIT) nos dispositivos Android.
Qualquer coisa que você conseguir fazer
utilizando Objective-C, Swift, ou Java! Pode ser
feita com C# e Xamarin no Visual Studio
Visual Studio como IDE
• Todas as funcionalidades do
Visual Studio disponíveis
• Help, debug, intelisense,
refactor, watch, etc...
• Debugar código nativo;
• Integração com TFS.
Visual Studio como IDE
• Desenho de telas integrado (iOS, Android e Windows Phone)
• Gerenciar dependências via
NuGet ou NuGet privado;
• Uso de uma única linguagem
de desenvolvimento C#;
• Suporte a PCL;
• DLL portáveis.
Integração com Mac (build host)
• Licenciamento da Apple requer um Mac para Build e teste de
aplicativos iOS.
Xamarin Android Designer
• Integração completa com
Visual Studio;
• Drag and drop de
componentes;
• Muilti edit.
Xamarin iOS Designer
• Integração completa com
Visual Studio;
• Suporte a StoryBoard;
• Suporte a auto-layout;
• Live preview para controles
customizados.
C# roda em 2.5 Bilhões
de dispositivos
De computadores, smarthphones, tablets até consoles de jogos
como PS4
C#
• Suporte a Linq e Lambdas;
• Eventos e delegates;
• Paralelismo;
• Programação Assíncrona;
• Generics;
• Métodos anônimos;
var doc = Xdocument.Load(utl);
foreach(var item in doc.Root.Elements()) {
var text = item.value;
}
from p in Table<Pessoa>()
where p.ID == id
select p;
button.TouchUpInside += (s,o) => {
message.Text = “Olá!”;
}
from item in itens.AsParallel()
let result = VaiDemorarUmPouco(item)
select result;
var client = new HttpClient();
Task<string> getStringTask = client.
GetStringAsync(“http://viceri.com.br”);
E por ai vai...
C# Linguagem Conhecida
Uso de mão de obra já qualificada;
Sem necessidade de treinamento para utilizar o
framework;
Utilizar componentes de mercado ou comunidade;
Reaproveitamento de legado.
Xamarin Scanner (C#)
Verificar compatibilidade do seu .exe ou .dll;
Identifica as dependências;
Verificar o quão o código é compatível para as
plataformas iOS, Android e Windows;
Fornece um relatório de compatibilidade.
http://scan.xamarin.com
Xamarin Mobile API
API’s comuns a todos os dispositivos, expostas
em um namespace único;
Xamarin.Mobile, é a mesma API para as 3
plataformas;
Contatos, camera e geolocalização.
* Roadmap inclui notificações e acelerômetro
Construa interfaces Nativas para iOS, Android e
Windows Phone a partir de uma única base de
código C# compartilhada.
Xamarin + Xamarin Forms
Xamarin.Forms - Interface do usuário compartilhada C#
Código C#
Compartilhado no Backend
Escrever uma vez só a
interface que é reutilizada
nas 3 plataformas.
Xamarin Forms
• Maximiza o compartilhamento de código entre plataformas;
• Mais de 40 controles, páginas e layouts;
• Construa interfaces usando C# ou XAML;
• Two-way Data Binding;
• Navegação, animação, mensageria.
Xamarin Forms Xaml
• Uso de XAML para especificar as telas;
• Binds automatizados;
• Sem código C# para update de interface;
• DataBind com MVVM;
• Customização por Extensões.
* Breve um Design de telas
Compatibilidade e Atualizações
• Tudo que está no iOS 8 (no mesmo dia)
• 100% suportado pelo Xamarin Designer
• Android L
• 100% de suporte
• Única solução Cross-plataforma a suportar Wearables
• 100% de suporte ao GoogleGlass e Android Wear
• Única solução Cross-plataforma a suportar Amazon Fire
TV
Todo o clico de vida de um Aplicativo
• Reaproveitamento de Código;
• Especificação;
• Gestão;
• Construção da Interface;
• Compilação;
• Automação de testes;
• Teste na Nuvem;
• Deploy Automatizado;
• Rastreamento e Monitoramento de aplicações;
Automação de Testes
• Todo o Ciclo de Automação de testes suportado;
• Testes unitários;
• Teste de Integração;
• Teste de Interface.
• Praticas com TDD, Integração Contínua, Refatoração, etc;
• Casos de Testes rodam no emulador ou no próprio dispositivo.
Xamarin Test Cloud
• Testar aplicações de
Local (nuvem privada);
• Testar aplicações na
nuvem de dispositivos
da Xamarin
• Parallel Test.
https://testcloud.xamarin.com/devices
Xamarin Insights Analytics
• Rastreamento e Log da App;
• Crash Report;
• Monitoramento das sessões;
• Integração com bugreport;
• Integração com CI;
Xamarin Profiler (beta)
• Call Stack;
• Consumo de memória;
• Tempo de execução;
• Alocação de memória;
• Snapshot da memória;
• Visualização de todos os objetos em
memória.
Parceria Global com Microsoft
• Suporte ao Visual Studio 2013 e 2015;
• Oferta especial para MSDN Subscribers
• Preços especial
• Versão Trial de 90 dias
• .NET Foundation
• 27 projetos Open Source Microsoft e Xamarin
• .NET Compiler Plataform “Roslyn”
• Xamarin’s MimeKit and Mailkit
Xamarin
no Grupo Viceri
1. Protótipo construído pelo
design de UX;
2. Arquiteto define diretivas
e organização do projeto;
3. Time de desenvolvimento
C# constrói o aplicativo;
4. Arquitetura apoia o
processo de DevOps;