C++ BuilderX的问题与展望
猛禽[Mental Studio]
(之三,展望篇,完)
说了BCBX这么多的问题,该来谈谈我们的展望了。
首先从产品定位说起。大家都知道,每种语言都有其适用的领域,没有什么语言能通吃所有的开发工作,C++也一样,虽然从某种程度上说,C++可算是目前开发领域最广的语言,几乎可以用于绝大多数的应用或系统的开发,但在不少情况下,它仅仅是“可以”而已。比如在企业应用开发领域,C++并不是一个很好的选择(虽然借助于VCL,BCB基本上做到了),但通常选择Java或.net可以更快更好地解决问题。
就目前情况来说,C++最常用的开发领域有两个大的方面,一个是系统级应用开发,如操作系统,驱动程序(这两种应用更主要的是用C和汇编,但也有部分可以用C++),编译器,虚拟机,工业数据采集,通信,系统服务等;另一个是一般应用开发,主要是指非企业应用或者说是非数据库应用方面,如一般GUI应用程序,工具软件,图像处理,多媒体等(虽然这些应用有些也可以用.net等虚拟机技术开发,但是在一些关键性部分基于性能上的要求,还是需要C++等原生开发语言的)。
基于这些原因,作为定位于通用C++开发工具的BCBX要想在C++开发工具领域占有一席之地(暂且先不说它是不是有希望重振当年BC31的声威),就应该结合C++语言的实际情况,这两方面的应用开发上有独到之处。。
首先说系统级应用开发。对于系统级应用开发来说,GUI通常不是很重要的方面,它对开发工具的要求更侧重于性能和调试等方面。即要求编译器能生成高度优化的代码,并且目标程序要很稳定,要提供方便的底层调试功能。而且一般这样的软件都相对比较庞大,对项目管理的要求比较高。
对应这些要求,未来的BCBX应该加强在编译器,调试器及项目管理方面的功能。比如在编译器方面,现在BCBX用的BCC5.6是肯定不能满足要求的,虽然BCBX支持使用其它的编译器,但作为一个完整的开发工具而不仅仅是一个IDE,BCBX中不能没有Borland自己的编译器。不过据说Borland正在开发一个全新的跨平台C++编译器—BCCX,让人拭目以待;在调试器方面,这曾经是Borland的强项之一,现在已经没落了,不过也可以考虑跟别的公司合作或通过集成第三方产品来实现;至于项目管理一直是Borland的弱项之一,而且对这样的复杂项目来说,即使实现了像VS.net那样的管理还是不够的,这个可以考虑提供一个MakeFile管理工具来实现,毕竟这方面的应用还是MakeFile最好,但它的编写维护都是比较麻烦的,如果能提供一个能生成MakeFile的向导及一个能方便地管理MakeFile的工具,也是相当不错的。
再来看一般应用开发。对于这方面的应用开发来说,一个好的GUI开发工具是非常重要的,此外对编译器,调试器,项目管理同样也有一定的要求。因为这类应用的最终用户通常都是一般电脑用户,不同于系统应用面对的都是专业用户,所以对界面要求通常都很高,不但要通做出标准的GUI界面,常常还需要能实现一些花哨的界面功能。这就对GUI Framework提出了较高的要求:它不但要好用,简单,还要能很方便地扩充。VCL就是一个很好地实现了这个要求的GUI Framework,但是很遗憾的是,它不是跨平台的,虽然后来Borland又推出了跨平台的CLX,但是它用基于QT库的,而QT库的License对商业应用不是免费的,这又限制了CLX的应用,特别是现在Borland已经暂停(也许是停止)了Kylix这条产品线,对CLX来说无异于雪上加霜。
既然VCL和CLX两条路都走不通,BCBX未来唯一的出路就是采用一个新的GUI Framework,目前看来Borland是会选择wxWindows。但这带来了一个问题:因为BCB的产品线已经停掉了,BCBX未来必须接下BCB的用户,而如何从VCL向wxWindows过渡是未来BCBX面临的一大问题。不过有消息说Borland已经提供了解决方案,在新的BCBX中将采用一个开放的GUI Desgner,支持多种GUI Framework,已知的就有wxWindows和JavaBean,而对于非跨平台的VCL,在新的BCBX中将通过一个被称为“VCL Bridge”的东西实现。这样看来,在未来的BCBX中将能比较完美地实现这一功能。
再来看企业应用开发。虽然就目前的情况看,基于虚拟机平台的开发技术(JAVA或.net)已经成为企业应用开发的主流,而C++不是一种适用于虚拟机的语言(虽然MS将所谓的Managed C++加入.net,但情况不并好,不过C++适用于开发虚拟机倒是真的),无论在开发效率和产品品质方面,用C++做这方面的应用都是不合算的,即使是在产品性能方面,C++所能取得的优势也日趋减少。
但是这个市场仍然存在。首先,在一些情况下,企业应用系统还是需要和一些底层应用(如硬件驱动或其它原生代码程序等)进行交互,这时用基于虚拟机的技术并不方便(.net相对做得较好);另一方面,则是在一些对性能有较苛刻要求的应用中,用基于虚拟机的技术可能不能满足要求。这也就是为什么像BEA的TUXEDO这样的原生代码应用中间件仍然有相当大的市场的原因所在。
在较好的实现了满足前面两种应用的开发要求后,BCBX也完全可以进军这一领域。对于BCBX这样一个跨平台开发工具来说,所用的中间件技术当然也必须是跨平台的,MIDAS/DataSnap所支持的COM技术是肯定不行的,而只能用JAVA开发的EJB当然也不行,唯一剩下的就是CORBA。虽然现在BCBX提供了VisiBroker的CORBA应用向导,但相对于MIDAS/DataSnap来说,功能还是太弱。即使加上Together,BCBX距离一个像样的企业应用开发工具还是比较远的。还有一个问题是:虽然Borland的VisiBroker(现在已经改名叫Borland Enterprise Server—BES之VisiBroker版了)曾经是全球市场占有率排名第一的CORBA产品,即使现在它也是数一数二的,然而毕竟还有很多其它的CORBA产品可以选择,比如现在占有率第一的IONA的Orbix以及Open Source的ACE/TAO和MICO等(只考虑支持C++的)。如果BCBX不能以一种开放的姿态来接受它们,依然很难在CORBA领域取得大的成就。
在这一点上,Borland应该是有经验的,当年JBuilder正是因为能与BEA的WebLogic很好地结合起来,才得以取得如今的胜利。逼得IBM不得不放弃Visual Age for JAVA(就是后来成为Open Source的Eclipse),虽然在一些方面,VAJ还是比JBuilder有优势的,并且IBM的WebSphere在各方面的表现也不比WebLogic差,然而Borland和BEA的强强联手实在太强大了。如果当年JBuilder只抱着IAS(Inprise Application Server即现在BES的前身)不放的话,实在很难能在JAVA开发工具领域有什么大的作为,因为在WebLogic和WebSphere面前,IAS还差得太远了。所以现在JBuilder支持的EJB Container是越来越多了,除了前面说的这些商用产品外,Open Source的JBoss也同样在支持之列。
BCBX完全可以借鉴JBuilder的这一经验,支持集成包括IONA Orbix,ACE/TAO等多种CORBA产品开发,相对来说,这一点比集成不同的GUI Framework要容易很多,因为CORBA规范是由OMG定义的标准,不同产品之间的差异相对较小。所以问题的关键就在于Borland是否愿意这么做了,毕竟这可能影响到BES这条产品线的市场。老实说,Borland在企业中间件市场中一直是很失败的,从早年通过收购OEC取得Entera,却很快因为COM和CORBA的崛起而被迫放弃;通过收购VisiGenic取得了VisiBroker后,虽然在跟Netscape的合作中曾取得一定的成功,但随着NetScape的没落,VisiBroker的领先地位也很快被IONA的Orbix所取代;后来从IAS开始做JAVA中间件,也一直是只能在没有WebLogic和WebSphere的市场角落里分一点残羹而已。与其让BCBX的企业开发与BES一起没落,还不如像JBuiler一样牺牲BES换来BCBX的成功,毕竟对Borland来说,开发工具才是真正的主营业务。
当然,光有对CORBA的支持还是不够的,毕竟企业应用开发是一个大问题,需要的支持还是很多的。虽然现在BCBX有DBX这个方便的数据库访问技术,但是还缺乏一个系统的Framework,一个类似于MIDAS/DataSnap的东西。另外要结合Together的MDA开发,还必须有一个类似于ECO的数据持久化技术。
还有对SOAP/WebService的支持是不能少的。虽然它并不是一个像MS所吹嘘的那样,是一个万能的技术,但还是有很多地方需要它的。特别是当需要与其它应用沟通时,虽然与JAVA应用沟通可以通过RMI over IIOP,但要与.net应用或其它的应用沟通,SOAP还是一个比较好的解决方案。
有了这样一个强大的企业开发环境,就像我前一段向朋友“太可怕”(CSDNID:comanche)推荐ACE/TAO时说的:“这个世界没有MS,没有SUN,一样可以很美好。”
正如我前面所说,现在的BCBX是乏善可陈的,然而如果未来的BCBX真的可以加入我前面所说的这些Feature,包括一个完善的IDE,一个优秀的编译器,一个方便高效的GUI开发环境,以及一个功能强大的企业开发Framework等,那么BCBX才真正像一个Powerful的C++开发工具(让我想起Borland当年拍的BC31广告片^_^),重拾BC31当年的风光也不是不可能的。
本来写到这里就差不多完了,不过Borland大概是为了安抚用户对BCBX的不满情绪,最近推出了一个BCBX Preview包(在Borland网站有提供下载),通过将这个包安装到BCBX中,可以大致了解一下未来版本的BCBX会是什么样子。我简单地试用了一下,所以在最后要补充一些对这个Preview的看法。
这个Preview包括两个部分:一个是集成了wxWindow的GUI开发环境,另一个是全新的C++编译器BCCX的预览版。下面分别作一个说明:
首先来看这个GUI Designer。在IDE的New wizard里增加了两页,其中一页就是wx framework(另一页是preview),里面有两项:New wx framework project和New wx framework form。用前者创建一个新的wx应用,可以看到它生成的代码中包括一个XRC文件,这是一个XML风格的界面资源文件,类似于DFM/XFM。在页面下部有一个Design的Tab,点击即可打开GUI Designer。
这个GUI Designer和以前的BCB的GUI Designer还是很相似的,包括控件栏,设计区和Object Inspector三个部分。其中控件栏也是在页面上方,只是控件少得多了,只有三页共18个控件。设计区和BCB不同,不再是独立的Form Design,而是像Visual Studio/Galileo那样嵌在页面里,而且控件的定位也不是用以前的八点框,而是一个蓝色的粗框,也没有Grid定位。Object Inspector也有不同,首先是位置改在页面右边,跟JBuilder一贯的风格相同,当然内容就更不同了,毕竟现在的Framework是wxWindow而不是VCL了。
再来看BCCX编译器。同样是在IDE的New wizard里有一页Preivew,其中包括三个项目,其实这里生成的代码与Project页中的相应项目并无太大不同,只是所用的Include目录(Preview带有一套新的Include文件和启动代码)和编译器设置略有不同而已。另外,在IDE的编译选项中也增加了一项:“Borland® C++ Compiler Preview for Windows (IA-32) Tools”。看BCCX命令行提示可以看到,它的版本信息为:Borland C++ Compiler 6.0 Preview。可见这是Borland的一个全新版本的C++编译器,同样还有与之配套的Incremental Link,也是6.0版的。
不知道是不是因为新的编译器配置有所不同,我只在IDE中编译通过很简单的程序,还未能成功编译过wxWindow应用,看来还需要再研究研究。
当然这个毕竟只是Preview,问题还是有的。除了上面说的编译器的问题外,GUI Designer也是有问题的,最大的问题就是速度慢。在我的512M的机器上,BCBX跑起来也只占到300多M的内存,还未将物理内存用尽,但做GUI Design时的速度却比用JBuilder做GUI还要慢上许多,这实在让人难以忍受。其次一个问题是它不支持中文,在控件的属性中输入中文会变成乱码,估计跟XRC文件使用UTF-8编码时对中文(应该其它DBCS也有同样的问题)没有能够正确处理有关。
这篇文章断断续续写了一个多月,终于可以告一个段落了。最后还是要给Borland提点意见:Borland在2003年里出的几个产品,完成度都不算高,其中除了JBuilderX我不是太了解以外,C#Builder、C++BuilderX和Delphi8我都试用过,基本上都未达到可用的程度。希望今年Borland能够吸取教训,推出一个令人比较满意的BCBX新版本。
2004-1-13 23:45