Introdução ao Windows Phone 8 – Parte 1
Lançado em 2012, o Windows Phone 8 (WP 8) tem aparelhos produzidos pela Nokia, HTC e Samsung. Em seu hardware, ele se diferencia da versão anterior, com suporte aos chipset multicore, com processador gráfico mais avançado. Capacidade de memória de até 1GB. Três resoluções de tela.
Do ponto de vista de sistema operacional, um dos principais avanços do WP8 é o compartilhamento de núcleo com a versão desktop, Windows 8. O mesmo não acontecia com o Windows 7. Tanto o Windows 8 quanto o WP8 compartilham o kernel do Windows CE, versão anterior do sistema operacional para dispositivos móveis. Os componentes do kernel que são compartilhados entre os dois S.O.s são a parte de rede, gráficos, sistema de arquivos e multimídia são os mesmos para o windows 8 e o windows phone. O Windows phone 8 possui um subconjunto dos modulos presentes no Windows 8. Para os fabricante de hardware, os mesmos drivers podem ser feitos para ambas as plataformas.
Contudo, as APIs de desenvolvimento de aplicativos não são as mesmas para ambos os windows. Parte das aplicações desenvolvidas para WP8 não executam no Windows 8 e vice versa, salvo as que utilizam a API Win32.
Windows Phone Store e distribuição de aplicativos
A loja de aplicativos do Windows Phone 8 é a Windows Phone Store (http://www.windowsphone.com/en-us/store)
No windows phone as Apps são chamadas de Managed Apps. As mesmas tem seu codigo native gerada na Windows Phone Store .
Quando a app é contruída no Visual Studio, o código não é compilado em imagem nativa, mas em uma machine-independent Common Intermediate Language (CIL – http://en.wikipedia.org/wiki/Common_Intermediate_Language conhecida como (Microsoft Intermediate Language, or MSIL)
Por exemplo, um codigo:
[sourcecode language=”java”]
static void Main(string[] args)
{
for (int i = 2; i < 1000; i++)
{
for (int j = 2; j < i; j++)
{
if (i % j == 0)
goto outer;
}
Console.WriteLine(i);
outer:
}
}
[/sourcecode]
Geraria o seguinte em CIL
[sourcecode language=”java”]
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack 2
.locals init (int32 V_0,
int32 V_1)
ldc.i4.2
stloc.0
br.s IL_001f
IL_0004: ldc.i4.2
stloc.1
br.s IL_0011
IL_0008: ldloc.0
ldloc.1
rem
brfalse.s IL_001b
ldloc.1
ldc.i4.1
add
stloc.1
IL_0011: ldloc.1
ldloc.0
blt.s IL_0008
ldloc.0
call void [mscorlib]System.Console::WriteLine(int32)
IL_001b: ldloc.0
ldc.i4.1
add
stloc.0
IL_001f: ldloc.0
ldc.i4 0x3e8
blt.s IL_0004
ret
}
[/sourcecode]
Quando um app é submetido na Windows Phone Store, o Visual Studio envia o arquivo CIL. O CIL é convertido para Machine Dependent Intermediate Language, or MDIL: Quando o usuário baixa a app, ele baixa uma imagem compilada para seu celular.
Desenvolvendo para o Windows Phone 8
Para desenvolver aplicativos no Windows Phone 8 é necessário ter um computador com Windows 8 e a versão 2012 do Visual Studio. Para acessar todas as funcionalidades da SDK, é necessário possuir a versão Professional do Visual Studio.
A SDK pode ser encontrada no link: https://dev.windowsphone.com/en-us
Modelos de desenvolvimento
O desenvolvimento de aplicativos para o Windows Phone 8 possui três macros estratégias:
- Desenvolvimento de app usando WP7.1, WP8.0 .NET and Windows Phone Runtime APIs. Utiliza linguagem C# e Visual Basic
- Desenvolvimento Nativo usando WinPRT and Win32, usando C e C++
- Desenvolvimento de jogos usando o XNA framework e Direct3D or DirectX
Modelo .NET
A API .NET API para Windows Phone é a API managed, que executa em uma sandbox. Inclui os tipos e API do Windows Phone OS 7.1 . Contains classes and types from the System and Microsoft.Phone namespaces. Permite uma fácil integração com sistemas desenvolvidos com a plataforma .NET
Modelo Windows Run Time
Windows (Phone) Runtime é implementada em C++ e tem uma interação com a sandbox .NET C#, VB.NET, and
Windows Phone Runtime API. WinRT é implementada em C++. Possibilita novas funcionalidades que não existem na API .NET. Os desenvolvedores podem usar qualquer das duas, seguindo o seguinte critério:
- Foco em aplicativos que executem no Windows Phone 7.1 e 8, recomendável desenvolver usando .NET
- Foco em desenvolver código que execute em Windows 8 e Windows Phone 8, WINRT API é melhor.
Modelo de desenvolvimento Win32
A WIN32 está disponivel para desenvolvimento mais avançado, com desempenho em foco. Entre as funcionalidades possíveis para a Win32, tem-se:
- Winsock para controle dos sockets em baixo nivel. Permite a criação de server sockets.
- API de Cameras com eficiência para processamento de imagens mais avançado
- Gerencia de objetos, arquivos, threads e etc em baixo nível: uso da API COM: CoInitializeEx, CoTaskMemAlloc, CoTaskMemFree, CreateFile2, ReadFile, WriteFile, HeapAlloc, CreateMutexExW, WaitForSingleObjectW, etc.
Este tipo de acesso permite programação mais integrada ao dispositivo. Pode ser associado ao desenvolvimento do nivel .NET através de bibliotecas compartilhadas.
XAML e integração com as APIs
O desenvolvimento de aplicativos para windows phone utiliza como base o padrão MVC – Model Viewer Controller – no qual o Viewer utiliza uma linguagem de marcação para descrever os componente da tela. No WP8 essa linguagem é conhecida como XAML – Extensible Application Markup Language.
Maneira mais comum para criar aplicações para o Windows Phone 8 é a integração com a .NET. E a UI definida usando XAML, a lógica escrita em C# ou Visual Basic .NET. O template pode ser escolhido na interface de criação de Apps do Visual Studio
O video abaixo mostra o passo a passo para criar uma aplicação usando o XAML com o estilo Panorama.
Nos próximos posts serão apresentados outros estilos de programação com XAML.