Dr. Bruce E. Krell
SWA Engineering, Inc.
2003 年 5 月
摘要:针对 Visual Studio® .NET、Microsoft® Visual J#® .NET 的 Microsoft Java 语言开发工具,使程序员可以使用 Java 语言访问 .NET Framework 并构建应用程序。Visual J# .NET 不仅功能丰富而且可以提高生产率。本文提供了 Windows 基础类 (WFC) 库和 .NET Framework 类库的体系结构和功能集的概述和对比。(本文还包含英文链接。)
简介随着 Visual J++® 6.0 数年前的发行,Java 程序员可以使用一个称为 Windows 基础类 (WFC) 的库来提供更为丰富的用户界面。此库还为后端编程访问硬件和其他外部接口提供了更为强大的功能,使 Java 程序员可以获得更高的生产率并缩短产品投放市场的时间。随着 Visual J# .NET 的发行和其提供的对 .NET Framework 的访问,开发人员获得了更为丰富的功能并提高了生产率。
本文为开发人员提供了将 J++ 应用程序迁移到 J# 和 .NET Framework 的背景信息。它还提供了对 WFC 和 .NET Framework 类体系结构的高级而有用的对比,便于更好地了解从 J++ 和 WFC 切换到 Visual J# .NET 和 .NET Framework 的影响和好处。
WFC 的当前状态
比较两个基本体系结构之前,有几个重要的注意事项需要说明。将 J++ 应用程序迁移到 Visual J# .NET 时,大多数 WFC 应用程序只会运行百分之九十五左右的时间而不发生更改。J# 的确提供了对 WFC 功能、J/Direct® 和大多数能在 Visual J++ 6.0 中找到的其他特定于 Microsoft 的类的支持。但是,此支持却存在局限性。Visual Studio .NET 的可视设计功能无法应用于由 WFC 定义的组件。例如,这意味着您不能将这些组件从工具栏中拖放到调色板上以快速创建应用程序。此外,WFC 库将完全保持它们现在所实现的样子,因为 Microsoft 不打算在将来以任何方式来改进 WFC。事实上,WFC 类在未来版本的 J# 类库中重要性可能会降低。最重要的是,作为开发人员,您应该利用使用 .NET Framework 类的诸多优点(将在本文的余下部分中进行介绍)。
WFC 体系结构
WFC 库是一组软件包。这些软件包包括一个或多个类,这些类将方法和功能组织成有用的组。下表中包含了一些较为重要的软件包的汇总。
软件包名称 | 软件包功能 |
com.ms.wfc.app | 支持应用程序操作(例如线程)。 |
com.ms.wfc.core | 提供 WFC 类的基础(例如组件和事件)。 |
com.ms.wfc.data | 访问 ActiveX 数据对象和数据格式。 |
com.ms.wfc.data.ui | 实现和支持数据绑定控件。 |
com.ms.wfc.html | 通过对象模型访问动态 HTML 元素。 |
com.ms.wfc.io | 提供用于文件和数据流的类。 |
com.ms.wfc.ui | 提供用户界面组件的类。 |
com.ms.wfc.util | 包括各种实用程序(例如数据转换)。 |
com.ms.wfc.ui.Pen、 com.ms.wfc.ui.Brush 等等 | 用于利用各种绘图工具的类(例如笔)。 |
在上表提到的软件包中有三个值得特别留意。com.ms.wfc.ui 软件包可以提供用户界面。此软件包包含窗体和标准控件(例如按钮、文本框和标签)。另一个重要的软件包是 com.ms.wfc.data。当某个程序使用此软件包内的类时,该应用程序可以方便地访问数据库(例如 Microsoft Access 和 Microsoft SQL Server)。另一个对应用程序程序员有用的软件包是 com.ms.wfc.html。此软件包包含允许 Web 服务器和组件从结构化的、编译的 Java 语言源代码中以编程方式生成 Web 页界面的类。
WFC 体系结构的另一个重要方面是 WFC 提供的继承层次结构。以下是此层次结构的部分示例。
图 1:窗体类的类层次结构
WFC 中,只有层次结构的三个层次可以将程序员直接带至窗体类。与任何继承层次结构一样,叶类(窗体)接收原型类提供的所有方法和属性。请注意,所有属性均使用 set 和 get 方法实现。此外,窗体类本身提供自动滚动工作区内容的功能,只需通过提供的 set 方法来设置 AutoScroll 属性即可。程序员控制实际窗体大小的能力继承于父控件类。
.NET Framework 体系结构
.NET Framework 类的基本元素是程序集。程序集提供了将类和方法组织成可传递的组件的方法,类似于 WFC 中的软件包概念。一般来说,程序员可以将程序集简单地看作存放类集合的黑匣。
程序集名称 | 程序集功能 |
System.Threading、System.Event | 支持应用程序操作(例如线程和事件)。 |
System.Windows.Forms | 提供 Windows 类的基础(例如窗体)。 |
System.Data | 访问 ADO.Net 数据对象和数据格式。 |
System.Windows.Forms.DataGrid | 实现和支持数据绑定控件。 |
System.Web.UI | 通过对象模型访问 HTML 元素。 |
System.IO | 提供可用于文件和数据流的类。 |
System.Windows.Forms .Button、System.Windows.Forms.ListBox 等等 | 提供用于用户控件和界面组件的类。 |
System.Math、System.Convert | 包括各种实用程序(例如数据转换)。 |
System.Drawing | 用于利用各种绘图工具的类(例如笔)。 |
类似于 WFC 中的软件包列表,上表包含了 J# 应用程序程序员最常用的主要 .NET Framework 程序集的列表。此程序集列表与为 WFC 提供的列表相比,前者十分有希望。名为 System.Windows.Forms 的程序集提供了一组类,这些类允许程序显示带有伴随的子控件组的窗口。另一程序集 System.Data,允许访问 ADO.NET 数据对象,提供对几乎所有可以想象的数据存储(包括 Access、SQL Server、Oracle、开放式数据库连接 [ODBC]、OLE DB 甚至原始 XML)的更为简单的编程访问。新的改进的程序集 System.Web,为基于 Web 的组件提供在呈现给用户的 Web 页中生成 HTML 元素的功能。Web 窗体类(统称为 ASP.NET),基于做出请求的客户端类型动态生成标记。例如,如果浏览器支持 DHTML 和客户端脚本,ASP.NET 将使用该支持呈现更丰富的窗体体验。但是不具备更高级支持的客户端查看该页面时,ASP.NET 仍会使用 HTML 的早期版本正确呈现该窗体。此功能将“自动”提供给开发人员,因为开发人员设计该页面后将由 ASP.NET 窗体控件来处理正确呈现。
下图跟踪通向 System.Windows.Forms.Form 类的继承层次结构。通过继承层次结构,在应用程序中使用该类的程序员可以使用同一功能组。
图 2:窗体类的类层次结构
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126331/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-126331/