Desenvolvendo para Windows 8
O Windows 8 é a próxima versão do sistema operacional para computadores “não-servidores” da Microsoft. Ele ainda não está completamente desenvolvido, mas a Microsoft anunciou recentemente suas principais características.
Eu diria que o Windows 8 tem uma ”dupla personalidade” . A primeira delas é a personalidade “normal”, no qual ele é uma evolução do Windows 7. Ele roda exatamente os mesmos aplicativos que o Windows 7 rodava, porém com algumas vantagens:
- Menor consumo de CPU;
- Menor consumo de memória;
- Menor consumo de energia e bateria;
- Mais rápido.
Até aí, seria simplesmente uma evolução do que vem acontecendo pelo menos a partir do Windows Vista, para não dizer do Windows 2000. Mas o Windows 8 tem uma segunda personalidade: a personalidade ”Metro”.
A personalidade Metro tem as seguintes características principais:
- Uma interface com usuário completamente nova;
- Um novo modelo de distribuição;
- Um novo conjunto de APIs, semelhantes às existente anteriormente, mas não idêntico;
- Muito mais conectado à nuvem.
A interface Metro é essencialmente a mesma apresentada no Windows Phone 7. Ela é simples, limpa e otimizada para uso com interface a toque. Uma das suas características mais surpreendentes é que ela *não suporta janelas*. Todas as aplicações são em tela cheia, assim como todas as telas de interface das aplicações. Adeus às janelas sobrepostas e caixas de diálogo. Ela é uma grande mudança na maneira limpa, apresenta cores básicas e tipografia simples. Quem deve aparecer é o seu aplicativo, não a interface.
A interface Metro deve ser rápida e fluida. Isso coloca algumas responsabilidades sobre os aplicativos, pois eles não devem nunca demorar à responder, o que causaria travamento da interface. Sabemos disso desde os tempos do Windows 1.0 e a “solução” foi apresentada no Windows 95: multi-thread. Infelizmente o uso de multi-threads é algo extremamente complexo e difícil de fazer direito. O Windows 8 traz então apenas APIs assíncronas – sem suprir as variedades síncronas”, de forma a evitar o seu uso. Mas para facilitar seu uso, as linguagens suportam um mecanismo de “co-rotinas”, que é uma solução simples e eficaz para o problema – e algo que eu defendo há muitos anos!
O novo modelo de distribuição é otimizado para uso em “loja de aplicativos”. Todos os arquivos necessários ao aplicativo são empacotados em um único arquivo, em conjunto com um “manifesto” que diz que recursos o aplicativo precisa (por exemplo, GPS ou acesso a arquivos), de forma a garantir que o aplicativo não acesse mais do que ele pode, aumentando a integridade e segurança. Além disso, evita que os aplicativos acumulem lixo na instalação do Windows ao longo do uso. Essa é uma promessa antiga (não usar o registry, sem problemas de versionamento de DLL), mas parece que ela finalmente será completamente cumprida.
Nas APIs é que existem as maiores diferenças. De cara, a velha Win32, existente desde a primeira versão do Windows não é mais suportada nos aplicativos Metro. Ela essencialmente foi substituída por uma API chamada WinRT. Esta API é orientada a objeto e definida em C++, uma linguagem que pode chamar diretamente o runtime. No entanto, ela pode ser chamada diretamente a partir de código gerenciado (C#, VB.NET) e JavaScript. Muitas APIs gerenciadas estão disponíveis, mas alguma não ou foram substituídas por chamadas nativas “WinRT” de forma a não haver sobreposição. Ou seja, o ambiente de desenvolvimento mesmo para C# e VB.NET é ligeiramente diferente.
Além disso, dada a ênfase na nuvem, os aplicativos Metro deverão se concentrar na interface com usuário, deixando coisas como armazenamento de dados e cálculos complexos para serem feitas “na nuvem”, chamando via WebServices ou algum mecanismo assemelhado.
O outro ambiente de desenvolvimento é HTML/JavaScript/CSS, que pode ser utilizado também para aplicativos “desktop”.
Todos os ambientes contam com suporte em uma nova versão do Visual Studio, inclusive com suporte a depuração de JavaScript.
O Metro me parece uma resposta à altura da Microsoft, utilizando sua liderança em sistemas operacionais e excelência em ferramentas de desenvolvimento para atender às necessidades de um mercado com diferentes dispositivos e mais orientado ao consumidor.
Isso tudo está ou estará disponível para download até o final desta semana para qualquer um experimentar.