Kylix 上海发布会

今年三月二十七日下午, Borland 在上海的国际贵都大饭店举行了 Kylix 的产品发布会, 我很早就得到消息想去参加,结果那天却差点忘记,还好上班时乘车经过国际贵都时想起来。那天上午我给北京宝兰-英 博思信息技术有限公司打了电话,得知发布会开始的时间是下午13:30。因为我对上海的交通状况一向不是太有好感, 中午吃过饭我就出发了,结果到贵都时还很早,好不容易找到会议地点才发现我居然是第一个到的,几个 Borland 的人 正在布置会场,其中一个我去年在北京 JBuilder 4 的产品发布会时还曾经见过。因为我没有名片,所以临来时跟同事 要了一张他的名片,换来一袋会议材料,当然一张光盘是少不了的,这次送的是 JBuilder 4 的试用版, Borland 说 Kylix 的试用版还没出,她在这方面总是要慢上一拍,我去年在北京参加 JBuilder 4 的发布会时拿到的是 Evaluation Kit (其中包括 JBuilder 3.5 的试用版),这回 Kylix 的发面会送的却又是 JBuilder 4 的试用版, 真是的,大概要到 DELPHI 6 的发布会上才能拿到 Kylix 的试用版了,我看我还是去打 D 版的主意吧,正版当然有, Server 版的要¥29950!即使是在这一个月的优惠期内也要¥19800! Desttop 版也要一万多,太可怕了。 Borland 的东东好是好,就是太贵,不过听说可以讲价,但我没试过。^_^

我在会场坐了好一会儿,才陆陆续续地来了一些人,到会的人数差不多百来人,比起我去年 在北京参加 JBuilder 4 的发布会时要少得多,另外值得一提的是居然还有几个MM来参加,不过很少。发布会到快 14:00 才开始,会议是由 Borland 的工程师--北京的李争(Summer)和香港的黎志伟(Brian,我开始还以为他叫 Borland ^_^) 主持的。李争首先介绍了一下 Borland 公司的情况,然后的大部分时间就是和 Brian 演示 Kylix 的使用,这是我第一 次亲眼见到 Kylix ,果然长得和 Delphi 是一个模子出来的样子,不像 JBuilder ,它长得跟 Delphi 很不相同,演示的 内容主要是用 Kylix 写几个简单的程序,一个是一般 GUI 应用程序,一个简单数据库应用程序,以及演示了一个把 Delphi 5 的程序移植到 Kylix 中的例子,演示完后就是自由提问,快到 17:00 时结束。

