.NET Language Support
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO .NET and XMLADO .NET and XML
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……V
isual S
tud
io .N
ET
Visu
al S
tud
io .N
ET
.NET Language Support Overview
Common Language RuntimeCommon Language Runtime
Base FrameworkBase Framework
ADO.NET: Data and XMLADO.NET: Data and XML
Web ServicesWeb Services User InterfaceUser Interface
VBVB C++C++ C#C#
ASP.NETASP.NET
J#J# COBOLCOBOL ……
IDE & CLR
• Integrated Development Environment– Single Solution Explorer, Toolbox, and Debugger – IntelliSense® statement completion and
squigglies– Create multi-language solutions
• Common Language Runtime– Microsoft: Visual Basic®, C#, C++, J#, JScript®
– 3rd Party: APL, Cobol, Component Pascal, Eiffel, Fortran, Haskell, Mercury, Oberon, Oz, Perl, Python, RPG, Scheme, Smalltalk, Standard ML
Increased Productivity
• Simplifies mixed-language development
• RAD across the board– Desktop –Web– Server –Mobile
• End-to-end debugging support across – Languages – Projects– Processes–Machines
Language Enhancements
• Visual Basic .NET– Fully object oriented, supports free threading– Structured exception handling
• Visual C# .NET– Increased productivity for C++ developer – Component-oriented, type-safe
• Visual C++ .NET– Attribute based programming– Managed Extensions for C++
• Visual J# .NET– Java language for .NET Platform
Visual Basic .NET Overview
• Modern, Powerful, True OOP– Inheritance, overloading, shadowing, delegates,
attributes, hierarchical name spaces• Robust – Strict type checking, initialize variables at
declaration, variable declaration types fixed • Consistent – Single assignment operator, parenthesis use
simplified• Simplified – Legacy constructs removed
Classes & Inheritance
• Inheritance supported– Derive from a single base class– Implicitly inherits from System.Object
• Declarable classes• Overriding
– New implementation for base class method– Overrides keyword– MyBase refers base class– Me refers current class
• Overloading– Multiple versions of a class member– Based on parameter types
Demo 1: Visual Demo 1: Visual Studio .NET Integrated Studio .NET Integrated Development Environment Development Environment
Visual C# .NET Overview
• Strong C++ heritage– Immediately familiar to C++ and Java developers– Allows C-style memory management and pointers
• First component-oriented language in C family– Properties, methods, indexers, delegates, events– Design-time and runtime attributes
• Enables one-stop programming– No header files, IDL– Embeddable in ASP .NET
Component-Oriented
• What defines a component?– Properties, methods, events– Design-time and runtime information– Integrated help and documentation
• First class support in C#– Not naming patterns, adapters, etc.– Not external files
• Easy to build and consume
Comparison to Visual Basic
• Syntactic Differences– Visual Basic is NOT case sensitive
• In C# but not in Visual Basic– Pointers, shift operators, inline documentation– Overloaded operators, unsigned integers
• In Visual Basic but not in C#
– Select Case, Interface implementation– Dynamic arrays, modules, optional parameters
for I = 1 To 10for I = 1 To 10 ‘ ‘ for loopfor loopNext INext I
for (i=1;i<11;i++) {for (i=1;i<11;i++) {// for loop// for loop}}
Visual C++ .NET Compiler & Language
• Optimizations– Whole Program Optimization– Optimized inline assembly integration– Loop unrolling heuristics
• Runtime checks– Buffer Overrun– Stack Corruption– Shortened Converts
• Attributes – domain specific programming– Radically simplifies COM+ and IDL– Integrated with .NET Framework attributes
model
Managed Extensions
• Full access to the .NET Framework from C++• It’s still C++– All enhancements are compatible extensions– Nothing from C++ has been changed or removed
• Enables incremental migration to .NET– Existing code can be recompiled as IL– Mix managed code within existing applications
• Power to drop “to the metal” when needed
Native Libraries
• MFC/ATL– Improved MFC/ATL integration– Integrated Web Service client– Windows® XP, GDI+, Crypto, NT Security,
Perfmon, Accessibility• ATL Server– ATL framework for Web Services and Web
applications– Stencil-based UI generation with integrated
XML/HTML designer• Enhanced STL– Better conformance and error messages– Significantly improved documentation
Visual J# .NET Java-language for .NET
• Native support for XML Web services • Fully integrated with Visual Studio .NET
development environment• Full access to the .NET Framework– ASP .NET, ADO .NET, Windows Forms– Integration with >20 other languages
• Protection of existing investments– Use java language syntax on .NET– Move applications and skills forward
Java-language Support
.NET Runtime
Win32Win32
SourceSourceConverterConverter
Legacy Java Legacy Java SourceSource
BinaryBinaryConverterConverter
Java Java BinaryBinary
MSIL MSIL
Java Source Java Source targeting .NETtargeting .NET
MSIL
.NET Frameworks
Subset of JDK 1.1.4 & VJ++ 6.0 Subset of JDK 1.1.4 & VJ++ 6.0 LibrariesLibraries
.NET Extensions
• To be CLS compliant• Syntax extensions required for CLS
– ubyte– @attribute – For attaching .NET attributes
• Support for consuming .NET constructs:– Properties, Events, Delegates, Value types, Enums
Summary• .NET Language Support
– Multi-language platform, 22 supported
• Visual Basic .NET – More power, more productivity
• Visual C++ .NET– Power and flexibility for managed, native code
• Visual C# .NET– Productivity for the C developer
• Visual J# .NET– Java language support for .NET Platform