Visual C++,这个现有的用于编写低层代码和Windows程序的程序设计语言,还将继续存在,但是它将被修改更新以支持.NET开发平台。
特别地, Visual C++将获得新的关键字和数据类型(称为Managed Extensions to Visual C++),它使程序员可以创建可控制代码。不过,这些扩展是可以选择的;.NET Framework 所带的Visual C++版本完全向后兼容它的前身:Visual C++6.0,开发者可用它写不可控制代码。
这使C++在.NET领域中具有一个独特的位置。所有其他的微软语言需要向.NET开发平台进行完全的转换——例如,无法使用VB.NET创建一个运行在老的VB runtime上的VB风格组件,也无法直接将一个C# 应用程序编译为 本机 Intel指令。不过Visual C++仍有本机编译器。结合CLR将新的可控制代码与已有的不可控制代码相连的本领,这些都意味着C++开发者可以继续使用同他们过去一直在用的完全相同的语言和环境。
即使有了Managed Extensions,使用Visual C++编写可控制代码仍然比较困难,并容易出错,由于.NET开发平台数据类型和C++的之间的差异,这意味着开发者首先使用Visual C++,正如现在所用的那样,编写诸如低层设备驱动程序这样的不可控制代码,然后使用Managed Extensions来让这些代码能够与某些其他来源的可控制代码协作,或与它们合并。
JScript.NET
JScript.NET是微软的JavaScript (或ECMA Script)脚本描述语言的更新版,它与Java 和Visual J#(参看下文)都不同。与VB.NET 对VB的突破相比,JScript.NET对当前JScript语言(通常用于客户端浏览器脚本描述)的根本性突破比较少,这是因为JScript已经支持和CLR所提供的相类似的数据类型和特征。尽管如此,JScript.NET并非全部后向兼容,微软也还没有宣布任何计划来支持源代码向更新版语言的移植。
对于那些现在使用JScript,并且想要利用自己已有的知识发挥CLR和类库优势的Web开发者,JScript非常有吸引力。
Visual C#
介于使用Visual C++创建可控制代码的困难,微软 创造了一种类似的语言,称作Visual C#,专门用于编写可控制代码。
C#是微软唯一一种从一开始设计就专门针对CLR的语言,微软本身已经使用C#来创建诸如类库和ASP.NET等子系统中的可控制代码。事实上,虽然支持多种语言是CLR的主要设计目标,也不妨认为C#和CLR被有效地设计在一起,并且每一个的设计都会影响另一个。这是不是意味着所有的程序员都应该使用C#?当然不是。
尽管C#比C++更为简单,它仍深深植根于“C”语言家族。这意味着它继承了VB这样的语言所没有的特征。例如,C#语言大小写敏感,而VB则大小写不敏感。C#要求开发者明确地转换数据类型,而VB则进行了某些缺省的转换。C#包括对能够更直接访问底层.NET开发平台基础结构的不可控制代码的支持,例如,C#开发者可以使用指针类型指令访问缓冲内存并检查该缓冲。
微软明智地决定不在VB.NET中使用这些能力,因为这样做将使VB语言更为复杂化,却只不过对于较少的高级VB程序员有益。
简而言之,C#更能吸引现在用Visual C++ 或Java工作的程序员,对于开发组件的高级VB程序员,并且他们需要一门使用CLR和类库的易于学习的语言,C#也有吸引力。
Visual J#.NET
这是一种新语言,它给程序员提供了从现有的Visual J++ Java环境向新的.NET开发环境迁移的途径。
Visual J# .NET是Visual Studio的一个外接式附件,它使程序员能够使用Java语法写应用程序,但最终的应用程序使用.NET Framework 类库和CLR而非Sun的Java 2 API和Java Visual Machine(JVM)(Java虚拟机)。Visual J#.NET还提供工具用以导入和转换J++应用程序,程序然后能在CLR下运行,并且通过CLR和COM协同工作性的功能来访问J++库(例如Windows Foundation Classes(Windows基本类库))。Visual J# .NET没有使用任何Sun Java技术,因此不能轻易地将应用程序移植到Sun兼容Java上。
对于那些已使用Visual J++工作过,并且熟悉Java语法,但又不想转换到.NET开发平台的程序员,Visual J# .NET非常有吸引力。
Visual J# .NET是在Visual Studio.NET之外的一个独立的开发计划,最新版是一个测试版,它还不能与Visual Studio .NET的最终版本相兼容。
Visual Studio .NET
2002年2月,微软发布了Visual Studio.NET(VS.NET)的最终版本,这是微软极力推荐的创建.NET应用程序的软件开发工具集。VS.NET第一次让开发者仔细体会了微软在语言上进行的革命性的改变,同时也解决了许多过去困扰开发者使用微软工具创建应用程序的问题。
随着Visual Studio.NET在调试方面的改进,以及它将开发者所需的工具紧密集成到一个单一的环境上去,VS.NET将大大影响Web应用程序的开发。
以前,开发者只能在Web页中嵌入VB Script或JScript。现在,Web页可以用VS.NET中的任一种语言来生成。IDE也提供了从Web 表单控件中创造Web页的拖放式 GUI,它是完全动态的,易于编码,能自动处理状态问题,根据浏览器兼容能力生成纯HTML,并且将用户界面问题与编码问题相分离。
只需简单地将一个外部的Web Services拖到设计页面上,就可将它与项目连接起来。创建Web Services只需向代码中添加标签属性。可以使用增强的HTML和脚本编辑器。对于许多Web创建者来说,这是一方乐土。
此外Visual Studio.NET还提供了完全集成的数据处理,尤其是XML和数据库集成,通过和数据源相连结合起来,大大简化了对来自不同种类的数据源的联合数据(例如将来自一Oracle数据库的雇员数据合并到基于XML的销售成绩列表中)的处理。
以前,支持某些控件的代码被隐藏起来,开发者很难发现并修改。现在,所有控件发出的代码,包括格式化代码,都可以显示出来,这样便于高级开发者修改表单和控制件的缺省行为,并且在应用程序的外观上给予它们更紧凑的控制。(为了保留大多数VB用户经验,VS.NET IDE使用大纲功能来隐藏代码,直到开发者想要浏览它。)
选择.NET语言的经验规则
·当前的程序员有哪些技巧,以及雇佣新程序员有多容易?
·正在开发的组件是用于单一的终端用户应用程序,还是在不同的情况下被其他程序员重用的基础组件?
·应用程序需要从头编写新代码,还是可能只需修改和改写已有的代码?
·可以使用第三方(non-Windows)语言和工具吗?
下面的经验规则可以帮助开发者选择.NET开发平台语言:
·大多数VB程序是继续使用VB(VB .NET)或许将受益很多。
·对于那些已经熟悉VB的更高级的功能的VB开发者,需要关注一下C#,作为另一种工具。
·已经熟悉Java或J++的开发者将发现C#最适合他们的技巧。
·正在将已有的本机代码改写为.NET代码的C++开发者应使用Managed Extensions to C++。那些继续开发本机应用程序的C++开发者应继续使用现有的C++语言。
·正在开发新的应用程序和代码基础的C++开发者需要在C#和Managed Extensions to C++中做出选择。大多数情形中,这些开发者将发现使用C#的收益非常符合学习曲线。
·对脚本描述Web页非常感兴趣,并且使用Jscript完成过这种工作的,应转向JScript.NET。
·使用过J++以及喜欢Java语法的开发者应考虑J#。