成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當(dāng)前位置:首頁>>軟件教程>>新聞內(nèi)容  
C++ BuilderX的問題與展望
作者:猛禽 發(fā)布時(shí)間:2004-1-16 15:25:22 | 【字體:

  問題篇

  寫這篇文章的初衷源自2003年12月11日在玉笛書生兄所建C++Builder的QQ群中,與書生、令狐蟲、ccrun等幾位BCB版的老朋友的一次聊天(聊天記錄見《一次關(guān)于C++BuilderX的討論》)。主要就是聊了一下BCB/BCBX的現(xiàn)狀以未來可能的發(fā)展方向,因?yàn)橛X得對(duì)各位用BCB的朋友也許有幫助,故在令狐兄的支持下,整理成文。本文的內(nèi)容如題目所言,先說說BCBX現(xiàn)在的問題(包括Borland在此次產(chǎn)品轉(zhuǎn)型中的一些不太合適的做法),然后就我們幾個(gè)的個(gè)人觀點(diǎn)來談?wù)剬?duì)它的展望雖然說是BCBX的展望,當(dāng)然這些都是我們的一些一孔之見,Borland未來會(huì)怎么做,那是由不得我們的。

  兩年多以前我曾經(jīng)設(shè)想Borland會(huì)推出一個(gè)高度集成的開發(fā)工具,我當(dāng)時(shí)稱之為Borland Studio(參見拙作《Borland Studio?》),后來又聽李維說,Borland正在研發(fā)的代號(hào)為Galileo的開發(fā)工具將是一個(gè)比我設(shè)想的Borland Studio更為強(qiáng)大的東東。然而很不幸,所謂計(jì)劃沒有變化快。時(shí)至今日,這些東東終成泡影,不知道什么時(shí)候Borland才能給我們這樣的驚喜。(補(bǔ)充:現(xiàn)在看來似乎又有一點(diǎn)希望,C#Builder是BDS1,Delphi8是BDS2,這個(gè)BDS據(jù)說便是Borland Develop Studio,也許BDS3會(huì)給我們一個(gè)驚喜吧)

  就現(xiàn)在的情況來看,Microsoft已經(jīng)是鐵了心要把Windows操作系統(tǒng)向.net上轉(zhuǎn)移,未來的Windows操作系統(tǒng)將不再提供新的Win32API,而會(huì)以.net的方式提供。原來的Win32API也只是為了兼容性而保留。這很像當(dāng)年從MS SQL 6.5向MS SQL 7.0遷移的情況,在MS SQL 7.0中的DBLIB只提供與6.5兼容的部分,新增功能都是以O(shè)LE-DB方式提供,而到了MS SQL 2000時(shí),DBLIB幾乎已經(jīng)不能用了。MS SQL的這次轉(zhuǎn)移成功地實(shí)現(xiàn)了一次飛躍,并完全擺脫了Sybase的陰影,所以Microsoft在.net中應(yīng)該還是會(huì)故伎重演的。

  在這種情況下, Windows平臺(tái)下的原生開發(fā)工具日漸式微,這對(duì)于Borland來說,無疑是要作出重大的抉擇。所以Borland在今年(2003年)先后推出了四個(gè)主要產(chǎn)品:C#Builder(Sidewinder),C++BuilderX(Tomahawk),JBuilderX(Reveille)以及剛剛在BorCon2003上發(fā)布的Delphi8(Octane)。從表面上看,除了C#Builder是全新推出的與Microsoft的Visual Studio.net 2003競(jìng)爭(zhēng)的產(chǎn)品以外,其它的似乎都是原有產(chǎn)品的延續(xù),特別是Delphi 8延用了Delphi的產(chǎn)品名稱,而繼JBuilder9之后推出的JBuilderX的那個(gè)X也很容易被理解為羅馬數(shù)字的“10”,那么C++BuilderX是否會(huì)是C++Builder 7呢?為什么不叫C++Builder 7或C++BuilderVII而要叫C++BuilderX?會(huì)不會(huì)是傳說中的Borland Studio甚至是Galileo的原型呢?

  所謂希望越大,失望也越大。當(dāng)C++BuilderX還在測(cè)試版階段時(shí),許多C++Builder用戶都迫不及待地下載了Tomahawk來先睹為快,我也一樣,但結(jié)果卻令人大失所望。這在BCB用戶群中造成了極大的反響,其中比較有名的就有如CSDN BCB版的Aweay兄的文章《Borland聽我對(duì)你說》等。

  雖然Borland中國的左輕侯很快就撰文為BCBX作了一番辯解,但還是難以令人接受。BTW:按左兄的說法,Galileo已經(jīng)成了Borland在.net平臺(tái)下的開發(fā)工具(C#Builder和Delphi8)所用的統(tǒng)一的IDE的名稱,看來是不用對(duì)Borland Studio抱什么希望了。

  不可否認(rèn)Borland在C++開發(fā)工具中的這次轉(zhuǎn)型從未來發(fā)展的角度上說是必要的,也是正確的做法,具體請(qǐng)參見左兄的文章(《關(guān)于Borland C++BuilderX的一些問題的回答》或《程序員》2003年第十二期)。但還是要指出Borland在此次轉(zhuǎn)型中的錯(cuò)誤做法及可以改進(jìn)的方面。我們幾個(gè)雖然不能說代表Borland的用戶,但至少也算是Borland的鐵桿用戶,我們的意見應(yīng)該來說還是比較有代表性的,可以毫不夸張地說:如果Borland不能在未來作相應(yīng)的改進(jìn),恐怕是難有機(jī)會(huì)在C++領(lǐng)域里再翻身了。

  首先說說BCBX推出的方式是非常不合適的。最主要的就是沒有提供一個(gè)從BCB到BCBX的平滑過渡。Borland一向標(biāo)榜自己的特色是:為客戶帶來新技術(shù),創(chuàng)造新價(jià)值,同時(shí)保護(hù)客戶已有投資。過去她也一向是這么做的,然而這一次卻沒有做到。這是一個(gè)非常嚴(yán)重的錯(cuò)誤。

  從歷史上說(參見李維的《Borland傳奇》一書),這種錯(cuò)誤Borland曾經(jīng)犯過多次,每一次都是造成用戶的大量流失。以C++開發(fā)工具為例,第一次發(fā)生在BC4的OWL2與BC31的OWL1不兼容,加之BC4本身品質(zhì)不佳,造成Borland用戶的第一次大規(guī)模流失,這次事件最終使Borland從一流的軟件公司墮落成為二流的軟件公司。雖然后來推出了相當(dāng)不錯(cuò)的BC451,然而已經(jīng)為時(shí)太晚,回天乏力。直到BCB的出現(xiàn),作為第一個(gè)RAD C++工具搶回了一部分用戶,然而由于種種原因(其中一個(gè)當(dāng)然是因?yàn)锽CB使用的VCL讓它始終籠罩在DELPHI的陰影之下),已經(jīng)無法重現(xiàn)當(dāng)年BC31的輝煌了。

  讓人無法想象的是Borland在花了這么大的代價(jià)買來的教訓(xùn),卻還不知吸取,才過了不到十年,再次犯同樣的錯(cuò)誤。當(dāng)我第一次看到BCBX時(shí)的感覺就像若干年前第一次看到BC4或BCB1一樣:起初是新鮮,大喜,接著就是失望(完全是中看不中用),然后開始盼望下個(gè)版本能解決(當(dāng)然這兩次都盼到了,一個(gè)是BC451—可惜來得太晚了,另一個(gè)是BCB3—這個(gè)比較好玩的就是,當(dāng)時(shí)我們都在盼望的是BCB2,結(jié)果卻盼到了BCB3,大概是Borland為了和Delphi的版本號(hào)一致,跳過了BCB2)。

  其實(shí)Borland要避免這種窘境并不困難。有兩個(gè)方法:一個(gè)是在BCBX中暫時(shí)嵌入一個(gè)BCB的IDE的簡(jiǎn)化版,讓它能繼續(xù)支持VCL的RAD開發(fā),因?yàn)閷?duì)C++開發(fā)工具來說,即使在開始時(shí)犧牲少量的跨平臺(tái)特性(BCB是不能跨平臺(tái)的),問題并不大,因?yàn)檫@部分特性本來就是為了繼承Windows平臺(tái)下的東西,更何況像Jbuilder這樣對(duì)跨平臺(tái)要求很高的產(chǎn)品,在早期版本里一樣不是純JAVA的;另一個(gè)方法就是像DELPHI那樣,提供一個(gè)BCB7作為過渡。因?yàn)閺哪撤N角度上說,Delphi7對(duì)Delphi6的改進(jìn),實(shí)在是非常之少,所以有人戲稱Delphi7其實(shí)是Delphi6.5。就現(xiàn)在的情況來看,Delphi的轉(zhuǎn)型無疑要比BCB成功得多,Delphi8提供了.net開發(fā)和兼容VCL開發(fā)(通過VCL.net)。而從BCB的情況來看,唯一的解釋就是Borland對(duì)BCB不夠重視。其實(shí)在這兩個(gè)方法中,個(gè)人認(rèn)為后面一個(gè)方法更好一些。因?yàn)殡m然現(xiàn)在.net大行其道,但可以肯定是的Windows下的原生開發(fā)還要持續(xù)幾年,在這段時(shí)間里讓BCB7和BCBX并行(因?yàn)樵诖蠖鄶?shù)情況下,二者的沖突不是很大)對(duì)Borland占領(lǐng)C++開發(fā)工具領(lǐng)域非常有利,而且有一個(gè)BCB7這樣一個(gè)填補(bǔ)這個(gè)空白的產(chǎn)品(因?yàn)槟菚r(shí)大多數(shù)開發(fā)工具都到.net下了)還能帶來一定的收益。

  雖然說Borland作為一個(gè)不能算太大的公司,沒有足夠的資源維持一條過長(zhǎng)的產(chǎn)品線,如果要在BCBX中加入BCB或同時(shí)開發(fā)BCBX和BCB7,會(huì)有困難。但作為一個(gè)全新領(lǐng)域的產(chǎn)品(在平臺(tái)中立的C++開發(fā)工具中,暫時(shí)還沒有像BCBX這樣的產(chǎn)品,即使是傳說中的Eclipse+CDT,也暫時(shí)不能成什么氣候),略為延后一些發(fā)表并不會(huì)造成太大的影響,反而是推出不夠成熟的產(chǎn)品會(huì)造成嚴(yán)重的反面后果,在這點(diǎn)是Borland也是吃過大苦頭的,最典型的莫過于Delphi4。而且如果有BCB7作為緩沖的話,BCBX的延后發(fā)表,對(duì)市場(chǎng)來說也不會(huì)有太大的影響。

  但是現(xiàn)在Borland已經(jīng)這么做了,要想挽回的話,只有在產(chǎn)品上作文章了,這樣反而把Borland自己逼上了一條無法回頭的路了—必須盡快推出一個(gè)“可用”的BCBX。而這個(gè)“可用”的要求就要比通過BCB7緩沖后要高得多了。

  然后來具體說一下BCBX這個(gè)產(chǎn)品。

  它不能說沒有優(yōu)點(diǎn),先從IDE說起吧。BCBX采用了一個(gè)全新的IDE—PrimeTime,這個(gè)IDE來自于JBuilder,而且后來的JBuilderX也是采用這個(gè)IDE(只是在JBuilderX中用的新版本PrimeTime具有更多的優(yōu)點(diǎn),如代碼折疊等)。這個(gè)JAVA寫的IDE可以跨平臺(tái),看上去也很美,使用上雖然與BCB/DELPHI不太一樣,但至少還是保持了Borland的一貫風(fēng)格,特別是對(duì)JBuilder用戶來說會(huì)很自然。

  這個(gè)IDE除了具有BCB原有的一些特性,如Code Template等功能以外,特別值得一提的是,它還具有原來在BCB上沒有的版本控制功能(見Editor的History頁面),這個(gè)功能我前兩年就在JBuilder上看到了,眼饞的不行,現(xiàn)在終于也可以在C++中享受到了。此外它還可以像JBuilder一樣集成多種源碼版本控制工具(CVS,ClearCase,VSS)。

  對(duì)于編輯器,BCBX還有一個(gè)很好用的功能就是Sync Edit,通過選擇一段文本,可以方便地修改其中相同的標(biāo)識(shí)符等,在進(jìn)行代碼重構(gòu)時(shí)非常有用。

  還有就是提供了一個(gè)類似Class Explorer的Structure View功能,可以在這里立即跳轉(zhuǎn)到各個(gè)類/函數(shù)的定義或?qū)崿F(xiàn)處。另外它的Editor支持嵌入源碼的ToDo Item功能,并且能在Structure View中立即顯示出來,而且也可以從Structure View中跳轉(zhuǎn),比BCB中的ToDo List功能要強(qiáng)大。

  另外,對(duì)Project的管理功能也略有加強(qiáng),可以定義和調(diào)整Project Group中的編譯順序(相當(dāng)于一種Project依賴關(guān)系)。這一點(diǎn)也是BCB曾經(jīng)被人垢病的一個(gè)方面。

  BCBX還有一個(gè)特性是與BCB一樣的:支持基于VisiBroker的CORBA應(yīng)用開發(fā)。特別是它比BCB有一個(gè)很大的改進(jìn),在BCB中用CORBA向?qū)J(rèn)生成的CORBA應(yīng)用是使用BOA的,而這是早在五年前就被CORBA2.2規(guī)范制定的POA所代替了(當(dāng)然BOA也可以用,但基于移植性考慮,OMG建議使用POA),在BCBX中終于用POA代替了(而且好像不能再用BOA了)。

  至于很多人認(rèn)為BCBX這個(gè)用JAVA寫的IDE速度太慢,我倒不覺得,只是啟動(dòng)速度略有些慢,不過BCB的啟動(dòng)也不能算很快,比起VS.net來說慢太多了。也許是因?yàn)槲业臋C(jī)器內(nèi)存比較大的緣故,雖然是PIII-733的CPU,但有512M內(nèi)存。看來要跑BCBX要先準(zhǔn)備好內(nèi)存了。

  BCBX除了這些IDE方面的好處外,還有一個(gè)好處就是帶有dbExpress這個(gè)跨平臺(tái)的通用數(shù)據(jù)庫訪問技術(shù),所以用BCBX做跨平臺(tái)數(shù)據(jù)庫應(yīng)用會(huì)比較方便,并且目前dbExpress支持的數(shù)據(jù)庫種類還是比較多的。

  雖然BCBX有上述的優(yōu)點(diǎn),但也不能改變它是一件“粗糙”的產(chǎn)品的本質(zhì),簡(jiǎn)直就和當(dāng)年的BCB1如出一轍。

  首先最大的敗筆莫過于不支持VCL了。據(jù)說不支持VCL還有理由了:因?yàn)樗哪繕?biāo)用戶不是BCB用戶,而是更為廣大的非VCL的C++用戶,如其它平臺(tái)的C++用戶及VC的用戶等,VCL是BCBX2的目標(biāo)。而且不支持VCL就算,也沒有提供一個(gè)別的GUI開發(fā)的Framework,比如傳說中的wxWindows(據(jù)說要在BCBX2里提供)。

  其次來說這個(gè)IDE,作為IDE技術(shù)的發(fā)明者,Borland應(yīng)該很了解開發(fā)人員要的是一個(gè)什么樣的IDE,它應(yīng)該能夠在其中很方便地完成大部分的開發(fā)工作,但BCBX明顯達(dá)不到要求。雖然它帶有很多BCB不支持的功能,但同樣的,有很BCB中具備的功能,在BCBX中還沒有提供。特別是非常重要的Code Insight功能居然都沒有,而且它的Structure View,雖然在某些方面比Class Explorer強(qiáng)大(如ToDo),但它的功能還是太弱,比如不能在Structure View里創(chuàng)建類成員等。還有BCBX的Editor中不支持跳轉(zhuǎn)到定義的功能,不支持Open file at cursor等。而且個(gè)人認(rèn)為BCB6中將只將單元放在Editor上面的Tab中,而將CPP文件和H文件放在下面的Tab中是一個(gè)好辦法,但BCBX卻還是像BCB5一樣都放在上面,這樣文件一多就要卷來卷去。

  還有一個(gè)足以說明它“粗糙”的理由是:BUG。我曾經(jīng)試過在一個(gè)很簡(jiǎn)單的應(yīng)用里只是更換了一下編譯器,正要保存設(shè)置時(shí),IDE無響應(yīng),CPU占用100%。

  其實(shí)Borland提出BCBX這個(gè)策略是沒有錯(cuò)的,只是策略的實(shí)施上有些問題。

  BCBX的產(chǎn)品定位是定位于非VCL的C++用戶。在這點(diǎn)上,就會(huì)讓Borland目前的C++產(chǎn)品用戶,基于VCL的BCB用戶非常不滿,特別是沒有提供像BCB7這樣的過渡產(chǎn)品,可能導(dǎo)致用戶流失。其次,對(duì)于非VCL的C++用戶來說,也未必吸引人。這部分C++用戶主要有兩派:一派是用VC的用戶,一派是用GNU C++的用戶。對(duì)VC用戶來說,跨平臺(tái)特性對(duì)他們完全沒有吸引力,而在Windows平臺(tái)下,VS.net還是非常好用的,并且他們可以很方便地進(jìn)行.net應(yīng)用開發(fā),BCBX提供的多編譯器支持對(duì)他們來說也是沒用的功能,所以在這里BCBX基本上沒有什么市場(chǎng)。

  估計(jì)BCBX更主要的目標(biāo)市場(chǎng)在GNU C++。用GNU C++的用戶中,很大一部分是開源社團(tuán),而對(duì)他們來說,根本不屑于使用像BCBX這樣的東東,特別是自從Danny.Thorpe當(dāng)年因?yàn)殚_發(fā)Kylix,與Linux社團(tuán)有一次大的沖突,Borland在開源社團(tuán)的影響并不好。而且就BCBX本身來說,它雖然說支持ACE、Boost、Loki這些庫,但是事實(shí)上這些庫本來就是通用庫,支持很多的編譯器,其中也包括BCB,所以這根本不能算什么特性。而且雖然BCBX對(duì)Project管理功能有所增強(qiáng),但比VS.net還有差距,更別提跟開源社團(tuán)習(xí)慣使用的Make文件相比了(雖然Make文件用起來比較復(fù)雜,但對(duì)于大項(xiàng)目來說,它是最好的解決方案,即使是項(xiàng)目管理功能好如VS.net,跟Make文件相比還是差得太多了)。

  縱觀整個(gè)BCBX,其中提供的有價(jià)值的東西非常有限:一個(gè)是還不能算是很完善的IDE,另一個(gè)可能就算是dbExpress了。至于像CORBA向?qū)е惖牟⒉凰愫芴貏e,用命令行編譯IDL一樣可以實(shí)現(xiàn)它的功能,雖然沒有向?qū)敲捶奖悖幼杂桑挥檬苤朴赩isiBroker,可以選擇各種ORB產(chǎn)品。版本控制也可以用CVS等專門的軟件,只是要多一些手工操作,沒有集成起來這么方便而已。其它像編譯器一類的更沒什么好說的,BCBX還是用的BCB6的編譯器:BCC5.6。BCBX集成了Together(據(jù)說,我用的Enterprise版是沒有的)卻沒有提供相應(yīng)的企業(yè)應(yīng)用開發(fā)的Framework,,如C#Builder/DELPHI8中的ECO,或是像BCB/DELPHI那樣的MIDAS/DataSnap。

  當(dāng)年Kylix 1.0甫一堆出,就有人評(píng)論它是一個(gè)“玩具”,直到Kylix 3才基本有了一個(gè)產(chǎn)品的樣子(可惜看樣子它注定是要夭折的了)。然而今天的BCBX卻連當(dāng)年的Kylix 1都不如。

  按Borland在中國一向的產(chǎn)品定價(jià),一般開發(fā)工具的企業(yè)版都是定在29950元人民幣的天價(jià)(相對(duì)于MS來說完全可以說是天價(jià),因?yàn)槿f多元定一年的MSDN宇宙版,可以得到MS的所有產(chǎn)品),BCBX應(yīng)該也不會(huì)例外,說句不客氣的話,這樣乏善可陳的產(chǎn)品定這樣一個(gè)價(jià)格真是與搶錢無異。


  展望篇


  說了BCBX這么多的問題,該來談?wù)勎覀兊恼雇恕?/P>

  首先從產(chǎn)品定位說起。大家都知道,每種語言都有其適用的領(lǐng)域,沒有什么語言能通吃所有的開發(fā)工作,C++也一樣,雖然從某種程度上說,C++可算是目前開發(fā)領(lǐng)域最廣的語言,幾乎可以用于絕大多數(shù)的應(yīng)用或系統(tǒng)的開發(fā),但在不少情況下,它僅僅是“可以”而已。比如在企業(yè)應(yīng)用開發(fā)領(lǐng)域,C++并不是一個(gè)很好的選擇(雖然借助于VCL,BCB基本上做到了),但通常選擇Java或.net可以更快更好地解決問題。

  就目前情況來說,C++最常用的開發(fā)領(lǐng)域有兩個(gè)大的方面,一個(gè)是系統(tǒng)級(jí)應(yīng)用開發(fā),如操作系統(tǒng),驅(qū)動(dòng)程序(這兩種應(yīng)用更主要的是用C和匯編,但也有部分可以用C++),編譯器,虛擬機(jī),工業(yè)數(shù)據(jù)采集,通信,系統(tǒng)服務(wù)等;另一個(gè)是一般應(yīng)用開發(fā),主要是指非企業(yè)應(yīng)用或者說是非數(shù)據(jù)庫應(yīng)用方面,如一般GUI應(yīng)用程序,工具軟件,圖像處理,多媒體等(雖然這些應(yīng)用有些也可以用.net等虛擬機(jī)技術(shù)開發(fā),但是在一些關(guān)鍵性部分基于性能上的要求,還是需要C++等原生開發(fā)語言的)。

  基于這些原因,作為定位于通用C++開發(fā)工具的BCBX要想在C++開發(fā)工具領(lǐng)域占有一席之地(暫且先不說它是不是有希望重振當(dāng)年BC31的聲威),就應(yīng)該結(jié)合C++語言的實(shí)際情況,這兩方面的應(yīng)用開發(fā)上有獨(dú)到之處。。

  首先說系統(tǒng)級(jí)應(yīng)用開發(fā)。對(duì)于系統(tǒng)級(jí)應(yīng)用開發(fā)來說,GUI通常不是很重要的方面,它對(duì)開發(fā)工具的要求更側(cè)重于性能和調(diào)試等方面。即要求編譯器能生成高度優(yōu)化的代碼,并且目標(biāo)程序要很穩(wěn)定,要提供方便的底層調(diào)試功能。而且一般這樣的軟件都相對(duì)比較龐大,對(duì)項(xiàng)目管理的要求比較高。

  對(duì)應(yīng)這些要求,未來的BCBX應(yīng)該加強(qiáng)在編譯器,調(diào)試器及項(xiàng)目管理方面的功能。比如在編譯器方面,現(xiàn)在BCBX用的BCC5.6是肯定不能滿足要求的,雖然BCBX支持使用其它的編譯器,但作為一個(gè)完整的開發(fā)工具而不僅僅是一個(gè)IDE,BCBX中不能沒有Borland自己的編譯器。不過據(jù)說Borland正在開發(fā)一個(gè)全新的跨平臺(tái)C++編譯器—BCCX,讓人拭目以待;在調(diào)試器方面,這曾經(jīng)是Borland的強(qiáng)項(xiàng)之一,現(xiàn)在已經(jīng)沒落了,不過也可以考慮跟別的公司合作或通過集成第三方產(chǎn)品來實(shí)現(xiàn);至于項(xiàng)目管理一直是Borland的弱項(xiàng)之一,而且對(duì)這樣的復(fù)雜項(xiàng)目來說,即使實(shí)現(xiàn)了像VS.net那樣的管理還是不夠的,這個(gè)可以考慮提供一個(gè)MakeFile管理工具來實(shí)現(xiàn),畢竟這方面的應(yīng)用還是MakeFile最好,但它的編寫維護(hù)都是比較麻煩的,如果能提供一個(gè)能生成MakeFile的向?qū)Ъ耙粋(gè)能方便地管理MakeFile的工具,也是相當(dāng)不錯(cuò)的。

  再來看一般應(yīng)用開發(fā)。對(duì)于這方面的應(yīng)用開發(fā)來說,一個(gè)好的GUI開發(fā)工具是非常重要的,此外對(duì)編譯器,調(diào)試器,項(xiàng)目管理同樣也有一定的要求。因?yàn)檫@類應(yīng)用的最終用戶通常都是一般電腦用戶,不同于系統(tǒng)應(yīng)用面對(duì)的都是專業(yè)用戶,所以對(duì)界面要求通常都很高,不但要通做出標(biāo)準(zhǔn)的GUI界面,常常還需要能實(shí)現(xiàn)一些花哨的界面功能。這就對(duì)GUI Framework提出了較高的要求:它不但要好用,簡(jiǎn)單,還要能很方便地?cái)U(kuò)充。VCL就是一個(gè)很好地實(shí)現(xiàn)了這個(gè)要求的GUI Framework,但是很遺憾的是,它不是跨平臺(tái)的,雖然后來Borland又推出了跨平臺(tái)的CLX,但是它用基于QT庫的,而QT庫的License對(duì)商業(yè)應(yīng)用不是免費(fèi)的,這又限制了CLX的應(yīng)用,特別是現(xiàn)在Borland已經(jīng)暫停(也許是停止)了Kylix這條產(chǎn)品線,對(duì)CLX來說無異于雪上加霜。

  既然VCL和CLX兩條路都走不通,BCBX未來唯一的出路就是采用一個(gè)新的GUI Framework,目前看來Borland是會(huì)選擇wxWindows。但這帶來了一個(gè)問題:因?yàn)锽CB的產(chǎn)品線已經(jīng)停掉了,BCBX未來必須接下BCB的用戶,而如何從VCL向wxWindows過渡是未來BCBX面臨的一大問題。不過有消息說Borland已經(jīng)提供了解決方案,在新的BCBX中將采用一個(gè)開放的GUI Desgner,支持多種GUI Framework,已知的就有wxWindows和JavaBean,而對(duì)于非跨平臺(tái)的VCL,在新的BCBX中將通過一個(gè)被稱為“VCL Bridge”的東西實(shí)現(xiàn)。這樣看來,在未來的BCBX中將能比較完美地實(shí)現(xiàn)這一功能。

  再來看企業(yè)應(yīng)用開發(fā)。雖然就目前的情況看,基于虛擬機(jī)平臺(tái)的開發(fā)技術(shù)(JAVA或.net)已經(jīng)成為企業(yè)應(yīng)用開發(fā)的主流,而C++不是一種適用于虛擬機(jī)的語言(雖然MS將所謂的Managed C++加入.net,但情況不并好,不過C++適用于開發(fā)虛擬機(jī)倒是真的),無論在開發(fā)效率和產(chǎn)品品質(zhì)方面,用C++做這方面的應(yīng)用都是不合算的,即使是在產(chǎn)品性能方面,C++所能取得的優(yōu)勢(shì)也日趨減少。

  但是這個(gè)市場(chǎng)仍然存在。首先,在一些情況下,企業(yè)應(yīng)用系統(tǒng)還是需要和一些底層應(yīng)用(如硬件驅(qū)動(dòng)或其它原生代碼程序等)進(jìn)行交互,這時(shí)用基于虛擬機(jī)的技術(shù)并不方便(.net相對(duì)做得較好);另一方面,則是在一些對(duì)性能有較苛刻要求的應(yīng)用中,用基于虛擬機(jī)的技術(shù)可能不能滿足要求。這也就是為什么像BEA的TUXEDO這樣的原生代碼應(yīng)用中間件仍然有相當(dāng)大的市場(chǎng)的原因所在。

  在較好的實(shí)現(xiàn)了滿足前面兩種應(yīng)用的開發(fā)要求后,BCBX也完全可以進(jìn)軍這一領(lǐng)域。對(duì)于BCBX這樣一個(gè)跨平臺(tái)開發(fā)工具來說,所用的中間件技術(shù)當(dāng)然也必須是跨平臺(tái)的,MIDAS/DataSnap所支持的COM技術(shù)是肯定不行的,而只能用JAVA開發(fā)的EJB當(dāng)然也不行,唯一剩下的就是CORBA。雖然現(xiàn)在BCBX提供了VisiBroker的CORBA應(yīng)用向?qū)В鄬?duì)于MIDAS/DataSnap來說,功能還是太弱。即使加上Together,BCBX距離一個(gè)像樣的企業(yè)應(yīng)用開發(fā)工具還是比較遠(yuǎn)的。還有一個(gè)問題是:雖然Borland的VisiBroker(現(xiàn)在已經(jīng)改名叫Borland Enterprise Server—BES之VisiBroker版了)曾經(jīng)是全球市場(chǎng)占有率排名第一的CORBA產(chǎn)品,即使現(xiàn)在它也是數(shù)一數(shù)二的,然而畢竟還有很多其它的CORBA產(chǎn)品可以選擇,比如現(xiàn)在占有率第一的IONA的Orbix以及Open Source的ACE/TAO和MICO等(只考慮支持C++的)。如果BCBX不能以一種開放的姿態(tài)來接受它們,依然很難在CORBA領(lǐng)域取得大的成就。

  在這一點(diǎn)上,Borland應(yīng)該是有經(jīng)驗(yàn)的,當(dāng)年JBuilder正是因?yàn)槟芘cBEA的WebLogic很好地結(jié)合起來,才得以取得如今的勝利。逼得IBM不得不放棄Visual Age for JAVA(就是后來成為Open Source的Eclipse),雖然在一些方面,VAJ還是比JBuilder有優(yōu)勢(shì)的,并且IBM的WebSphere在各方面的表現(xiàn)也不比WebLogic差,然而Borland和BEA的強(qiáng)強(qiáng)聯(lián)手實(shí)在太強(qiáng)大了。如果當(dāng)年JBuilder只抱著IAS(Inprise Application Server即現(xiàn)在BES的前身)不放的話,實(shí)在很難能在JAVA開發(fā)工具領(lǐng)域有什么大的作為,因?yàn)樵赪ebLogic和WebSphere面前,IAS還差得太遠(yuǎn)了。所以現(xiàn)在JBuilder支持的EJB Container是越來越多了,除了前面說的這些商用產(chǎn)品外,Open Source的JBoss也同樣在支持之列。

  BCBX完全可以借鑒JBuilder的這一經(jīng)驗(yàn),支持集成包括IONA Orbix,ACE/TAO等多種CORBA產(chǎn)品開發(fā),相對(duì)來說,這一點(diǎn)比集成不同的GUI Framework要容易很多,因?yàn)镃ORBA規(guī)范是由OMG定義的標(biāo)準(zhǔn),不同產(chǎn)品之間的差異相對(duì)較小。所以問題的關(guān)鍵就在于Borland是否愿意這么做了,畢竟這可能影響到BES這條產(chǎn)品線的市場(chǎng)。老實(shí)說,Borland在企業(yè)中間件市場(chǎng)中一直是很失敗的,從早年通過收購OEC取得Entera,卻很快因?yàn)镃OM和CORBA的崛起而被迫放棄;通過收購VisiGenic取得了VisiBroker后,雖然在跟Netscape的合作中曾取得一定的成功,但隨著NetScape的沒落,VisiBroker的領(lǐng)先地位也很快被IONA的Orbix所取代;后來從IAS開始做JAVA中間件,也一直是只能在沒有WebLogic和WebSphere的市場(chǎng)角落里分一點(diǎn)殘羹而已。與其讓BCBX的企業(yè)開發(fā)與BES一起沒落,還不如像JBuiler一樣犧牲BES換來BCBX的成功,畢竟對(duì)Borland來說,開發(fā)工具才是真正的主營(yíng)業(yè)務(wù)。

  當(dāng)然,光有對(duì)CORBA的支持還是不夠的,畢竟企業(yè)應(yīng)用開發(fā)是一個(gè)大問題,需要的支持還是很多的。雖然現(xiàn)在BCBX有DBX這個(gè)方便的數(shù)據(jù)庫訪問技術(shù),但是還缺乏一個(gè)系統(tǒng)的Framework,一個(gè)類似于MIDAS/DataSnap的東西。另外要結(jié)合Together的MDA開發(fā),還必須有一個(gè)類似于ECO的數(shù)據(jù)持久化技術(shù)。

  還有對(duì)SOAP/WebService的支持是不能少的。雖然它并不是一個(gè)像MS所吹噓的那樣,是一個(gè)萬能的技術(shù),但還是有很多地方需要它的。特別是當(dāng)需要與其它應(yīng)用溝通時(shí),雖然與JAVA應(yīng)用溝通可以通過RMI over IIOP,但要與.net應(yīng)用或其它的應(yīng)用溝通,SOAP還是一個(gè)比較好的解決方案。

  有了這樣一個(gè)強(qiáng)大的企業(yè)開發(fā)環(huán)境,就像我前一段向朋友“太可怕”(CSDNID:comanche)推薦ACE/TAO時(shí)說的:“這個(gè)世界沒有MS,沒有SUN,一樣可以很美好。”

  正如我前面所說,現(xiàn)在的BCBX是乏善可陳的,然而如果未來的BCBX真的可以加入我前面所說的這些Feature,包括一個(gè)完善的IDE,一個(gè)優(yōu)秀的編譯器,一個(gè)方便高效的GUI開發(fā)環(huán)境,以及一個(gè)功能強(qiáng)大的企業(yè)開發(fā)Framework等,那么BCBX才真正像一個(gè)Powerful的C++開發(fā)工具(讓我想起B(yǎng)orland當(dāng)年拍的BC31廣告片^_^),重拾BC31當(dāng)年的風(fēng)光也不是不可能的。

  本來寫到這里就差不多完了,不過Borland大概是為了安撫用戶對(duì)BCBX的不滿情緒,最近推出了一個(gè)BCBX Preview包(在Borland網(wǎng)站有提供下載),通過將這個(gè)包安裝到BCBX中,可以大致了解一下未來版本的BCBX會(huì)是什么樣子。我簡(jiǎn)單地試用了一下,所以在最后要補(bǔ)充一些對(duì)這個(gè)Preview的看法。

  這個(gè)Preview包括兩個(gè)部分:一個(gè)是集成了wxWindow的GUI開發(fā)環(huán)境,另一個(gè)是全新的C++編譯器BCCX的預(yù)覽版。下面分別作一個(gè)說明:

  首先來看這個(gè)GUI Designer。在IDE的New wizard里增加了兩頁,其中一頁就是wx framework(另一頁是preview),里面有兩項(xiàng):New wx framework project和New wx framework form。用前者創(chuàng)建一個(gè)新的wx應(yīng)用,可以看到它生成的代碼中包括一個(gè)XRC文件,這是一個(gè)XML風(fēng)格的界面資源文件,類似于DFM/XFM。在頁面下部有一個(gè)Design的Tab,點(diǎn)擊即可打開GUI Designer。

  這個(gè)GUI Designer和以前的BCB的GUI Designer還是很相似的,包括控件欄,設(shè)計(jì)區(qū)和Object Inspector三個(gè)部分。其中控件欄也是在頁面上方,只是控件少得多了,只有三頁共18個(gè)控件。設(shè)計(jì)區(qū)和BCB不同,不再是獨(dú)立的Form Design,而是像Visual Studio/Galileo那樣嵌在頁面里,而且控件的定位也不是用以前的八點(diǎn)框,而是一個(gè)藍(lán)色的粗框,也沒有Grid定位。Object Inspector也有不同,首先是位置改在頁面右邊,跟JBuilder一貫的風(fēng)格相同,當(dāng)然內(nèi)容就更不同了,畢竟現(xiàn)在的Framework是wxWindow而不是VCL了。

  再來看BCCX編譯器。同樣是在IDE的New wizard里有一頁P(yáng)reivew,其中包括三個(gè)項(xiàng)目,其實(shí)這里生成的代碼與Project頁中的相應(yīng)項(xiàng)目并無太大不同,只是所用的Include目錄(Preview帶有一套新的Include文件和啟動(dòng)代碼)和編譯器設(shè)置略有不同而已。另外,在IDE的編譯選項(xiàng)中也增加了一項(xiàng):“Borland® C++ Compiler Preview for Windows (IA-32) Tools”。看BCCX命令行提示可以看到,它的版本信息為:Borland C++ Compiler 6.0 Preview。可見這是Borland的一個(gè)全新版本的C++編譯器,同樣還有與之配套的Incremental Link,也是6.0版的。

  不知道是不是因?yàn)樾碌木幾g器配置有所不同,我只在IDE中編譯通過很簡(jiǎn)單的程序,還未能成功編譯過wxWindow應(yīng)用,看來還需要再研究研究。

  當(dāng)然這個(gè)畢竟只是Preview,問題還是有的。除了上面說的編譯器的問題外,GUI Designer也是有問題的,最大的問題就是速度慢。在我的512M的機(jī)器上,BCBX跑起來也只占到300多M的內(nèi)存,還未將物理內(nèi)存用盡,但做GUI Design時(shí)的速度卻比用JBuilder做GUI還要慢上許多,這實(shí)在讓人難以忍受。其次一個(gè)問題是它不支持中文,在控件的屬性中輸入中文會(huì)變成亂碼,估計(jì)跟XRC文件使用UTF-8編碼時(shí)對(duì)中文(應(yīng)該其它DBCS也有同樣的問題)沒有能夠正確處理有關(guān)。

  這篇文章斷斷續(xù)續(xù)寫了一個(gè)多月,終于可以告一個(gè)段落了。最后還是要給Borland提點(diǎn)意見:Borland在2003年里出的幾個(gè)產(chǎn)品,完成度都不算高,其中除了JBuilderX我不是太了解以外,C#Builder、C++BuilderX和Delphi8我都試用過,基本上都未達(dá)到可用的程度。希望今年Borland能夠吸取教訓(xùn),推出一個(gè)令人比較滿意的BCBX新版本。


