Archive for the ‘Uncategorized’ Category

Desenvolvendo para Windows 8

Wednesday, September 14th, 2011

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.

Impressões do primeiro dia do evento Microsoft Build

Wednesday, September 14th, 2011

De Anaheim, California

Não me lembro de outro evento da Microsoft guardado com tanto segredo. Nem o PDC 2000, onde foi anunciado o .NET foi tão secreto; mesmo  amigos meus de cargos relativamente altos em Redmond juravam não saber nada a respeito do que seria anunciado no Build.

A organização do evento também não foi feita pelas mesmas pessoas que organizam o TechEd, Mix e PDC e sim pelo time do Windows, que está mais acostumado a eventos relativamente pequenos para fornecedores de hardware, como  o WinHEC.

Por estas razões, havia uma enorme expectativa no ar. A única coisa que vazou, na Nova Zelândia, foi que os atendentes iriam receber um tablet com Windows 8, o que efetivamente aconteceu: foi distribuído um Tablet da Samsung com tela de umas 11 polegadas “wide”, tela “touch”, WiFi, modem 3G com um ano de plano de dados da AT&T, processador i5 “segunda geração”, 4GB de RAM, 64 GB de drive de estado sólido, saída de vídeo HDMI, “docking station” com ethernet, USB , HDMI e bateria com oito horas de duração. Versões de instalação do Windows 8 também foram colocadas em uma rede interna para serem copiadas livremente.

A minha impressão foi que a alta expectativa foi cumprida. O Windows 8 roda os aplicativos feitos para Windows 7, mas eles são considerados obsoletos. Os novos aplicativos usam uma interface com usuário muito semelhante a do Windows Phone 7, chamada de “Metro”. É uma interface simples e intuitiva, desenvolvida para ser fácil de usar. Uma das grandes surpresas é que todos os aplicativos são “tela cheia”. Ou seja, o Windows não tem mais janelas, nem caixas de diálogo!

As novas APIs são expostas como classes em C++ e chamáveis diretamente a partir de C++, C#, VB.NET e JavaScript/HTML/CSS, em uma nova versão do Visual Studio. As APIs antigas são obsoletas e não podem ser utilizadas pelos aplicativos “Metro”. O Silverlight é suportado, mas não é necessário; a interface com usuário pode ser especificada em XAML, contudo.

Todos os arquivos dos aplicativos Metro são empacotados em um arquivo e podem ser distribuídos a partir de uma “loja” que entrará no ar futuramente, em um modelo parecido com os existentes para Windows Phone 7, iPhone e Android.

Embora o software ainda seja beta, as apresentações me pareceram seguras e que existe uma visão clara do que deve ser feito e do estado adiantado da nova plataforma. Parece-me que é uma resposta à altura da Microsoft aos desafios lançados pela Apple e Google/Android nos últimos anos.