.NET Framework 3.0 x WinFX: confusão à vista?

Li no blog do Alfred que a Microsoft decidiu rebatizar o WinFX, nova API do Windows, para .NET Framework 3.0. Um dos motivos da mudança seria o fato de muita gente não saber exatamente o que era o WinFX, pensando que seria uma tecnologia à parte ou concorrente do .NET Framework. Lendo o blog de Jason Zander, General Manger do .NET Framework, encontrei algumas perguntas e respostas interessantes sobre o assunto:

1.  What version of the compilers are being used?
.NET FX 3.0 is built on .NET FX 2.0 including the CLR and BCL.  This means you will be using the 2.0 C# and VB compilers from the redist when using .NET FX 3.0.

Ou seja, apesar da versão do .NET Framework ser chamada de 3.0, os compiladores das linguagens, a CLR (Common Language Runtime) e a BCL (Base Class Library), serão os da versão 2.0. Assim, pode-se concluir que o .NET Framework 3.0 vai ser, nada mais, do que o .NET Framework 2.0 com suporte a algumas novas tecnologias como Windows Presentation Foundation - WPF  (antigo Avalon), Window Communication Foundation - WCF (antigo Indigo) e Windows Workflow Foundation. Em outras palavras, utilizaremos o C# 2.0 e o VB.NET 2.0 no .NET Framework 3.0

2.  Will .NET FX 3.0 contain LINQ support?
No.  LINQ support is in the Orcas product which is shipping after .NET FX 3.0 (which ships in Vista).

Agora a coisa ficou confusa de vez: segundo a resposta acima, não haverá suporte ao LINQ no .NET Framework 3.0. O mesmo só será feito a partir do Visual Studio codenome Orcas, que é a próxima versão do Visual Studio, a ser entregue após o lançamento do .NET Framework 3.0, ou seja, o LINQ será suportado somente na versão 4.0 do .NET Framework (se é que ela vai ser chamada assim). Entretanto, se dermos uma olhada no site do LINQ ou no de futuras versões do C#, perceberemos que a versão do C# que terá suporte ao LINQ já está sendo chamada de 3.0. Mas como não haverá uma versão 3.0 do C# no .NET Framework 3.0, isso quer dizer que o C# 3.0 fará parte do .NET Framework 4.0 (ou seja lá como ele for chamado no lançamento do Orcas)?

Se o que eu escrevi acima realmente acontecer, ou seja, versões de linguagens diferentes da versão do Framework, aí sim teremos confusão. Já que o .NET Framework 3.0 utilizará no seu núcleo o .NET Framework 2.0, poderiam chamá-lo de .NET Framework 2.1. Ou então, seguir o exemplo do IE 7 para o Windows Vista: chamá-lo de .NET Framwork 2.0+ Tongue out

Ricardo Oneda.

Novidades do .NET 2.0: Classes Partial


No .NET 2.0, foi introduzido o conceito de classes parciais (partial). Isso significa que a definição de uma classe pode ser dividida em vários arquivos distintos. Esta característica pode ser útil em projetos grandes, onde vários desenvolvedores trabalham sobre a mesma classe, ou então na alteração de código gerado automaticamente - por exemplo, nos proxys gerados para acesso a Web Services - pois assim o código pode ser gerado novamente e não se tem que fazer as alterações outra vez, já que as customizações estarão em outro arquivo. Isso sem falar que todo novo modelo de código do ASP.NET 2.0 utiliza classes partial.

Referências:

Create Elegant Code with Anonymous Methods, Iterators, and Partial Classes
Partial Class Definitions

Ricardo Oneda

Novidades do .NET 2.0: Generics


Apesar da Microsoft já ter liberado o download da versão final do Visual Studio 2005/.NET Framework 2.0/SQL Server 2005 para os assinantes do MSDN, o lançamento oficial dos novos produtos só ocorrerá em 07 de novembro, ou seja, semana que vem. Nestes dias que antecedem o lançamento oficial, pretendo escrever sobre algumas novidades que as novas versões dos produtos nos trazem. Por novidades eu quero dizer desde algo "revolucionário" até a introdução de uma simples propriedade que tenha trazido algum benefício. É claro que eu não tenho a pretensão de citar todas as novidades do .NET 2.0 e muito menos fazer uma lista das melhores. Encarem isso apenas como uma pequena lista de novidades, na qual apresentarei uma pequena introdução ao assunto, de forma resumida, e links, nos quais se pode aprofundar sobre o tema. O primeiro assunto é:

Generics

