作为一个程序员,我在软件行业已经整整十个年头了。现在,我有幸在北京Borland工作,天天面对的是程序员赖以生存的工具软件,个中滋味,自然难以述说。
Borland其实是一家小公司,在当前IT领域遍地富翁的情形下,在微软、Oracle、sun等软件巨头身旁,Borland银行里那一亿美元的储备金,真的算不了什么。
但是我知道Borland有一个梦,一个程序员的梦。为了这个梦能变成现实,Borland的那些天才的程序员终结者们,总在夜以继日地耕耘着键盘,是的,总有一天,梦会成真,程序员们会为之狂悦。
每个公司都有自己的文化,就像每个国家都有自己的信念一样,Borland也有自己的底蕴。福勒先生(现任代总裁)说过,要把Borland建设成一个像瑞士一样的国家。哦,瑞士,这是个不大的国家,是的,Borland只是一个小公司;它以精致的钟表和工具而闻名遐迩,Borland曾用一个Delphi维持了公司八年;它拥有勤劳聪慧的民众,Borland拥有全球最有天分的一群程序员;它在各种艰巨的地形下建造了数不清的人工奇迹,Borland打造了一个又一个的极品软件;在瑞士旅游,你不用担心便利性的问题,用Borland软件,你无须关心繁琐的细节。最重要的是,瑞士完全中立,Borland没有平台。
是的,Borland的产品没有平台。这是西蒙先生(Borland高级副总裁)给程序员的承诺。这是Borland梦想的一部分,可以说已经基本实现。CORBA中间件产品VisiBroker屏蔽并连接了不同的平台。软件对象框架产品AppServer、软件对象治理产品AppCenter、Java开发工具JBuilder都运行在JVM之上因而只要Java能到的地方,这些产品就能到。数据库产品Interbase已经做到了Windows、Linux、Solaris三类平台之上。年底前Delphi for Linux、明年上半年C++Builder for Linux将出炉(参照Kylix计划)。有什么理由不相信Borland能实现自己的承诺呢?
其实Borland所指的平台不只是操作系统平台,还包括语言平台,无论是Pascal、C++、Java,你看到的IDE环境都会是同一个面孔,你使用的组件都是类似的架构。除开语言平台,还包括不同的软件对象体系标准。你会发现无论是使用CORBA,或是Java、或是DCOM、或是MIDAS,你的对象总能互相通信,你在IDE环境中时常会看不到具体标准的痕迹。对了,这就是程序员的梦。在程序员们逻辑的世界里,如何能容忍所有这些平台的束缚呢?我做不到,我一直试图打破一个又一个类似的壁垒,我一直就像在做恶梦,直到我发现Borland可能做到。Borland有同样的梦想。
想一想,为什么一个独立的软件,不能成为一个对象?自从我们发明了对象这个名词以来,似乎已经有太多的人在用这个招牌来吆喝自己的产品了。事实上他们都是对的,因为每一个独立的软件都是一个货真价实的对象。因为它们独立,所以它们满足对象的最基本条件:封装。至于继续,在新软件中使用旧的代码,是不是继续?还有多形,写一个类似的程序,把它和现在的软件放在一起组成一个组,分别实现不同的功能,是不是多形?对了,只有独立封装才是对象是与不是的标准。有自己的名字,有自己的数据,有自己的方法,为什么不是一个对象?是的,这都是对象。
在程序员们逻辑的世界里,这些对象,那都是活生生的生命啊。那都是他们的将士,时刻服从他们的指挥。可是那些讨厌的操作系统,那些数以万计的语言,那些为某些公司专用的标准,这些所谓的平台,他们扼杀了这些生灵。平台让对象们离开出生的家乡就不能生存,还让他们互相不能熟悉对方,不能用长勺喂饱别人。
还好软件世界里还有那么多真正的程序员存在,还好在关心对象命运的公司也不止一家。这些公司(至少有800多个吧),他们组成了一个组织叫对象治理组织(OMG),他们出了一个标准叫CORBA。CORBA熟悉所有这些对象,这些独立的软件。CORBA还让他们互相熟悉,请求对方为自己完成自己力不能及的事情。
是的,我们不再需要要求所有的对象都必须符合DCOM的二进制代码规范,在除Windows以外的世界,我们找不到任何合手的软件来生成这些代码块。我们也不需要所有的程序员来学习Java语言,我们可以用自己习惯的语言。任何旧的代码都是程序员自己带出来的兵,我们今天不需要去遗弃他们。
假如现在有人对我说他用UNIX上的Java程序和他的Windows下的C++程序一起集成了一个新的系统,我不会感到希奇,因为Borland的VisiBroker、JBuilder和C++Builder让你可以做到。假如有人对我说,他的EJB可以和CORBA对象互相熟悉并能友好交流,我不会感到希奇,因为假如你在AppServer框架下开发EJB,那么它本身就能是一个CORBA对象。Java对象必须存活在某个小一点但完善一点的框架环境之下,但这并不意味着它们不能通过类似于Borland AppServer这样的框架环境来融入CORBA的大家庭之中。假如明年有人对我说他拿Windows下的Delphi代码(包括界面描述)到Linux下编译了一个Linux下的可执行程序,跑起来样子还跟Windows下的一模一样,我也不会希奇,因为用Delphi for Linux,你可以做到。
只有DCOM对象现在还不能适应这个全世界大团结的美好环境。好在微软并不是那么万分的顽固。至少他们想把他们的新语言C#也弄一个IDL2C#规范出来,这样将来用C#也可以开发CORBA对象。甚至他们在DCOM之外,还能重视SOAP,因为SOAP轻易融入CORBA之中,实际上他们已经在申请这么做。哦,SOAP是什么?其实不过是XML。用XML作什么?CORBA对象间传送的(一般来讲)是扁平的消息,结构化的消息最非凡情况下如一个对象则很难传送。用XML来包装一个对象,然后把XML文件整个传送出去,就可以传送对象了。其实用Java也可以传送对象,只不过双方必须都是Java程序罢了。鲍尔默先生(微软总裁)讲XML必将战胜Java,不是没有道理,而只是忽略了需要借助于CORBA之力的事实(当然凭借微软的实力,他可以不用现存的CORBA产品,但它必须有类似的产品,同时这个产品应该可以和CORBA互通,否则就失去了跨平台的意义)。
将来会有人跟我讲,他在服务器上实现了Java所写的MIDAS服务器程序,他用DataModule封装了所有的业务逻辑,用EJB的形式放在某个框架环境(EJB Server)之下,该DataModule可以在任何平台下用任何语言中的TClientDateSet之类的东西来访问。假如听到这些话,我不会感到希奇,因为即便是从当前的技术基础来讲,Borland都有能力能做到这样。假如将来有人跟我讲,他的微软格式的软件对象可以跟CORBA对象互相熟悉并能紧密合作,那我可能有些兴奋,但仍然不会希奇,因为只要微软愿意,Borland可以做到。
程序员们逻辑的世界是一个没有国界的净土,这里不答应任何的霸权存在。假如你觉得这只是一个梦想,那么请答应Borland能和你一起做梦直到美梦成真。
作者简介:杨少雄,南京大学计算机系毕业,高级程序员,
北京Borland公司系统工程师