Delphi 2010初體驗(yàn):徹底告別內(nèi)存泄露
Embarcadero公司在兩周前如期發(fā)布了Delphi 2010。作者Kim Madsen作為一名資深的Delphi開發(fā)者,在他的博客中對(duì)Delphi 2010進(jìn)行了一些評(píng)論。博文翻譯如下:
Delphi 2010使用的第一感覺是:是時(shí)候?yàn)樗鼟仐塂elphi 7了。
Delphi 2010比以往的Delphi版本都要快,而且它保留了一些Delphi 7的特性,比如可以將舊的條形控件(componentbar)找回。但這同時(shí)也帶了相關(guān)的問題(比如在重啟Delphi 2010之后componentbar的位置看起來挪動(dòng)了),不過這只是細(xì)節(jié)問題,相信在之后的修補(bǔ)中會(huì)解決這個(gè)問題。
在D2005, D2006, D2007和 D2009中,IDE中都有不少漏洞,以至于內(nèi)存會(huì)迅速被泄露導(dǎo)致IDE以及電腦的其他部分特別地慢。盡管從D2005到D2009,Delphi已經(jīng)做了很多努力,但這種漏洞仍然存在,開發(fā)者不得不經(jīng)常重啟IDE來避免內(nèi)存泄露。
然而在Delphi 2010中我們欣喜地發(fā)現(xiàn)內(nèi)存泄露的問題得到了解決,以前我從事很復(fù)雜的項(xiàng)目開發(fā),很難做到個(gè)把小時(shí)都不重啟電腦,但現(xiàn)在已經(jīng)不用重啟了。另外,IDE的響應(yīng)也得到了顯著的提升,啟動(dòng)時(shí)間比D2009快了不少。
D2010還有許多其他組件的性能提升,但我個(gè)人感覺新增的手勢(shì)支持(gesture support)是個(gè)很有趣的特性。手勢(shì)支持(gesture support)的意思是你可以做出特殊的鼠標(biāo)移動(dòng)來向應(yīng)用發(fā)送一個(gè)命令信號(hào)。就好像是用的不是鼠標(biāo)而是觸摸屏,因此也有可能做出像iPhone的觸摸屏一樣的界面。我想這是一個(gè)很重要的特性,除了手勢(shì)性能以外,更大的意義在于它表達(dá)出了Delphi在桌面端的發(fā)展方向。
以前我曾寫博文詬病過Delphi在桌面領(lǐng)域的表現(xiàn),因?yàn)橄馎dobe Flex和MS WPF等開發(fā)工具功能強(qiáng)大而齊全,可以以相對(duì)簡(jiǎn)單的方法開發(fā)出很酷的客戶端應(yīng)用,而用Delphi卻很費(fèi)勁;我也曾詬病過Delphi在服務(wù)器領(lǐng)域的表現(xiàn),而且它的市場(chǎng)由于Java和.Net而大幅縮水,而且由于缺少跨平臺(tái)的兼容性、拋棄傳統(tǒng)的Kylix編輯器而喪失了Linux的支持,Delphi在競(jìng)爭(zhēng)對(duì)手面前淪為開發(fā)者的末端選擇。這種境況在今日仍然如此,但是在過去的六個(gè)月中,Embarcadero公司宣布計(jì)劃將支持Mac和Linux的跨平臺(tái)編譯,無疑這是Delphi向前發(fā)展的一大步。
由于全新的手勢(shì)支持以及跨平臺(tái)的計(jì)劃,Delphi在未來幾年有望贏過競(jìng)爭(zhēng)對(duì)手并重新奪回市場(chǎng)份額。當(dāng)然這取決于跨平臺(tái)特性的最終性能,而且Embarcadero也不應(yīng)當(dāng)放松對(duì)手勢(shì)支持的控制和研發(fā),畢竟這是它桌面應(yīng)用的方向。
那么Delphi還應(yīng)當(dāng)在哪些方向繼續(xù)努力呢?
*改良數(shù)據(jù)綁定?,F(xiàn)在的Delphi唯一的綁定是用特殊的數(shù)據(jù)源綁定有意識(shí)的控制(TDataSource和TDBxxx組件)。這一特性在當(dāng)年剛推出的時(shí)候非???,但是它現(xiàn)在已經(jīng)被.Net和Adobe Flex/Flash 4超越,因?yàn)?Net和Adobe Flex/Flash 4有兩種方式可以將任何屬性綁定到其他屬性。因此,需要拋棄現(xiàn)有的Delphi DB控制,增加先進(jìn)的自動(dòng)的兩種綁定方式。
*優(yōu)化現(xiàn)有的TCanvas和Device Contexts,從而可以將任何控制放在畫布(Canvas)上,讓畫布自動(dòng)浮動(dòng)在3D空間。這將給開發(fā)者帶來新的用戶界面,比現(xiàn)有的2D更有感覺。舉個(gè)例子:在顯示器幀值一定的情況下,如果你想呈現(xiàn)產(chǎn)品清單軟件中的多個(gè)產(chǎn)品的細(xì)節(jié),你就要經(jīng)常使用目錄,點(diǎn)擊列表中的項(xiàng)目以在窗口上顯示產(chǎn)品的細(xì)節(jié),或者添加許多產(chǎn)品標(biāo)簽才能實(shí)現(xiàn)。然而這兩種方法都不能同時(shí)展現(xiàn)產(chǎn)品和信息。如果使用Apple CoverFlow會(huì)怎樣呢:就可以在3D空間中展示產(chǎn)品信息了。結(jié)合手勢(shì)控制和觸摸屏,開發(fā)者使用手指就可以瀏覽產(chǎn)品。雖然它的硬件要求比2D更高,但是現(xiàn)在即便最普通的PC都可以滿足這一要求。
在服務(wù)器端,我的期望是Delphi可以實(shí)現(xiàn)單一來源、多平臺(tái)支持。
語言特性方面,我期望Delphi:
* XML和正則表達(dá)式成為語言的一部分。XML不消多說,正則表達(dá)式在字串匹配和許多應(yīng)用使用的解析設(shè)備方面非常有用。為什么不讓它們成為Delphi語法的一部分呢?實(shí)際上,查看XML的E4X EcmaScript,可以將XML直接整合到語言中,所以看起來Delphi應(yīng)該可以很自然地使用XML。
除此之外,Embarcadero的開發(fā)者還應(yīng)當(dāng)考慮如何解決下面的任務(wù)來更好地做好Delphi的開發(fā):
* 應(yīng)用的打包和分配;
*盡管存在各種第三方安裝工具,但如今分配到Win32環(huán)境還是很復(fù)雜。主要的原因是因?yàn)樾枰渌_發(fā)工具和語言來創(chuàng)建相關(guān)的安裝腳本,而且這些腳本的更新周期很快,需要持續(xù)不斷地更新。
*文檔在源代碼內(nèi)提供了各種注釋,因而某種程度上它已經(jīng)成為了開發(fā)過程的一部分。我個(gè)人很討厭這種方法,因?yàn)樗鼘⒃瓷⒙涞玫教幎际牵F(xiàn)在的文檔則是分離式的也很不方便。因此IDE需要提供一種解決方式,既讓文檔同步,同時(shí)又能夠?qū)⑽臋n和源分開從而可以簡(jiǎn)單地將文檔翻譯到其他語言中。
【前幾周熱點(diǎn)周報(bào)】