Generics são uma novidade do .NET 2.0 que nos permitem criar classes, métodos ou outra estrutura de dados de forma genérica, ou seja, independentes de um tipo de dados. Os Generics nos proporcionam reusabilidade de código, tipagem forte de dados (type safe) e melhora na performance, já que não é necessário fazer o boxing/unboxing na conversão de dados, permitindo criar coleções genéricas de um determinado tipo de dado. Por exemplo, antes dos Generics, poderíamos usar um ArrayList para guardar objetos, mas não havia garantia de que o ArrayList contivesse somente um determinado tipo de objeto, o que poderia causar erros em tempo de execução na hora de fazer a conversão. Com os Generics, podemos definir que uma coleção irá conter somente objetos de um tipo específico, e caso essa regra seja quebrada, haverá um erro de compilação.

Referências:

An Introduction to C# Generics
Introducing Generics in the CLR
More on Generics in the CLR
Generics (C#)
Generics FAQ: Fundamentals
Generics FAQ: .NET Framework
Generics FAQ: Tool Support
Generics FAQ: Best Practices

Ricardo Oneda

ASP.NET x JavaScript

Com o ASP.NET ficou mais fácil e produtivo desenvolver aplicações Web, pois ele já fornece vários controles que antes tínhamos que desenvolver e com os quais gastávamos muito tempo. Além disso, o ASP.NET deixou o processo de se desenvolver uma aplicação web bem mais parecido com o processo de se desenvolver uma aplicação desktop. Isso quer dizer que podemos ignorar o JavaScript e o HTML (ou DHTML), pois só o ASP.NET e o código escrito em linguagem server-side é suficiente, certo? Quem pensa assim, não poderia estar mais enganado.

Apesar das inegáveis facilidades trazidas pelo ASP.NET, não podemos nos esquecer que o resultado do processamento do servidor web que é enviado ao browser ainda é HTML e JavaScript. Isso é o que garante (ou pelo menos deveria garantir) que a aplicação irá funcionar em qualquer browser de qualquer plataforma (Windows, Unix, Mac, etc). O que o ASP.NET faz é esconder o trabalho sujo do desenvolvedor, ou seja, o HTML e JavaScript são gerados automicamente e faz com que muitas vezes nos esqueçamos que eles ainda estão lá.

Muitas pessoas têm dificuldade (ou até mesmo não querem) em aceitar isso, principalmente aqueles que vieram do desenvolvimento de aplicações desktop e só agora, com o ASP.NET, estão tendo o primeiro contato com desenvolvimento Web.

Já muitos daqueles que desenvolviam aplicações web antes do ASP.NET reclamam que a integração com o JavaScript ficou mais complicada. Não sei se "complicada" é uma boa definição, mas com certeza é bem diferente da maneira tradicional a qual estávamos acostumados. Mas isso é questão de costume e, depois que nos adaptamos, fica bem mais fácil.

Vejo muitas pessoas reclamarem que a Microsoft deveria ter mudado isso e ter extinto o JavaScript, além de ter implementado várias outras coisas que só são possíveis com scripts client-side, como se dependesse dela ditar estes padrões! Em vez de ficarem esperando tudo e mais um pouco da Microsoft, porque não desenvolver seu próprio controle? Afinal, você pode desenvolver (ou adquirir de terceiros) um controle que atenda as suas necessidades e depois reaproveitá-lo em vários projetos. A plataforma .NET é bem flexível com relação a isso. Ela não te obriga a ficar amarrado ao que é nativo da plataforma.

Apesar de ser possível desenvolver uma aplicação web em ASP.NET sem ter nenhum conhecimento de HTML e JavaScript, você ficará muito limitado e sua aplicação deixará de ter muitas funcionalidades que só são possíveis através de scripts que rodam no cliente (neste caso, o browser). O exemplo clássico é a manipulação de janelas pop-ups e de frames.

Abaixo, seguem alguns links que mostram como trabalhar com JavaScript e ASP.NET:

Client-Side Script Integration in ASP.NET
Injecting Client-Side Script from an ASP.NET Server Control
Using JavaScript Along with ASP.NET

E agora, alguns links que tratam de JavaScript, HTML e DHTML:

Dynamic Drive HTML
HTML Code Tutorial
JavaScript Source
Doc JavaScript

Ricardo Oneda.

História das linguagens de programação

A O'Reilly, famosa editora de livros técnicos de informática, publicou um poster, no formato PDF, com 50 linguagens de programação dos últimos 50 anos em uma linha de tempo. Clique na figura abaixo para obter maiores detalhes. Vale como curiosidade!



Ricardo Oneda.