O último mês foi muito movimentado para quem acompanha a evolução das tecnologias da plataforma Microsoft. Ousaria dizer que fazia tempo que as novidades anunciadas não causavam tanta empolgação na comunidade. Eu, pelo menos, fiquei muito empolgado com o que foi divulgado, como há tempos não ficava. Mas não se trata de um sentimento superficial, vazio, de simplesmente celebrar o novo pelo novo, de mudar para continuar como está, como muitas vezes vemos por aí. Muito pelo contrário. Dá para perceber que os anúncios feitos seguem uma coesão e alinhamento que normalmente não se via na Microsoft, famosa por disputas internas entre suas divisões de produtos, que costumavam defender seus próprios interesses, que não necessariamente era o melhor para a empresa. A ideia de One Microsoft não era brincadeira.
É possível perceber que por trás de tudo isso existe uma linha de pensamento, um direcionamento estratégico, que todos os times de produto da empresa parecem estar perseguindo. A Microsoft vem mudando nos últimos anos, mas nesse último mês chegou-se ao ápice desse processo, quando foi possível vislumbrar as peças se encaixando e muita coisa começando a fazer mais sentido. É claro que esse comprometimento com a mudança é uma questão de sobrevivência para a empresa, já que o mundo mudou muito nos últimos 15 anos, mas não deixa de ser fascinante acompanhar essa transformação. A Microsoft se deu conta que não é mais o centro da computação pessoal, como foi um dia. E que nunca mais o Windows será a única plataforma computacional utilizada pelas pessoas, e sim, mais uma das plataformas com as quais as pessoas interagem. Claro que a Microsoft prefere que o Windows seja a escolha, mas se não for, tudo bem também, pois ela pode oferecer seus serviços, sua plataforma de computação na nuvem e suas ferramentas. A Microsoft de hoje aceita e abraça a computação na nuvem, a filosofia *open-source, *o modelo de serviços/assinatura (ao invés do licenciamento perpétuo) e as múltiplas plataformas assim como quando, no meio dos anos 90, aceitou e abraçou a Internet. Se alguém acha que a Microsoft vai se tornar irrelevante nesse novo mundo, é bom rever os seus conceitos, pois ela está mais forte do que nunca, com uma estratégia bem definida e muito bem posicionada tecnicamente para alcançar seus objetivos.
No início de abril, ocorreu o evento Build, voltado para desenvolvedores, e em maio, o TechEd (os vídeos das palestras, tanto do Build quanto do TechEd, podem ser vistos e baixados gratuitamente no Channel 9). O que se viu foi uma avalanche de anúncios de novas tecnologias, ferramentas, funcionalidades e o roadmap para onde a Microsoft está caminhando. Listo abaixo um resumo dos principais anúncios feitos nesses eventos. Apesar de já ter se passado um certo tempo, principalmente em relação ao Build, ainda há muita coisa a ser digerida. Pretendo voltar a alguns desses temas com mais detalhes, conforme eu conseguir processar tanta informação:
Windows Phone 8.1: possuirá um novo modelo de desenvolvimento, baseado no WinRT (Windows Runtime) e com possibilidade de uso de C++, .NET (XAML/C#/VB.NET) ou HTML5/Javascript/CSS, como já ocorre no desenvolvimento de aplicações Windows Store (antigo Metro) no Windows 8 para PCs e tablets, tornando possível assim a unificação do modelo de desenvolvimento entre as diversas plataformas e versões do Windows! Também foi demonstrada a Cortana, o assistente pessoal digital que utiliza técnicas de inteligência artificial e machine learning, com o qual será possível interagir através de linguagem natural, falada e escrita. Todos smartphones com Windows Phone 8 receberão a atualização para Windows Phone 8.1, que deve ser liberada nas próximas semanas.
Windows 8.1 Update: a novidade é o Brokered Windows Runtime Components, que permitirá aplicações Windows Store/Metro (que rodam sobre WinRT) interagirem com aplicações desktop .NET (que não rodam sobre WinRT). O objetivo é permitir maior reaproveitamento de código legado, possibilitando modernizar a camada de apresentação de uma aplicação legada sem ter que reescrevê-la totalmente. Essa é uma funcionalidade voltada para aplicações corporativas. Além disso, essa atualização traz várias melhorias para equipamentos baseados em teclado e mouse, ou seja, que não possuem touch, o que é uma grande reclamação do Windows 8. O Windows 8.1 Update já está disponível no Windows Update;
Windows Universal Apps: com o Windows Phone 8.1 e Windows 8.1 Update ambos baseados no WinRT, a Microsoft introduziu um novo tipo de projeto do Visual Studio chamado Windows Universal Apps, que possibilitará que a mesma aplicação rode tanto em smartphones, PCs e tablets Windows, adaptando somente a interface de cada dispositivo e reaproveitando todo o resto. No futuro, a ideia é que aplicação também possa ser executada no Xbox One;
Demais assuntos sobre Windows: smartphones e tablets de até 9 polegadas não precisarão mais pagar licença do Windows. Haverá uma versão do Windows para Internet das Coisas (Internet of Things) e foi feita uma demonstração da volta do menu Iniciar ao Windows, cuja retirada sempre foi motivo de polêmica, além da possibilidade de se executar aplicações Windows Store/Metro em janelas no desktop, ainda sem previsão de data; Novo menu Iniciar do Windows, ainda sem data para chegar
Internet Explorer 11: o engine do IE11 será o mesmo no Windows 8.1 Update e Windows Phone 8.1. Assim, o mesmo núcleo do browser rodará em PCs, tablets e smartphones;
Office: foi exibida brevemente a cara da nova versão do Office para Windows, otimizada para touch e reescrita em cima do WinRT. Ainda não há previsão de lançamento; Novo PowerPoint para Windows, otimizado para touch
****
- .NET Compiler Platform: a Microsoft está desenvolvendo um novo compilador para C# e VB.NET chamado Roslyn e o disponibilizou como open-source. A novidade é que esse compilador fornecerá uma API com a qual será possível interagir (o que a Microsoft chama de compiler as a service) e facilitará funcionalidades como análise de código, refactoring, geração de código, etc. O principal usuário disso será quem desenvolve ferramentas ou plug-ins para IDEs, como Visual Studio, além da própria Microsoft, que poderá fornecer novos recursos de maneira mais rápida. Foi feita uma demonstração no palco, na qual esse novo compilador foi utilizado em um MacBook para compilar código C# através de uma versão especial do Mono (implementação alternativa do .NET Framework). Com esse novo compilador, também foram exibidas algumas novas funcionalidades da próxima versão do C# e VB.NET;
- .NET Native: promete combinar a performance do C++ com a produtividade do C#, permitindo compilar uma aplicação C# diretamente para código nativo e que não exigirá a presença do .NET Framework para ser executada. Nesse momento, só funciona para aplicações Windows Store/Metro, mas a ideia é expandir para outros tipos de aplicação futuramente;
- .NET Foundation: foi criada a .NET Foundation, que será uma organização independente e responsável por fomentar o desenvolvimento e a colaboração de projetos .NET open-source, como ASP.NET MVC, ASP.NET Web API, ASP.NET Web Pages, SignalR, Entity Framework, .NET Compiler Plataform, bibliotecas da Xamarin, etc.
- Visual Studio 2013: foi lançada uma atualização (Update 2) para o Visual Studio 2013 que possibilita as funcionalidades citadas anteriormente e muito mais. O destaque é para a integração cada vez maior com o Azure (por exemplo, criação e gerenciamento de máquinas virtuais de dentro do Visual Studio, debug remoto de aplicações hospedadas no Azure, etc), além de várias outras melhorias para desenvolvimento de aplicações web. Além disso, a Microsoft posicionou o Visual Studio como uma IDE para desenvolvimento de aplicações multiplataforma. Há outras empresas que têm feito coisas muito interessantes nesse sentido, com destaque para a Xamarin, que permite escrever aplicações nativas com C# tanto para Windows, iOS, Mac e Android. A Xamarin teve uma grande exposição nos keynotes e palestras do Build, e não me espantaria se a Microsoft a comprasse futuramente (há vários boatos circulando sobre essa possibilidade). Além disso, no TechEd, foi anunciado o suporte nativo do Visual Studio ao Apache Cordova (antigo PhoneGap), que é uma plataforma open-source muito popular para desenvolvimento de aplicações híbridas para dispositivos móveis (iOS, Android, Windows Store e Windows Phone) através de HTML, Javascript e CSS;
- ASP.NET: o TechEd foi o evento onde foram feitos os principais anúncios envolvendo a próxima versão do ASP.NET, chamada de ASP.NET vNext. Vale lembrar que essa versão ainda encontra-se em estágio pré-alfa, ou seja, ainda é um trabalho muito inicial, sem previsão de quando estará disponível para uso em produção. A próxima versão do ASP.NET segue alguns pilares: será totalmente modularizada e flexível (será possível escolher quais módulos sua aplicação irá utilizar, ao invés de carregar todos os módulos do .NET Framework, o que permitirá menor consumo de memória e maior rapidez na inicialização e maior vazão), multiplataforma (irá executar em Windows e outras plataformas que suportem Mono, como Mac e Linux), agnóstica de servidor (a aplicação ASP.NET poderá ser hospedada no IIS ou em um self-host; a Microsoft já dava sinais de que seguiria esse modelo com os projetos OWIN e Katana, nos quais a próxima versão do ASP.NET é baseada), modelo de desenvolvimento unificado para ASP.NET MVC, ASP.NET WebAPI e ASP.NET WebPages (esses três “componentes” serão agrupados em um framework que eles chamaram de ASP.NET MVC 6), mecanismo de Injeção de Dependência nativo unificado, maior agilidade na dinâmica de desenvolvimento (não será preciso gerar DLLs, basta alterar o código no seu editor preferido e atualizar o browser, pois a compilação ocorrerá em memória, em tempo de desenvolvimento, utilizando o .NET Compiler Platform – Roslyn), substituição de arquivos de configuração baseados em XML por baseados em JSON, referências a pacotes do NuGet (e não a assemblies) e open-source (agora mantido no GitHub). Também foram anunciadas novas versões do SignalR e Entity Framework. Além disso, foi mostrada a nova versão do .NET Framework, chamada de .NET vNext Cloud Optimize (.NET otimizado para a nuvem). É versão do .NET otimizada para ser executada em servidores, suportando aplicações web e serviços, que utiliza somente os módulos necessários para esse tipo de cenário e que foi drasticamente reduzida em termos de tamanho (em torno de 10 MB), já que não contém várias bibliotecas que só fazem sentido em aplicações client, como Windows Forms e WPF. Com o .NET Cloud Optimize, não é mais necessário ter o .NET Framework instalado no servidor, já que ele poderá ser distribuído junto com a aplicação, ou seja, cada aplicação ASP.NET poderá conter uma versão customizada do .NET (somente com os módulos que interessam para a aplicação, pois cada módulo será um pacote do NuGet). Um exemplo dessa funcionalidade na prática, que foi demonstrado no TechEd, foi a execução de uma aplicação ASP.NET a partir de um pen drive em uma máquina sem o IIS e sem o .NET Framework. Você pode estar se perguntando: e o ASP.NET WebForms? Ele não irá suportar essas novas funcionalidades, pois o WebForms é dependente do System.Web, o que não permite usufruir dessas novidades. O System.Web é um assembly muito complexo e acoplado ao .NET Framework, o que dificulta as coisas. Entretanto, será possível continuar utilizando o ASP.NET WebForms, sem esses novos benefícios, mas para isso será necessário continuar instalando o .NET Framework completo.
Em breve, pretendo citar alguns vídeos de palestras do Build e TechEd que valem a pena ser vistas.