Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
1. Visual Basic 9.0 – Visual Studio 2008Quoi de neuf ? Pascal Belaud Développeur Evangeliste Pascal.Belaud@microsoft.com http://blogs.msdn.com/pascal/ Microsoft France Grégory RENARD CTO – MVP – RegionalDirector gregory@wygwam.com http://blogs.developpeur.org/redo Wygwam
2. Agenda de la session Rappel Evolutions du .NET Fx et de son IDE Vue d'ensemble des innovations de VB 9.0 Historique de Visual Basic Objectifs de conception de VB 9.0 Innovations de VB 9.0 Parcours de nouveautés du langage VB 9.0 Rappel des nouveautés de VB 8.0 Nouveautés de VB 9.0
9. VB 9.0, objectifs de conception ! Intégration forte de : L’objet Des données relationnelles Du XML … Linq, query expressions, support du xml … Ameliorations du langage Sur les tâches courantes : déclaration simplifiée d’objets, délégués non stricts, Inférence de type, … Ajout de nouvellesfonctionnalités Lambda expressions Méthodesd’extensions …
10. VB 9.0, ses Innovations ! Query expressions Dim contacts = From c In customers Where c.State= "WA" Select New With { Name = c.Name, _ Phone = c.Phone } Types ValeurNullable Arbresd’expressions Types implicites Support de l’XML Expressions Lambda Dim contacts = customers _ .Where(Function(c) c.State = "WA") _ .Select(Function(c) New With { Name = c.Name, _ Phone = c.Phone }) MéthodesPartielles Méthodesd’extension Types anonymes Initialisationd’objets
12. Rappel sur VB 8.0 Générics Suppression du boxing/unboxing Suppression du Casting implicite Gestion de l’erreur lors de la compilation Meilleure lisibilité du code Meilleures performances Classes Partielles Définition d’une classe sur plusieurs fichiers Utilité dans la génération de code Exploité par les Winforms et Webforms
13. Mais aussi … My Surcharge des opérateurs IsNot Using Types Entiers non signés Etat continue
23. Initialisation d’objets simplifiée Syntaxesimplifiée Mot clé “ With ” Initialisation d’objet avec un type nullable engendrera un compile time error ! http://blogs.developpeur.org/redo/archive/2008/01/28/nouveaut-s-vb-2008-vb-9-0-initialisation-d-objets-simplifi-e.aspx
25. Types Anonymes : « Key » Le mot clé Key vous permet de spécifier le comportement des propriétés des types anonymes. Les propriétés « Key » participent aux tests d'égalité et aux calculs de valeurs de code de hachage. Les valeurs des propriétés de clé ne peuvent pas être modifiées http://blogs.developpeur.org/redo/archive/2008/01/29/nouveaut-s-vb-2008-vb-9-0-types-anonymes.aspx
26. Méthodes d’Extension Permettent l’ajout de fonctionnalité personnalisées aux types de données déjà définis sans créer de type dérivé Permet d’étendre Les Types du .NET Framework Vos propres Types Uniquement : Sub ou Function Doit être marqué de <Extension()> System.Runtime.CompilerServices http://blogs.developpeur.org/redo/archive/2008/01/30/nouveaut-s-vb-2008-vb-9-0-les-m-thodes-d-extension.aspx
27. Conversion simplifiée des déléguées Permet d'assigner des méthodes (subs, fonctions) aux délégués ou aux gestionnaires lorsque les signatures (paramètres) ne sont pas identiques Encore appelé : Délégués Non Stricts RelaxedDelegates Vraie relaxation : les paramètres ne sont pas obligatoires, vous pouvez ne pas les utiliser ! http://blogs.developpeur.org/redo/archive/2008/01/31/nouveaute-vb-2008-vb-9-0-conversion-simplifiee-des-delegues-non-stricts-relaxed-delegates.aspx
28. Types Valeur Nullables Types Valeur peuvent être étendus afin d'accepter une valeur normale ou une valeur « Null » Syntaxe : « T? » Uniquement pour les Types Valeur HasValue / Value Lèveuneexception Nothing” http://blogs.developpeur.org/redo/archive/2008/02/01/nouveaut-s-vb-2008-vb-9-0-types-valeur-nullables.aspx
29. Expressions Lambda Une fonction ne possédant pas de nom permettant de calculer et retourner une valeur unique. Lambda opérateur « Function » Se lit « Function(myNum As Integer) conduit à myNum + 1 » Utilisable chaque fois qu'un type délégué est valide. Simplifications les entêtes d'une méthode anonyme Fonction dans une expression récupérant le pointeur vers cette fonction (Possibilité de récupérer un arbre d’expression) http://blogs.developpeur.org/redo/archive/2008/02/04/nouveaut-s-vb-2008-vb-9-0-expressions-lambda.aspx
30. Support étendu d’XML (1/3) Visual Basic, au travers de LINQ to XML, permet un support étendu de l'XML grâce aux Littéraux XML et aux Propriétés d’Axes XML Littéraux XML d'incorporer directement du XML à votre code VB Objets LINQ to XML Namespace : «System.Xml.Linq» Similaire à la syntaxe XML 1.0 mais pas identique Expressions Littérales XML http://blogs.developpeur.org/redo/archive/2008/02/04/nouveaut-s-vb-2008-vb-9-0-expressions-lambda.aspx
31. Support étendu d’XML (2/3) Propriétés d'Axe XML : permettant d'accéder aux structures LINQ to XML et les parcourir. Permet d'accéder aux nœuds enfants, nœuds descendants et attributs d'un littéral XML Types d’Axes : axe enfant : xml.<phone> axe d'attribut : xml.@NomAttribut axe descendant : xml...<NomElement> indexeur d'extension : xml...<NomElement>(0) valeur : xml...<NomElement>.Value
32. Support étendu d’XML (3/3) Gestion des Espaces de Noms XML : Spécifier un "Alias" afin d'identifier un espace de noms XML Permet d'accéder : aux nœuds enfants, nœuds descendants, attributs d'un littéral XML
33. Arbres d’expression (1/3) Représente une expression sous forme d’arbre AST : Abstract SyntaxTree ASG : Abstract Semantic Graph Un arbre syntaxique est la représentation en mémoire d'un ensemble d'éléments de notre langage res = n * (n - 1); Sources : http://www.dotnetguru.org/articles/dossiers/creercompilo/compilateurdnet2.htm
34. Arbres d’expression (2/3) Traduction des expressions lambda : Code IL Abres d’expression (= code as data) Peut être analysé au Runtime Utilisé dans les LINQ query providers (LINQ to SQL) Dim sq As Func(Of Integer, Integer) = Function(i) i * iDim four = sq (2)Dim e As Expression(Of Func(Of Integer, Integer)) _ = Function(i) i * i λ * i i i
35. Arbres d’expression (3/3) Une expression représente l’arbre d’objets qui représente l’expression passée en argument
36. Autres améliorations VB v 9.0 Friend assemblies Attribut “VisibleTo” Agilité du Runtime Compile sans Microsoft.VisualBasic.dll Origine de CF et Silverlight Nouveau /vbruntime switch Inférence de types générics améliorés
37. Vos questions ? http://blogs.developpeur.org/redo/archive/2008/02/04/nouveaut-s-vb-2008-vb-9-0-expressions-lambda.aspx
38. Resources Visual Basic Dev Center & Content: http://msdn.com/vbasic/ VB Team Blog http://blogs.msdn.com/vbteam/ Refactor! for Visual Basic & Web developers http://msdn2.microsoft.com/en-us/vbasic/ms789083.aspx Nous contacter : Pascal.belaud@microsoft.com Gregory@wygwam.com
39. L’engagement Microsoft pour les développeurs: msdn.microsoft.com La référence technique pour les IT Pros : technet.microsoft.com Visual Studio 2008 + Abonnement MSDN Premium Abonnement TechNet Plus : Versions d’éval + 2 incidents support S’informer- Un portail d’informations, des événements, une newsletter bimensuelle personnalisée Se former - Des webcasts, des articles techniques, des téléchargements, des forums pour échanger avec vos pairs Bénéficier de services - Des cursus de formations et de certifications, des offres de support technique
The main points are that the CLR engine is the same version (so no need to retest your apps) and that the headline feature is the language enhancements (C#3 & VB9 compilers) and LINQ.
The main points are that the CLR engine is the same version (so no need to retest your apps) and that the headline feature is the language enhancements (C#3 & VB9 compilers) and LINQ.
VB = longer history (up to 9.0)Refer to huge transition from 6.0 to .NET which implied the creation of a runtime library for bw compat: play the rules of the CLS (OO for example) and remain consistent with VB pre-.NETVB 8.0 = GenericsVB 9.0 = LINQ + XML (difference with C#)
Similar story as in C# 3.0 except for XML integration; emphasize that language evolutuon doesn’t mean that languages have to go hand in hand on any field.