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