
The Benefits of Microsoft ..NET
The Microsoft .NET Framework is an integral
Microsoft Windows® component for building and running the next generation of
applications and XML Web services. It provides a highly productive,
standards-based, enterprise-ready, multilanguage environment that simplifies
application development, enables developers to make use of their existing skill
set, facilitates integration with existing software, and eases the challenges of
deploying and operating Internet-scale applications. The .NET Framework consists
of two main parts: the common language runtime (CLR) and a unified, hierarchical
class library that includes a revolutionary advance in Web-based development by
means of ASP .NET, an environment for building smart client applications
(Windows Forms), and a loosely coupled data access subsystem
(ADO.NET).
Programmers may write applications to the
..NET Framework using a number of languages. Each of these languages is compiled
to the Microsoft Intermediate Language (MSIL), which is then converted to native
code and executed on the CLR. Since each language interacts with code written
for the CLR, any application written in any language can interact with any other
application written in any other language. With the introduction of the CLR,
programmers now have a rich palette of languages from which to choose, helping
them select the right language for their skills and for the task at
hand.
A Rich Palette of Languages
Just as artists are unique and employ the
medium and tools to suit their experience and personality, software developers
employ programming languages based on their skills and the task at hand. No one
language satisfies the needs of all developers. Programmers are an innately
different breed: part artist, part scientist, always opinionated, and never
satisfied. Always seeking perfection, programmers nonetheless accept the
imperfection of modern programming languages. Some of them cross-train and
switch languages on a whim. Others seek greater expertise in a single language.
After all, Michelangelo was a gifted sculptor and a brilliant painter, while
Monet excelled with oil and canvas alone. Yet we appreciate them for the genius
each possessed.
"We're always going to have a half a
million or 50 million religious VB programmers. But guess what? We have VB in
..NET. And now we have Java language in .NET. We've even got COBOL!" – Tim
Huckaby, President and CEO, Interknowlogy
Programming languages are an inherently
personal choice, one based on a number of factors. Rather than force programmers
to adopt one language over another, Microsoft provides a platform on which a
number of languages—C++, Objective-C, Fortran, COBOL, Visual Basic®, Perl—can
each flourish and enjoy full access to the power and flexibility of the ..NET
Framework.
For its part, Microsoft offers four
programming languages and associated development environments, each designed to
appeal to a particular school of programmer:
Visual C++® .NET, the tool of
maximum power and control. With the C++ language, power-oriented
developers can bridge platform technologies and build both native
Windows-based and .NET-connected solutions with maximum performance
characteristics and enhanced functionality.
Visual C#® .NET, the modern and
innovative programming language and tool. Introduced in 2001, C# offers a
familiar syntax, that is attractive to C++ and Java developers, along with
unique language constructs that offer code-focused developers a more
elegant experience when developing applications for the .NET
Framework.
Visual J#® .NET, the Java-language
tool for Microsoft .NET. Visual J# .NET gives Java-language and existing
Visual J++ developers complete access to the .NET Framework and the
industry's most advanced XML Web services platform, while maintaining a
familiar language and syntax.
This document highlights the rich palette of
Microsoft-developed languages available to developers. With Microsoft ..NET,
programmers and businesses can make use of the skills they've accumulated, while
incorporating new platform, tool, and language features that will help them
build compelling solutions faster.
Visual Basic .NET
http://msdn.microsoft.com/vbasic
Visual Basic 1.0 revolutionized Windows
development by lowering the barrier to entry and making a broad audience of
developers more productive than ever. Building on this rich history,
Visual Basic .NET offers task-oriented programmers a human readable
syntax, an intuitive user interface, and tools and upgrade wizards that speed
the development of Microsoft .NET-connected applications. Visual Basic ..NET
takes advantage of the ease of development espoused by its exceedingly popular
predecessors, while adding new capabilities that enable all manner of
programmers, from the beginner to the experienced corporate developer, to build
applications for Windows, the Web, and mobile devices.
Task-Oriented Development
Deadlines are nothing new to the software
industry. For a large group of programmers, deadlines are a daily fact of life.
These programmers are often charged with building opportunistic applications
that address a specific business need and require a modicum of planning and a
fast track to deployment. Sometimes such solutions will be tested rigorously,
while other times the application will be built and immediately deployed,
freeing the programmer for the next assignment. These task-oriented developers
are focused on delivering solutions quickly. Task-oriented development tools,
therefore, must place such a premium on productivity that it is
acceptable to abstract programmers from the nuances of the underlying platform
and empower them to conceive of an application, build it from scratch, and
quickly disseminate it across a business group.
Programmer Constituency
Visual Basic .NET is ideal for the following
types of programmers who are looking to use the .NET Framework to construct the
next generation of applications and services:
-
Programmers looking for a fast and
productive development tool for the .NET Framework. Visual Basic ..NET
offers an easy-to-understand syntax and an intuitive development environment
to help programmers construct applications quickly. Further, with a large and
established community of programmers, Visual Basic .NET programmers have a
wealth of resources at their disposal to help them get up to speed with
Microsoft .NET.
-
Programmers with existing Visual Basic
skills or code assets. Visual Basic .NET builds on the keywords, syntax,
and nuances of the Visual Basic language. Its case-insensitivity will be
immediately familiar to traditional Visual Basic developers, as will the
human-readable syntax. Programmers with a significant code investment in
earlier versions of Visual Basic can move their code forward using the
built-in upgrade technology. Additionally, most existing ActiveX® controls can
continue to be used with Visual Basic .NET.
-
Developers looking for familiar
design-time and code editor paradigms. Many of the principles of designing
applications and writing code are carried forward from the Visual Basic .NET
predecessors, including drag-and-drop design of applications, IntelliSense®
for assistance in writing code, and automatic code formatting for easier
readability.
-
Programmers looking to build
applications with a more intuitive and accessible language. Visual Basic
.NET is designed to be accessible to a full range of developers, from
beginners to experts. Beginners will find many unique features of the Visual
Basic language as useful as the key productivity enhancements of the Visual
Basic environment.
Unique Language Features
Visual Basic .NET contains several unique
language features that lend it an aspect of productivity not found in the other
Microsoft-supplied .NET languages, including:
-
Default variable initialization.
Visual Basic .NET does not require variables and members to be initialized
prior to use, so beginning programmers may not be frustrated by seemingly
arcane use requirements as found in other .NET languages.
-
Implicit typing and late binding.
Visual Basic .NET code need not specify the type of a variable before it is
used, helping programmers write useful code with a minimum of
training.
-
Enumeration behavior. Visual Basic
.NET offers more intuitive behavior when using enumerated
types.
-
Default public access. By default,
members of a Visual Basic .NET class are declared to be public, which offers
programmers a more intuitive syntax.
-
Use of shared members. Shared
members may be accessed in Visual Basic .NET through both the class name and
an instance variable of the type to which they belong, helping programmers
write intuitive code. For example:
x.SharedMethod() ' works just as
well as...
-
Optional parameters. Visual Basic
.NET supports optional parameters, affording class designers more flexibility
in designing their libraries and giving programmers the ability to write
useful code without having to learn all the nuances of object-oriented
programming.
-
Filtered catch blocks. Visual
Basic .NET offers flexible structured exception handling errors. Filtered
catch blocks enable developers to filter errors based on the class of the
exception, any conditional expression, or an explicit error
number.
-
Parameterized properties.
Properties in Visual Basic .NET may contain parameters, making them more
flexible than their C# counterparts.
-
Declarative event handlers. Visual
Basic .NET event handlers may declare the events to which they are subscribed
using the Handles keyword.
-
Interface member redeclaration.
Visual Basic .NET enables programmers to rename a member of an interface when
it is implemented in a class.
Unique Environment Features
Visual Basic .NET also includes a number of
key environment enhancements that enable programmers to more productively design
and write compelling applications and services. These enhancements are above and
beyond the Visual Studio® .NET features shared among all .NET languages:
-
Background compilation. Background
compilation works behind the scenes, silently compiling your code while you
are working. Visual Basic .NET developers should be able to know immediately
if they have errors in their code.
-
Pretty listing. The Visual Basic
.NET code editor can (optionally) automatically format your code as you type,
saving you time. Pretty listing can automatically align your code to the
correct tab position, recase keywords and variables, add a missing
then to an if statement, and more.
Performance
A final area of great importance is
performance. The Visual Basic .NET compiler generates Intermediate Language (IL)
code that is equal in performance to the code generated by the C#
compiler.
Visual C++ .NET
http://msdn.microsoft.com/visualc
Often, power-oriented programmers will
need to exploit the full capabilities and performance of the underlying
platform. Despite the numerous benefits of the CLR and the .NET Framework, some
programmers still build applications that depend on the full depth and breadth
of the Windows operating system. These programmers have traditionally chosen
Visual C++ to attain more exacting control of their applications through highly
optimized code and efficient access to system-provided services, including
memory, disk access, and more. Visual C++ .NET continues to offer direct access
to the Windows platform by way of native code generation and the Win32® API.
Visual C++ also gives developers access to the full range of capabilities of the
managed CLR and the .NET Framework.
Power-Oriented Development
In many situations, programmers need complete
access to all of the features found in the underlying operating system.
Historically, Microsoft has offered a spectrum of programming tools, some of
which abstract the full breadth of the Windows platform while others deliver
unfettered access to all Windows features. Today, while the .NET Framework
delivers a range of APIs suitable for building robust enterprise software, it
still does not provide access to all of the functionality found in Microsoft
Windows. Power-oriented development tools acknowledge this requirement and offer
programmers language constructs, class libraries, and environment features to
comfortably build the full range of solutions that their business
needs demand.
Programmer Constituency
Visual C++ .NET is ideal for a number of
programmers and situations, including:
-
Programmers who wish to build
Win32-based applications and components. A core group of programmers still
has the need to build native Windows-based applications. These programmers use
the Win32 API and native C++ class libraries for superior performance and
functionality. Visual C++ .NET 2003 introduces several new compiler
optimizations that can help programmers achieve even greater performance
efficiencies in these types of applications.
-
Programmers who wish to bridge the gap
between native Windows-based and .NET-connected applications. Existing
applications often have complex code which, for a variety of reasons,
including time, cost, and even capability, cannot be immediately rewritten to
use the .NET Framework. With Visual C++, programmers can extend existing
applications or write new code to consume the .NET Framework while still
interacting with even the most complex Windows APIs. While C# and Visual Basic
offer access to Windows APIs, neither rival the innate ability of C++ to
interoperate with existing Windows code.
-
Programmers chiefly concerned with the
performance characteristics of their applications. C++ offers developers
the largest degree of control over program design and execution. Advanced
developers can design and implement applications using C++ that execute more
quickly and efficiently than if they were written in other languages,
including both native Windows-based and .NET-connected
applications.
-
Programmers who wish to build truly
cross-platform solutions. Only the C++ language contains an
ISO-standardized and truly portable syntax, available on virtually every
operating system platform. Visual C++ .NET 2003 offers increased standards
compliance, enabling programmers to use advanced language features and to take
advantage of popular class libraries available for a variety of different
operating systems.
Unique Language Features
Visual C++ .NET contains several unique
language features in high demand among advanced programmers. These language
features contribute to making C++ the most powerful of all the
Microsoft-provided Visual Studio languages:
-
Templates. Templates comprise
several compile-time language features which are largely unique to C++,
enabling many code reuse and performance enhancing
capabilities.
-
Pointers. Pointers give C++
developers direct access to machine level memory locations, enabling the
highest performing applications.
-
Multiple inheritance. C++ offers
developers a full gamut of object-oriented programming (OOP) features for
implementing the widest variety of OOP programming
patterns.
-
Intrinsics. Intrinsics provide
developers access to key platform features not available through traditional
programming practices, for example MMX and AMD 3DNow! registers and
instructions.
-
Compile-time attributes. C++
attributes provide a shorthand means of writing highly tuned repetitive
boilerplate code using a simple and robust syntax.
Unique Environment Features
Visual C++ .NET 2003 also contains a variety
of environment features that assist programmers in creating flexible and
powerful applications, including:
-
Optimizing Compiler. The Visual
C++ Optimizing Compilers tune applications for a variety of scenarios,
including target machine environments, floating point calculations, and MSIL
generation.
-
Runtime Code Security Checks.
Programmers can write more-secure nativeWindows-based applications using
advanced compiler features that help protect applications from malicious
attack.
-
32- and 64-bit support. Visual C++
compilers are available for multiple hardware platforms including 32- and
64-bit Intel and AMD microprocessors, and a variety of embedded device
microprocessors, enabling truly scalable applications.
-
Advanced Error Reporting.
Applications are always susceptible to programmer error. Visual C++ enables
developers to more easily identify and correct bugs, even in deployed code,
with Minidump technology.
-
Advanced debugging. The Visual
Studio Debugger and Visual C++ provide seamless support for simultaneously
debugging both native and managed code.
In the future, Visual C++ .NET will include
several advanced features to help programmers gain more exacting control over
their components and applications:
-
Generics. A run-time technology
for reusing parameterized code algorithms.
-
Templates on managed types. The
ability to use compile-time C++ template syntax and technology with managed
types.
-
Richer support for creating common
language specification (CLS) conformant and verifiable assemblies. The C++
compiler will aid the developer by flagging non-CLS conforming types and
nonverifiable code.
Visual C# .NET
http://msdn.microsoft.com/vcsharp
Traditionally, Visual Basic and Visual C++
have occupied opposite ends of the developer spectrum. Visual Basic, with its
emphasis on productivity, has customarily focused on offering programmers the
easiest, most intuitive development experience, sacrificing full coverage of
underlying system resources in the process. On the other hand, Visual C++ has
always erred on the side of offering complete access to the Windows platform,
even if it meant a conscious choice away from greater productivity.
To bridge the gap between these two
offerings, Microsoft provides code-focused developers the modern and
innovative C# programming language. C# offers programmers a clean and
elegant programming language, familiar to C++ developers, with many of the
productivity benefits enjoyed by Visual Basic programmers.
Code-Focused Development
All programmers write code at some point in
their projects. However, many programmers also spend a considerable amount of
time using wizards, controls, and designers to gain a measure of productivity in
their application design and development. For code-focused programmers,
the unfortunate side effect of such productivity is less understanding and
control over the code used within their programs. Given the choice between
greater productivity and greater understanding of their code, code-focused
programmers often prefer to "trust" the code they write themselves rather than
code that is emitted by the development environment. Indeed, such programmers
may at times resort to using a designer or wizard, but will invariably elect to
modify the generated code, at a minimum for formatting consistency and often for
functional perfection.
Moreover, code-focused programmers tend to
write code that is intended for reuse by others, perhaps even those less
knowledgeable or sophisticated about their development practices. The business
frameworks and class libraries these programmers create often require only a
code editor and rarely involve a design surface of any kind.
Programmer Constituency
The C# programming language is ideal for the
following types of programmers who are looking to use the .NET Framework to
build the next generation of applications and services:
-
Programmers seeking a productive
language in the C/C++ family. The C# language supplements a C++-like
syntax, with support for operator overloading, enumerated types, case
sensitivity, and more, with additional component-oriented features, such as
properties, attributes, delegates, events, and more. Together with the ..NET
Framework, these familiar and new features offer C++ programmers a readily
usable syntax with superior productivity, manageability, and security benefits
to native code.
-
Framework designers and software
architects. With robust support for authoring business frameworks,
including operator overloading and even unsafe code for access to earlier
software, C# offers software architects the features necessary for building
rich, flexible business frameworks and libraries. With upcoming future
features, including generics and iterators, C# will continue to offer
architects a superior alternative for building business systems based on the
.NET Framework.
-
Programmers with a large investment in
Java-based software. With the Java Language Conversion Assistant (JLCA),
programmers with a large investment in Java-based software can quickly migrate
their existing code to C# and the .NET Framework. The JLCA performs a
source-code level analysis of code and generates new C# code based on the
legacy Java-based software. Once the analysis and conversion is complete,
areas of code requiring further attention from the developer are clearly
marked, enabling the programmer to complete the migration process, if
necessary.
C++-Like Language Features
The C# programming language also contains a
number of features that bring traditional C++-style development to programmers
building applications with the .NET Framework. Often, these features resemble
functionality found in Visual C++, albeit with greater productivity:
-
Support for all CLR types. The C#
language supports all data types defined in the CLR, enabling programmers to
create solutions that take full advantage of the .NET managed execution
environment.
-
Pass-by-reference and out
parameters. Using C#, programmers may pass variables by reference to a
function and even create out parameters that require initialization prior to
the termination of the function in which they are
defined.
-
Operator overloading. C# allows
framework designers to create more robust class libraries by overloading
operators.
-
The "using" statement. Programmers
may gain slightly more control over how their application manages resources by
employing the using statement.
-
Unsafe code. C# enables
programmers to selectively use pointers and manipulate memory. While "unsafe
code" is still managed by the CLR, it does afford the advanced programmer
greater control over how their application uses memory. For the most control
over application memory, however, programmers are advised to use Visual
C++.
-
XML documentation. Programmers may
use XML to annotate and document their solutions alongside their code.
In addition, C# is a rapidly evolving
technology that stretches the boundaries of language design. The C# language
designers plan to add a number of additional features to the language,
increasing the array of options at the programmers' disposal, and allowing them
to create applications using a modern, innovative programming language. These
features include:
-
Generics, a form of C++ templates
that makes reusing existing code easier.
-
Iterators, a construct that makes
traversing collections of data significantly faster and
easier.
-
Anonymous methods, an easier way
to perform simple tasks using delegates.
-
Partial types, a means for
programmers to split code across multiple files.
Visual J# .NET
http://msdn.microsoft.com/vjsharp
Microsoft rounds out its programming language
offering by introducing the Java language on .NET, with Visual J# ..NET.
Visual J# .NET helps programmers, students, and professors preserve their skills
and curricula by enabling them to use the Java language to construct solutions
using the full functionality of the .NET Framework. Further, Visual J# ..NET
helps ease the transition to Microsoft .NET for Visual J++ 6.0 customers, giving
them an avenue with which to migrate their skills and solutions to the next
generation Windows-based platform.
Java-Language Development
The Java language has solved many problems
traditionally facing C++ developers through a simpler syntax and familiar
object-oriented functionality. For developers using the Java language, Visual J#
..NET offers the most familiar and productive way to start building applications
with the .NET Framework. Java developers can continue to use the Java
language and immediately incorporate any of the rich functionality found in the
..NET Framework.
Programmer Constituency
Visual J# .NET is ideal for programmers in a
number of situations, including:
-
Existing Java-language developers.
Developers who are already well-versed in the Java language may not wish to
learn a new language. Visual J# .NET preserves the Java-language developer's
skills and investments and reduces the barrier to learning the .NET
Framework.
-
Programmers with an investment in
Visual J++. Visual J# .NET migrates and converts Visual J++-based projects
into Visual J# .NET. The converted projects can immediately be enhanced to
take advantage of functionality found in the .NET Framework.
-
Students, teachers, and
professors. Visual J# .NET can be used by students, teachers, and
professors to teach the fundamentals of Computer Science using the simplicity
of the Java language. Visual J# .NET meets all requirements of the Advanced
Placement Computer Science exam.
Unique Language Features
J# contains a number of language features
designed to make it the most comfortable and familiar experience for the
Java-language developer looking to develop applications using the .NET
Framework:
-
Java-language syntax.
Java-language developers will find that they can use the syntax they are
already familiar with and gain full access to the .NET
Framework.
-
Class library support.
Independently developed class libraries designed to provide the functionality
of most Java Development Kit (JDK) level 1.1.4 class libraries and many of the
classes in the JDK 1.2 java.util package specified in College
Board's Advanced Placement curriculum for Computer
Science.
-
Properties, delegates and events.
J# has support for consuming and exposing .NET-style properties,
delegates, and events while maintaining consistency with traditional
Java-language syntax.
-
Javadoc comments. J# supports
Javadoc-style code comments. Visual J# .NET includes a tool that users can
invoke to generate HTML API documentation based on the Javadoc comments.
Unique Environment Features
Visual J# .NET plugs directly into the Visual
Studio .NET development environment, giving J# developers full access to
features like the designers, debugger, and advanced editors. There are also a
few tools designed to help existing Java-language developers transition to
Microsoft .NET:
-
Visual J++ Upgrade Wizard. Visual
J++ developers can upgrade their projects to Visual J# .NET. The Upgrade
Wizard converts the project file and gives the user context-sensitive help
related to any potential problems.
-
Binary converter. This tool
converts Java bytecode files to Microsoft .NET assemblies for use in
.NET-connected applications.
Summary
Programming languages may be used to build a
variety of solutions. Each language contains unique features and benefits that
make it best-suited for certain kinds of applications. Microsoft offers a rich
palette of four programming languages which together provide developers with the
functionality necessary to build robust .NET-connected software.