Desenvolvimento - C#
Windows 8 do ponto de vista do desenvolvedor
Este artigo mostra as principais características do da nova versão do Windows recentemente anunciada no evento Microsoft Build em Los Angeles.
por Mauro Sant'AnnaO 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 no “Build”, um evento para desenvolvedores nos Estados Unidos, ao qual eu tive a oportunidade de participar pessoalmente.
É importante notar que a ênfase da Microsoft por enquanto é engajar os desenvolvedores; as características do ponto de vista de usuário final – especialmente que componentes serão efetivamente incluídos - podem mudar bastante até o produto final.
Dupla personalidade
Eu diria que o Windows 8 tem uma ”dupla personalidade” . A primeira delas é a personalidade “normal”, uma evolução do Windows 7. Nela o Windows 8 rodará os mesmos aplicativos que o Windows 7 rodava, porém com algumas vantagens:
· Menor consumo de CPU e/ou suporte a CPUs relativamente lentas;
· Menor consumo de memória;
· Menor consumo de energia e bateria;
· Mais rápido, inclusive na carga inicial e desligamento;
· Pode rodar a partir de pen-drive;
· Possui um “modo restauração”, no qual o estado do sistema operacional pode ser restaurado a partir de um ponto conhecido;
· Suporte a novos sensores como luz ambiente, movimento, orientação, acelerômetro, e giroscópio;
· Suporte a novos dispositivos como USB 3.0, WiFi Direct, Bluetooth de baixa potência e “Near Field Communication”;
· Boot mais rápido e seguro através de um padrão de BIOS novo (UEFI);
· Suporte à CPUs ARM.
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 existentes anteriormente, mas não idêntico;
· Muito mais conectado à nuvem.
Note que o Metro não substitui completamente os modelos para aplicativos desktop já existentes (WinForms, WPF). Estas continuam disponíveis como a base para o desenvolvimento de aplicativos para “Information Workers”. Ferramentas como o Visual Studio, Photoshop, Autocad etc continuarão a usar as interfaces “antigas”.
A ênfase do Metro é para aplicativos voltados aos consumidores finais e utilizando dispositivos com interface com toque como “Tablets”.
Nova Interface
A interface Metro é essencialmente a mesma apresentada no Windows Phone 7. Ela é limpa, utiliza cores básicas, tipografia simples e é otimizada para uso com interface a toque. Quem deve aparecer é o seu aplicativo, não a interface.
Uma das suas características mais surpreendentes é que ela *não suporta janelas*, uma característica básica do Windows desde sua primeira versão. No Metro, 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.
A interface Metro deve ser rápida e fluida. Isso coloca algumas responsabilidades sobre os aplicativos, pois eles não devem nunca demorar a 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.
O sistema operacional também controla a saúde dos aplicativos e termina aplicativos que não respondam, garantindo que o dispositivo esteja sempre “vivo” do ponto de vista do usuário.
Distribuição
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. Isto garante que o aplicativo não acesse mais do que ele pode, aumentando a integridade e segurança. Evita também 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.
Todos os aplicativos têm um “manifesto” que declara os recursos necessários (por exemplo, localização) e o sistema de execução valida as chamadas para respeitar a lista de recursos declarados.
O uso de DRM (“Digital Rights Management” ou “Gestão de Direitos Digitais”) permite aos vendedores de aplicativos terem uma garantia que seus aplicativos não serão pirateados (ou serão pouco pirateados). Isso desfaz o ciclo vicioso dos “aplicativos são pirateados porque são caros e são caros porque são pirateados”, em um modelo já provado com sucesso pela Apple.
Outra característica desse modelo é que as desinstalações são completas, pois os aplicativos simplesmente não podem deixar pedaços espalhados, o que contribui bastante para a estabilidade do sistema operacional.
API WinRT
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 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.
É possível também desenvolver aplicativos “desktop” utilizando HTML/JavaScript/CSS, inclusive jQuery e HTML5.
Outra grande diferença é que o ciclo de vida da aplicação é controlado pelo sistema e não pelo usuário. No Metro o usuário abre os aplicativos, mas quem os fecha é o sistema. A princípio os aplicativos não podem rodar em segundo plano, mas existem APIs para rodar coisas em intervalos pré-determinados ou como resposta a notificações. Isso traz um impacto positivo dramático no consumo de bateria, uma característica muito importante nos dispositivos para os quais o Metro se destina.
Arquitetura
Os aplicativos Metro deverão concentrar-se 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.
Os desenvolvedores contam com uma nova versão do Visual Studio e do Expression Blend.
Conclusão
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.
Maiores informações sobre o Windows 8 podem ser obtidas no site http://www.buildwindows.com/. É possível baixar versões de avaliação do Windows 8 com as novas ferramentas de desenvolvimento em http://dev.windows.com/.
Uma versão mais detalhada deste artigo pode ser obtida na revista .NET Magazine número 91.
© 2011 por Mauro Sant’Anna – Todos os direitos reservados. Proibida cópia não autorizada em qualquer meio.
Mauro Sant’Anna está disponível para consultorias e treinamentos sobre Windows 8. Contate-o pelo e-mail mauro@mas.com.br, twitter @msantanna.