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#。