驾驭Linux编程用Delphix编程
赵亦朋
可能你还没有听说,Borland正在将他们最优秀的Delphi产品移植到Linux当中。对大多数专业的程序员来说,这肯定是最令人激动的。早些时候,你可能看到过有关Kylix计划的一般性的描述。现在Borland对此已经透露出更多消息,本文将让大家了解更多的细节。
Delphi是一个快速应用开发(RAD)环境,一个现代的、面向对象的程序设计语言以及可扩展的、基于组件的架构为它提供了强大的动力。当前,所有这些强大的功能只能在Windows中得到,它被成功地用于游戏、开发工具、桌面应用的开发,并且用于驱动网站以及连接多级数据库系统。这篇文章将关注Delphi
for Linux以及C++ Builder for Linux。
代号:Kylix
Kylix是Borland公司的一个关于将Delphi和C++ Builder移植到Linux中的巨大工程的代号,第三方开发商也正在使用Borland的工具和组件创建程序、努力工作,以确保在产品发布时第三方的支持能够同时就绪,希望将快速应用开发带到Linux中来。
尽管如此,Delphi不是为所有人设计的。
有一点要说明的是,Delphi中使用的语言是Pascal。仅仅听到Pascal这个名字就会让许多程序员匆匆地离开,但不要这样匆忙。它不是你从老前辈们那里听说过的Pascal,它与传统的Pascal相去甚远。Delphi具有许多现代的优点,例如:
*
面向对象(类的单线继承,接口的多线继承,单一的根类);
* 整形的溢出检查;
* 数组边界检查;
* 异常处理;
* ANSI和Unicode字符串;
* 嵌入汇编;
* 运行时期类型信息;
* 基于单元的模块化编程;
* 单元的静态和动态链接;
* 强类型,除非当你需要隐藏类型检查,可以使用变体(Variant)类型;
* 多线程支持(TThread类,同步,线程局部存储);
* 函数重载;
* 运算符重载;
* 快速、优化本地代码编译器。
换句话说,Delphi具有一个程序员开发现代软件所需要的所有东西(唯一的例外——通用类型——但是没有哪一个语言能做得到)。
快速应用开发(RAD)
Kylix不仅包含了Pascal编译器,它的集成开发环境(IDE)支持快速应用开发,这意味着:
* 语法指导源代码编辑器;
* 集成的跟踪调试器;
* 可视化窗体编辑器(窗口和对话框);
* 可视化选单编辑器;
* 可扩展的、基于组件的框架;
* 丰富的各种可视化控制和容器类;
* 与众多SQL数据库集成的组件;
* 许多流行的Internet协议组件;
* 商业和自由的第三方组件;
* 可创建扩展的设计时期工具;
* Apache模块;
* 简单或复杂的数据库应用;
* 商用或自由的第三方工具;
* 可扩展的IDE;
* 无需学习单独的扩展或脚本语言。
你还是对Kylix不感兴趣吗?没办法啦,就象我在前面写的,Kylix并不是为所有人设计的。
如果是以下情况,不要使用Kylix
* 你喜欢令人讨厌的繁琐的代码——如果你不愿意用点击鼠标和拖放组件的方式编程,而宁愿自己写几百上千行的代码,那么你可能不会喜欢Kylix。
* 你需要写核心模块——Kylix不支持Linux核心依赖的GNU扩展(特别地,Kylix对于嵌入式汇编有不同的语法)。
* 你在写浮点运算密集型代码——Kylix具有一个优化编译器,但是它没有对数学浮点运算进行优化。
* 你舍得用所有业余时间用于处理匆匆写出的代码。
什么是RAD
现在你知道了Kylix不能做什么,那么用它来做什么呢?快速应用开发意味着:快速而高效地编写应用程序。
应用可以是桌面工具、游戏以及字处理程序,也可以是数据库的客户端、服务器端或者中间层,可以是网络客户程序如电子邮件阅读程序或网络服务程序如Web服务器。
“快速”意味着使用Kylix要比使用传统工具如gcc、Emasc、vi和gdb等以更快的速度编写应用程序。
快速的第一部分是可视化的窗体(窗口和对话框)设计器。点击一个组件,拖放到一个窗体上。选择一个组件并修改它的属性。这些特性是很平常的,你可以在Glade、KDevelop或其他工具中找到,所以完全不必为Kylix具有这样的特性感到惊奇。
Kylix远远不只是一个GUI(图形用户界面)的编辑器,它对于数据库组件、网络组件及其他组件使用一种可扩展的、基于组件的框架。这一框架称为CLX(交叉平台组件库,发音是“kliks”)。CLX可以很容易地被扩展。已经有第三方的开发人员在编写其他组件用以补充标准组件。通过继承已有的组件你可以很容易地建立一个新的类。CLX包含以下几部分:
* BaseCLX包含组件框架的核心部分。包括简单的收集类(基于数组的列表),字符串管理,I/O(输入/输出)、日期和时间函数,文件管理,异常处理等。
* VisualCLX中图形和可视化控件使用TrollTech公司的GUI工具包Qt(Borland已经与TrollTech就有限许可证进行了谈判,如果你购买Kylix,你有权在自由软件、共享软件或商业软件中使用Qt,你不必为使用Borland许可的Qt另外向TrollTech公司付费)。
* DataCLX使用Borland公司的dbExpress连接广泛的SQL数据库,包括Interbase(此产品目前已经开放源代码)和MySQL。你可以在单级架构(数据库与应用在同一台机器上)、客户/服务器或多级架构中使用DataCLX。
* NetCLX提供了通用Internet协议的组件,从直接的Socket包访问到TCP、FTP及HTTP协议,用以编写客户及服务器程序,甚至包括Apache模块。
因为CLX是可扩展的,所以将会有大量的第三方组件。我们完全可以期待网站(如Delphi
Super Page和Torry's Delphi Pages)中保存着的数以千计的用于Delphi
for Windows的组件,在Kylix开始销售后会有同样丰富的组件。第三方工具和组件供应商已经在为此而工作,并且已经使他们的组件在预发行的Kylix中能够运行。
组件将会给使用带来许多便利。例如,你可以将一个POP3客户组件拖到一个窗体上,加一个树型组件用来显示目录层次,一个列表组件显示文件夹中的信息,一个文本区显示单个信息。为了联系各个部件,你需要增加一些事件处理程序,它们就是在窗体类中声明的方法(成员函数)。一些处理程序很简单,如树型组件的OnChange过程,它查找选中的文件夹,将所有的信息提取到列表组件中显示。因为有完全面向对象的Delphi或C++供你使用,你可以编写任意简单或复杂的事件处理程序。
用不到一天,你就可以得到一个基本、但是功能齐备的电子邮件客户程序。
RAD容易受到批评的一点是因为它允许你快速建立极端简单的应用,一些作者宣称可以象点击一样容易地建立应用,但是我们全都知道真正的难题需要真正的代码。
Kylix RAD最强大之处在于CLX组件框架简化了令人乏味的应用程序界面设计,同时并未隐藏语言本身及操作系统的强大功能。如果你需要直接作系统调用,你可以做到。
你的时间不必再浪费在编写代码管理窗口和组件上,你只需提供应用的内部商业逻辑、计算公式、组织结构等,Kylix设计用来开发各种应用。在编写代码过程中,编辑器会在许多方面给予你帮助:
*
根据语法的高亮度彩色代码为你显示出保留的关键字、不匹配的字符串、注释等。
*
记不清成员函数怎么办?开始键入,源代码编辑器会给你显示出一个列表供你选择。
*
记不住函数参数怎么办?源代码编辑器会告诉你参数的名称和类型。
*
源文件太大不便查找怎么办?代码浏览器会显示出所有的类、子程序、类型以及文件中的声明等内容,使大文件的操作变得很容易。
*
声明在哪里?选择一个标识符并直接跳转到它的声明处,甚至声明在另外的文件中也同样可以做到。你能在一个工程中查找所有对一个声明的引用。
甚至当源代码编辑器缺少你想要的特性时,你可以扩展编辑器及IDE的其他部分。
可扩展的IDE
有时,你需要比组件所能提供的更强大的功能,Kylix提供了一个可扩展的IDE,你可以加入新的设计工具。例如,选单条与弹出式选单都是一个组件,这些组件中依次包含着选单项组件。编辑这些组件设计选单是一件很乏味的事情,因此Kylix提供了一个交互的选单编辑器能够很容易可视化地编辑选单。Kylix还带有一些向导(与它们的命名相对应)用于设计数据库应用,Web服务模块及其他很多东西。因为IDE是可扩展的,第三方的开发人员正在为附加的向导而工作,并且你可以编写你自己的向导。
一些其他工具需要你学习特定的扩展语言(如Emasc中的Lisp)。在Kylix中,你可以继续使用你每天都在用的开发语言。用Delphi扩展Delphi
IDE,用C++扩展C++ Builder。你甚至可以用C++ Builder编写用于扩展Delphi的向导或者反过来做,所以第三方的开发人员可以任选他们使用的语言,并可以向所有的Kylix用户分发他们的产品。
你可以通过以下几种方式扩展IDE:
* 添加设计窗口,例如选单编辑器;
*
在主选单、源代码编辑器的各种弹出选单、窗体编辑器等地方添加选单项;
* 在工具选单中增加项目;
*
添加窗体和工程设计器供用户交互地创建新的窗体、工程或其他文件;
* 定制键值绑定;
* 与调试器、窗体和源代码编辑器等的接口。
另一方面,如果你宁愿使用命令行工具,如果你不愿利用所见即所得(WYSIWYG)的窗口编辑器带来的便利,如果你喜欢挑战艰难的调试,那么毫无疑问,继续使用你现在使用的工具,你不会喜欢Delphi。
C++,当然
真正的程序员使用Pascal,但是有时你需要或更喜欢C++,因此Kylix将会包含C++
Builder for Linux。C++ Builder使用与Delphi相同的IDE和组件框架,只是使用的语言是C++。要使用Delphi的组件框架,你必须使用Borland对C++语言特定的扩展。要注意的是C++
Builder不支持GNU扩展,所以不要试图用C++ Builder重新编译Linux内核。
如果你宁愿遵守标准,C++ Builder也可以编译ISO标准的C++和C。你可以编译任何符合ANSI/ISO标准的应用,并且你将会发现C++
Builder的编译速度要比gcc和g++快。即使你不使用CLX以及交互的窗体编辑器、选单编辑器和其他RAD工具,你同样可以得益于可扩展语法指导编辑器和集成调试器。
Linux与跨平台
Kylix将产生x86本地代码,生成标准ELF二进制文件(程序和共享模块)。不是字节码,不是虚拟机,不是运行库,不需要Windows仿真器。
Kylix的第一个发行版本将不会支持其他的硬件平台。你可以将gcc编译的目标文件链接到一个Delphi工程中,但g++类与Delphi和C++
Builder二进制不兼容。未来的发行版本可能会支持其他的硬件平台,这将由市场决定。也许我们将会看到其他操作系统上的Delphi和C++
Builder。
CLX在Linux和Windows间是可移植的,并且被设计成支持其他未来的平台。因此,Delphi
6 for Windows将同样支持CLX(作为它本地Windows组件库VCL的附加库)。假如你没有使用系统特定的功能(或使用条件编译),你的源代码无需改变就可以在Linux和Windows间移植。
Borland坚定地承诺将在桌面和发行版方面保持中立。也就是说,他们希望你在使用Kylix时不必关心你使用的是发行版还是桌面,无论你喜欢的是Red
Hat、Mandrake、Caldera、Slackware、SuSE或其他发行版,无论你使用的是KDE、GNOME还是简单的老fvwm窗口管理器,开发工具将不会要求用户做出选择。据说,Kylix的第一个发行版将会对KDE支持的稍多一些,因为Kylix和KDE都使用Qt。Kylix应用将可以在GNOME中运行,但不会充分利用GNOME特定的功能,你可以期待未来的发行版本会对GNOME提供更好的支持。
Kylix将如何拯救世界
Linux要成为被广泛接受的桌面操作系统目前面临三个重大的考验:易安装,易用以及足够的应用程序。对于第一条Kylix帮不上忙,但是对后两条却可以起到作用。
为什么你用Windows看我的电子邮件?为什么我在Windows下写这个专栏?一个很简单的事实是,许多应用程序只有Windows版本。我试过Linux上的许多电子邮件和新闻组软件,但我更喜欢使用Windows下的应用程序。我也曾试过许多HTML(超文本)编辑器,我还是更喜欢Visual
Page for Windows。Linux的开发人员面临的问题之一是Linux缺少高效的桌面应用开发工具。
如果你想要快速地做出界面,你可以使用Tcl/tk。如果你在界面后需要更多的编程能力,用Python和tk。如果你需要编译程序的性能,你必须求助于C或C++。当然,你可以使用象Qt和Jx这样的工具包,这些工具包甚至有基本的IDE。所有这些功能Kylix都有。
Borland预计在今年的某一时间发布Kylix。当Kylix销售时,它的特性将是其他Linux
RAD工具力图追求的目标。对专业开发人员和其他人员来说,Kylix将会是Linux开发工具中最有价值的工具。不是所有人都想要使用Kylix,也不可能每个人都用。但如果你珍惜你的时间,如果你想要用有力的工具,如果你想要在Linux的世界中留下你的足迹,你应该密切关注Kylix。