长得像归长得像,用起来还是有一些不同的,早就知道 Kylix 不再使用 VCL 了,而是 采用了一个叫做“跨平台组件库(Component Library Cross-Platform,CLX,读作['kliks])”的东东,它包括四个部分:

  • BaseCLX:这是一些 RTL 类;
  • VisualCLX:这是用户界面控件;
  • DataCLX:这是跨平台的数据库控件;
  • NetCLX:这是网络控件。

我是前不久在网上看了几篇文章后才知道 VisualCLX 是基于一个叫做 QT(读作['kju:t]) 的跨平台开发工具包,在 Linux 平台下已经有很多开发工具包可以实现了类似于 Windows 下的各种控件,如 GTK,QT 等,它们被称为 Widgets ,比如 QT 就是一个工作在 Linux/Windows 平台下的这样一种 Widgets ,所以它被选作了 VisualCLX 的基础,它的特点有:

  • 它是一个广泛使用的 Linux 下的 Widgets 集,被流行的 KDE 桌面采用;
  • 它的开发和Windows API风格非常相似;
  • 它的图形模块和VCL的图形模块相似;
  • 它的类看上去非常像VCL控件;
  • 它引入大量标准 Widgets ,并且具有消息循环。

当时李争曾多次提到“Widgets”一词,在网上尚不多的 Kylix 论坛上我也看到 一些人在讨论 QT ,我起初都是一片茫然,后来才知道原来是这么一回事。虽然 QT 是主要用于 KDE 的, 但它也可以用于其它桌面,如 Gnome 等,这一点可以肯定,因为 Kylix 本身就可以在 Gnome 上跑, 我就是在 Red hat 7 的 Gnome 桌面上运行 Kylix 的,非常的好。

DataCLX 的核心是一项被称为 dbExpress 的数据库存取技术,除此之外, DataCLX 与 VCL 中的 DataControls 基本上没有太大差别,是组很好用的 DataAware 控件。至于 dbExpress , 我认为他是一种很有前途的数据库存取技术,据李争介绍, dbExpress 是 Borland 为了在 Linux 下存取各种数据库而开发的一项新的技术,它跟 BDE 、 ADO 或 ODBC 不同之处在于,首先它是一种透明连接技术, 只使用数据库提供的标准接口,当数据库升级时,只需升级相应的数据库驱动程序, dbExpress 不需要改变, 而 BDE/ODBC 则需要同时更新相应的 BDE/ADO/ODBC 驱动程序,而且采用 dbExpress 开发的数据库应用程序只须一起发布相应的 dbExpress 接口 SO(Kylix)/DLL(Delphi6)和 TClientDataSet 所需的 LIBMIDAS.SO/MIDAS.DLL ,十分简单;其次,它是用单向数据访问的方式, 可以取得最好的数据访问速度,但也正是因为如此,它需要用 MIDAS 中的 DataSetProvider/ClientDataSet 方式来实现数据缓存和双向访问能力,如下:

TSQLConnection
TSQLDataSet、TSQLQuery、TSQLStoredProc 和 TSQLTable 等 dbExpress 数据集控件
TDataSetProvider
TClientDataSet
TDataSource
DataCLX

虽然这样使得数据访问要多经过两层(DataSetProvider和ClientDataSet),但这样的结构能够同时提供 高效和灵活的数据访问能力,更重要的是,它与多层的 MIDAS 极为相似:

Remote Data Module TDatabase、TADOConnection、TIBDatabase 等
TTable、TQuery、TADODataSet、TIBTable、TIBQuery、etc.
TDataSetProvider
通讯层 通过 DCOM、CORBA、Socket、HTTP 等连接到
Client TClientDataSet
TDataSource
DataControls

使得两层C/S和多层 MIDAS 都以完全相同的方式实现,使得系统更加的 Flexible 和 Scalable ; 最后,也是最重要的一点,这是一项跨平台的技术,也就是说,采用 dbExpress 技术访问数据库的程序, 可以方便地在 Windows/Linux 两个平台上使用,只需分别在 Delphi6/Kylix 中编译一下即可,未来还可能 拓展到其它平台。关于这项技术,在李维的文章 《2001 年軟體界的巨星 - Kylix》 中有比较详细的说明。另外,我的一个同事前天也给我发来一篇文章: 《利用Kylix开发数据库应用程序》,里面有对 dbExpress 的一些更为详尽的说明。

NetCLX 除了包括 Delphi 原有的 WebBroker 等控件外,原来的 TServerSocket/TClientSocket 被 换成了 TTcpServer/TTcpClient/TUDPSocket 三个控件了,取消了对 ISAPI 的支持(因为 Linux 下没有 IIS 嘛^_^),增加了对 Apache 的 DSO 支持(这只有 Server Developer 版才有)。
        <p>发布会结束后,还有一小部分人没有走,继续向李争和 Brian 咨询关于 Kylix 
          的情况,我也是其中之一。 Kylix 目前最主要的问题是在不同的 Linux 平台上运行的问题,除了 Linux 宣称支持的三个 
          Linux 发布版本外,据称中文 Linux 平台中 在红旗 2.0 运行状况还好,当时演示就是用的这个平台,但也还在测试中,不能保证没问题,至于其它的中文 
          Linux 发布中 BluPoint 因为 使用的是内核汉化,可能会有问题, TurboLinux 虽然不是内核汉化,但据说也有问题(虽然后来我在网上听说有人在这两个平台上装成功过, 
          但至少我一个同事在 BluePoint 2.0 上没装成功)。当时有人问了一个问题,说目前 Linux 下的中文处理没有一个统一标准, 
          Kylix 虽然在 红旗下可以支持中文,但据李争说 Kylix 中处理 DBCS(双字节字符集)的部分是一个日本人做的,处理中文可能会有问题,不过 
          Linux 下的 DBCS 处理标准不久前已经出台,这就是 glibc 2.1.3 ,但 Kylix 不支持,李争说 Borland 
          将在不久后出这个补丁,^_^,产品才发布就在谈补丁的问题了。 </p>
        <p>我最关心的问题是 MIDAS ,所以特别就这个问题咨询了李争,李争的答复是 Kylix 
          支持 MIDAS ,这让我十分高兴, 但后来李争又说 Kylix 暂时不支持 CORBA ,我就觉得很奇怪了, Kylix 是肯定不能用 
          COM/DCOM 了,又不支持 CORBA ,那她是怎么支持 MIDAS 的呢? 直到后来我装上了 Kylix 后才明白, Kylix 
          根本不支持 MIDAS !不过相信在下一个版本应该就会支持了,因为我仔细地研究了 Kylix 中相关的部分, 她只是缺少 RemoteDataModule 
          和相应的 Connection ,这大概是因为尚未加入对 CORBA 的支持,所以无从实现 RDM 和相应的 Connection 
          , 但已经提供了 DataSetProvider 和 ClientDataSet ,特别是在 ClientDataSet 中已经有了 
          RemoteServer 属性,但 Kylix 尚未提供一个可以 放入这个属性的控件,我查了 Kylix 的帮助,可惜这部分的内容是从 
          Delphi 里抄来的,看来还是没有,只好等下一个版本了。 </p>
        <p>毫无疑问, Kylix 是一件里程碑般的作品,但同时她也和所有新生事物一样,还很不完善,这也是网上常有人说 
          Kylix 还只是一个玩具,而不是一个成熟的产品。同样这也是最近 Borland 宣布 Kylix 大幅降价的原因。但我相信, 
          Borland 会进一步完善 Kylix 的,下一个版本或者也许 C++ Builder 版的 Kylix 发表时就是另一种情况了。 
        </p>
        <p>补充说明(6月21日):我在6月14日参加 Delphi 6 的产品发布会时特地就 
          Kylix 目前的问题咨询了 Borland 方面, 根据我得到的信息猜测, Borland 近期的重点是 Delphi 6 的推广及 
          C++ Builder 6 的开发测试工作, C++ Builder 版的 Kylix 可能要延期出货, 这不能不说是个坏消息,不过 
          Borland 集中力量做 C++ Builder 6 也是好事,希望 C++ Builder 6 会比 Delphi 6 更好。 
        </p>
        <p>前一段研究了一下 CORBA ,发现 Delphi 5 里的 CORBA 并不是纯正的 
          CORBA ,只是在 COM 的外面穿了一层 CORBA 的外衣而已, 特别是 MIDAS 的 CORBA 连接的实现,完全就是一种用 
          IIOP 的 DCOM ,不过在 Delphi 6 里,这有了重大的变化,加入的完全的 CORBA 支持, 特别是加入了 IDL2PAS 
          的支持(详见<a href="/root/entry.php?id=44"><b>《Delphi 6 上海发布会》</b></a>)。这也难怪 
          Kylix 没办法实现 MIDAS ,我怀疑即使 Kylix 支持了 CORBA , 也无法实现 MIDAS ,除非 Borland 
          对 MIDAS 作大量修改。 </p>
        <p>总的来说, Kylix 目前适合的开发领域在: Linux 桌面开发, Apache 
          Web 服务开发, Cient/Server 数据库开发等, 相比之下,跟 Delphi 1 当年很像,不过似乎生不逢时(迟了一点点,要是早上一年或一年半出来,可能会有很大不同,但那是不可能的),命运不如 
          Delphi 1 好啊。 </p>
        <p align="right">Mar.27, May.30-01 </p></div>