刀
刀剑如梦
Unregistered / Unconfirmed
GUEST, unregistred user!
从商业的、技术的角度上来说,都是如此。Borland已经不可能再做出一个Framework来对抗.NET Framework。Delphi7这条产品线是做“原生Windows应用”的。它能够做.NET的“非托管代码”。也就是说,比Delphi .NET更靠底层的代码。相比起来,Delphi .NET与Delphi 7/8的关系,很象是VC++与C#的关系。Delphi 7再向上发展,也会是“原生应用”,这是一个产品线。在未来的三、四年中,原生应该还会有市场。但Delphi必须考虑.NET的影响。所以也必须发展Delphi .NET。Borland做出的最大的战略,就是保证──你可以在Delphi .NET中,使用与Delphi 7/8一样的方式(包括代码习惯)来开发VCL的或者FCL(Framework Class Library)的应用。但是,即使如此,用Delphi .NET做出来的程序,也已经不是标准的Windows程序了,而是基于.NET Framework的程序。Delphi.NET上的VCL,只是用VCL的结构封装了FCL而已。这使得开发者的习惯可以保持不变,但的确可以做.NET的程序。这可能是(当然只是可能)Borland放弃在Delphi8及以上版本中进一步发展VCL的前奏。
VCL是TControl以上的对象层次结构。而RTL却在此之下。Delphi给用户的最深的感受是RAD,所以大家都谈VCL,而RTL就相对少得多。事实上,在语言层面上,RTL还是非常非常核心的。
真正的Runtime Library指的是System.pas、SysInit.pas和SysConst.pas三个文件的单元集合。但我们通常说的“核心”,事实上还包括SysUtils.pas、Variants.pas、ActiveX.pas、ComObj.pas和ComServ.pas。这主要是因为SysUtils.pas对RTL是最重要的补充之一;而后面的其它单元,又是COM支持的主要实现代码。通常来讲,Delphi内核是指“面向过程”、“面向对象”与“面向COM”的三级(不是三层)实现。所以,在我的“内核”或者“核心”的概念中,是要包括这些单元的。
让我们举个例子来说明VCL与RTL的区别。
控件编写是如何实现的呢?是“基于TComponet继承的类,是组件;基于TControl继承的类,是控件”。所以,CL本意就指的是从TCompeonet以上的组件集;而VCL是指从TControl以上的控件集。──那么,TComponent以下的呢???比如TObject应该算什么呢?──类。我们即使知道一个窗体如何实现,如何响应事件、消息或者与Windows如果交互,但能知道TObject是怎样实现的吗? 还有,TObject有引用计数吗?或者TObject支持线程安全吗?类似于这样的问题。当然,这仅仅是OO方面所涉及的。RTL还包括:Delphi是如何实现多线程的?Delphi如何把代码变成PE文件的节?Delphi如何组织、管理资源?Delphi如何实现基本数据结构:字符串、集合、数组……以及Delphi如何实现接口、COM等等。
VCL是TControl以上的对象层次结构。而RTL却在此之下。Delphi给用户的最深的感受是RAD,所以大家都谈VCL,而RTL就相对少得多。事实上,在语言层面上,RTL还是非常非常核心的。
真正的Runtime Library指的是System.pas、SysInit.pas和SysConst.pas三个文件的单元集合。但我们通常说的“核心”,事实上还包括SysUtils.pas、Variants.pas、ActiveX.pas、ComObj.pas和ComServ.pas。这主要是因为SysUtils.pas对RTL是最重要的补充之一;而后面的其它单元,又是COM支持的主要实现代码。通常来讲,Delphi内核是指“面向过程”、“面向对象”与“面向COM”的三级(不是三层)实现。所以,在我的“内核”或者“核心”的概念中,是要包括这些单元的。
让我们举个例子来说明VCL与RTL的区别。
控件编写是如何实现的呢?是“基于TComponet继承的类,是组件;基于TControl继承的类,是控件”。所以,CL本意就指的是从TCompeonet以上的组件集;而VCL是指从TControl以上的控件集。──那么,TComponent以下的呢???比如TObject应该算什么呢?──类。我们即使知道一个窗体如何实现,如何响应事件、消息或者与Windows如果交互,但能知道TObject是怎样实现的吗? 还有,TObject有引用计数吗?或者TObject支持线程安全吗?类似于这样的问题。当然,这仅仅是OO方面所涉及的。RTL还包括:Delphi是如何实现多线程的?Delphi如何把代码变成PE文件的节?Delphi如何组织、管理资源?Delphi如何实现基本数据结构:字符串、集合、数组……以及Delphi如何实现接口、COM等等。