Desenvolvendo para Windows 8

Essa semana tive a oportunidade de começar a trabalhar desenvolvendo aplicações para o Windows 8. Claro, ele ainda não foi lançado, mas você pode começar baixando a versão Developer Preview. Essa versão pode ser instalada em uma partição separada sem maiores problemas. A própria instalação já se encarrega de fazer o dual boot com a versão atual. Ele vem com o Visual Studio 2011 Express e com o Expression Blend 5. O arquivo .ISO tem algo próximo a 5GB, para gravar em um DVD você precisaria de um Double Layer. Mas não precisa se dar a esse trabalho, basta descompactar o conteúdo do .ISO dentro de um pendrive e fazer boot usando uma USB. No meu caso, descompactei usando o 7-zip.

O Windows 8 foi redesenhado em cima de uma nova API (embutida no kernel) chamada WinRT, que é uma abreviação para Windows Runtime. Essa API foi construída para que as aplicações desenvolvidas para Windows 8 sejam ‘Fast and Fluent’. Nesse novo conceito, a programação assíncrona tem um papel importante. Qualquer método que possa levar mais de 50ms (milissegundos) só pode ser acessado de forma assíncrona. Algo importante que vale mencionar é que o WinRT não foi desenvolvido em cima do Win32. Pelo contrário, a idéia da Microsoft é substituir o Win32 por WinRT, embora aplicações desenvolvidas usando Win32 ainda vão continuar rodando no Windows 8 sem problema. Outra tecnologia que a Microsoft quer matar é o GDI. Todo o foco em desenvolvimento gráfico está voltado para o DirectX (preocupação com performance).

Uma das mais notadas novidades é a possibilidade de desenvolver aplicações em cima do WinRT usando JavaScript/HTML/CSS. Não é mais uma linguagem adicionada ao ecosistema existente, é um novo ambiente de execução de aplicações. Sua aplicação não é compilada, ela é interpretada, fazendo chamadas ao WinRT através de uma API rodando no ambiente de execução. É realmente JavaScript. Se você está acostumado com web, o desenvolvimento de aplicações para Windows 8 é algo natural. Muita coisa nesse ambiente ainda é novidade, mas no geral o conceito de desenvolvimento é exatamente o mesmo da web.

Quando você for começar a desenvolver aplicações para Windows 8, pode escolher três linhas de desenvolvimento: (a) usar JavaScript/HTML/CSS, (b) usar .NET Framework (C#/VB) acessando a API do WinRT para .NET ou (c) usar C++, que agora também usa XAML para a GUI. Meus estudos têm se focado bastante no desenvolvimento de aplicações usando JavaScript, por isso ainda não experimentei as novidades do desenvolvimento de aplicações usando C# ou C++, mas a grande novidade está nas APIs assíncronas do C# 5.0.

Outra novidade, que está fazendo a experiência do desenvolvimento de aplicações para Windows 8 mais divertida, é o Expression Blend 5. A versão Preview disponibilizada pela Microsoft dá suporte apenas ao desenvolvimento de aplicações usando JavaScript. Esse post não tem o foco de entrar nos detalhes da ferramenta. Para saber mais, esse video de Christian Schormann é uma excelente demonstração da importância do Expression Blend 5 no desenvolvimento de aplicações para Windows 8 usando JavaScipt.

Esse assunto ainda é tão novidade pra mim quanto parece ser para a maioria, mas não está sendo nenhum mistério. Segue algumas dicas de apresentações do BUILD 2011 que achei relevante para conhecer um pouco mais sobre o desenvolvimento de aplicações para o Windows 8: