前言
VCL 庫是Delphi程序員熟知的,她幾乎成了Delphi RAD技術的代言人。
VCL擁有世界上最大最豐富的控件資源涵蓋了軟件開發的各個方面,遠遠超過其他開發工具,是每個程序員所垂涎。VCL的優點不再多說,現在我要向各位Delphi兄弟介紹另一套Delphi上的類庫:KOL。
KOL是什麼?
KOL
- Key Objects Library is a set of objects to develop power 32 bit Windows GUI applications using Delphi. It is distributed free of charge, with source code.(以上這段摘自KOL的主頁)
"沒有一個字節的代碼是廢物"
(我寫的第2個KOL程序,35K,ASPack壓縮後28K,1個Exe不需要任何運行庫)
現在的VCL應用程序雖然很優美,但還不夠精簡(a little oversized),一個空空的GUI程序至少有270K(Delphi5),原因是Borland的編譯器技術雖然精湛,具有SmartLink技術(只把用到的代碼連接到EXE),但對於很多面向對象編程中采用了大量的的方法繼承,虛方法表,使得 SmartLink也無能為力。而且隨著 Delphi 升級,基本對象的方法和屬性的代碼也越來越大。采用分離的運行庫編譯雖然可以減小EXE,但要求客戶端安裝VCL運行庫是困難的,除非微軟讓步......(不說也罷)。不過總的說來,雖然基於VCL的程序有冗余代碼,但相對其他同類類庫,EXE尺寸已經算很不錯了,一般在數百K到1、2M左右。
其實我們很早就聽說直接用WinAPI可以創建很小的程序(有個著名的TestGUI.DPR),因此有些程序員就打算自己建VCL以外的類庫,具有VCL主要的功能,創造精簡的
程序。Delphi上的非VCL類庫目前我所見到的有3個,分別為 ACL,XCL/KOL 都出自俄羅斯(老毛子高人輩出,而且是歷史上很多革命的發源地)。其中最具有革命性的就屬KOL庫,作者 Vladimir Kladov 在1999年就開始設計 XCL,XCL出到1.86(2000年7月)
特點是重寫VCL,刪除不必要使用很少的對象屬性和方法,其體系與VCL類似,也是
對象繼承方式。
到2000年,Vladimir Kladov 發現XCL雖然有效,但不能根本解決問題,或者說有可能重蹈VCL庫覆轍,於是他停下了XCL,推出了更大膽的計劃KOL。其技術要點是設計了一個巨無霸對象TControl,避免了對象繼承,用不同的NewXXXX方法創建對象,使得編譯器可以輕松的剔掉冗余代碼,另外還有替換System單元等多種手段。聽起來很不可思議,是吧?哈哈,但我玩過最新的KOL,發現它的確實厲害,KOL的目標並不是取代VCL,而是幫助我們完成一些功能齊全的,尺寸緊湊的專用EXE(最小的KOL GUI 程序只有9.5k),這在我們將來設計一些通過網上分發或嵌入設備程序會很有用。另外,KOL中重寫了的TStrList、TList等大量對象比原來的VCL效率更高。
KOL的程序設計難嗎?
(以下部分內容據我今天(2001/5/14)剛從網上更新的0.74KOL,0.73MCK庫而來,而KOL最近更新很頻繁,請大家關注其網站)
早期的KOL的程序開發是完全"非可視"的,其標准例子可看出。不過用KOL的程序員,絕非等閒之輩,相信 VC++/MFC的哥們也會很容易上手,因為和 WinAPI打交道其實也很親切,但KOL絕對是一個優越面向對象的類庫,建新程序中自己手寫的代碼已經不算多了。
但Kladov又推出一個可視開發工具 MCK(鏡象構件庫),非常巧妙的利用了Delphi的IDE
實現了可視開發。當然很多人建議設計VCL工程翻譯工具可能更方便,但現在還沒人去做,畢竟是個革命性的東西,需要更多人參與。我個人認為MCK還算個很好的思路,至少在新工程開發上不難。但傳統的Delphi程序員一定要有思想准備,你的第一個KOL程序花的時間肯定是你第一個VCL程序的數倍甚至更多(第一個VCL程序只要按一下F9就行了,呵呵)將來的KOL會“可視”到什麼程度,我的估計應該很樂觀。
現在KOL已經有OLEdb 和 DBF 數據庫的控件了,由於 VCL的控件大多源碼開放,KOL的控件群出現指日可待。
說到可視化工具MCK,我真的很佩服Kladov的匠心獨具,Kladov有一句話很有意思:
“KOL/XCL從一開始就沒打算設計成可視化開發方式...我反復的告戒自己KOL可視化是不可能的,可是我熬了4個通宵後,事情好象辦成了...”
說這麼多差不多了,各位趕快去KOL主頁上看看吧。
其他
你寫的第一個KOL Form 注意上的 defaultPosition defaultSize 屬性請設為 False.
希望各位Delphi兄弟有空交流KOL開發經驗,我的信箱: [email protected]