文章來源:Mental Studio
 放生
 愚愛
 夠愛
 觸電
 白狐
 葬愛
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛
 擦肩而過
 我的答鈴
 懷念過去
 等一分鐘
 放手去愛
 冰河時(shí)代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛人
 一定要愛你
 飛向別人的床
 愛上別人的人
 感動(dòng)天感動(dòng)地
 心在跳情在燒
 玫瑰花的葬禮
 有沒有人告訴你
 即使知道要見面
 愛上你是一個(gè)錯(cuò)
 最后一次的溫柔
 愛上你是我的錯(cuò)
 怎么會(huì)狠心傷害我
 不是因?yàn)榧拍畔?/a>
 親愛的那不是愛情
 難道愛一個(gè)人有錯(cuò)
 寂寞的時(shí)候說愛我
主站蜘蛛池模板: 会理县| 大城县| 梓潼县| 临泉县| 平昌县| 拜泉县| 修水县| 南川市| 邯郸县| 大姚县| 阿拉善盟| 驻马店市| 绥棱县| 江陵县| 芦溪县| 开封县| 大渡口区| 安吉县| 凉山| 巩义市| 卫辉市| 故城县| 新津县| 依兰县| 莱西市| 平阳县| 许昌县| 黄骅市| 涟源市| 柘城县| 长白| 新宾| 曲水县| 郸城县| 玉屏| 保定市| 汾西县| 固镇县| 来宾市| 乐山市| 阳高县|