關于OO及虛擬機的簡單認識

一、OO

OO (Object Orient) 本來是編譯器的事兒,是程序高手讓編譯器能夠編譯數據與函數的封裝及繼承等語法,以便提高代碼的可讀性及復用性 。

大的計算機系統復雜性的增加及軟件開發量的不斷加大使 OO 逐漸成為把事情理清楚、弄簡單的好辦法,于是各編譯工具(包含在開發環境之中)的供應商不斷推出 OO 編譯器,實現大系統的 OO 理論也迅速發展 。然而對于小的應用程序開發,是否 OO 倒沒多大區別 。

OO 終歸是編譯器支持的語法,OO 編譯之后的結果還是機器指令與對操作系統 API 的調用,所以 OO 支持的語言實際上是編譯器在機器指令與操作系統 API 之上定義的語言 。進一步,OO 編譯器支持的語言就是標準 OO 語言(主要由編譯器支持)與操作系統特色 OO 語言(主要由操作系統支持)的累加,有人說其比例是 3 比 7 。所以某一種 OO 語言的實現能力主要是由編譯器與操作系統 API 共同決定的,當然其配套的 IDE 對程序員的影響也很大 。

OO 語法在最終對編譯器產生決定性影響后――當然從此對軟件開發人員也形成決定性影響,開始對行業產生更大的影響 。

OO 思想對操作系統 API 及應用軟件的也產生了影響,與編譯器支持 OO 的形式是類庫不一樣,操作系統對 OO 的支持形式主要是組件,類庫與組件之間沒有任何必然的聯系――盡管組件像是類的編譯結果 。這兩種開發形式對程序員開發來說沒有多大區別――都是在基本 OO 庫的基礎上制作自己的 OO 庫 。但是對于 OO 庫的應用來說有區別,編譯器支持的 OO 只能支持代碼庫的復用,而操作系統支持的 OO 除此之外還可以支持應用程序、應用系統的復用 。另外,操作系統的 API 也開始向 OO 的形式轉變――盡管其內部結構變化不大 。

二、虛擬機

虛擬機是一個應用程序,為每種操作系統的開發了一個版本,它提供一組標準的 API(有的還提供實時編譯器),仿真一個標準的CPU及操作系統的 API 集,在其之上的應用程序可以像運行在一個真實的CPU與操作系統之上一樣 。虛擬機實際上主要做的是從其自定義的 API 到操作系統 API 之間的“翻譯工作” 。虛擬機的好處是程序員的程序可以在操作系統之間復用,另一個好處是可以增加操作系統的安全可靠性――相當于又增加了一個系統運行級別 。

與 OO 的發展原因相似,大的計算機系統復雜性的增加及應用的不斷增加使基于多操作系統的開發要求越來越多,虛擬機及其之上的標準組件庫顯然是減少開發量、增加復用的好選擇 。然而對于小的應用程序開發,是否用虛擬機倒沒多大區別 。

三、OO 與虛擬機

OO 與虛擬機沒有必然的聯系 ?;谔摂M機進行設計的編譯器供應商如果提供支持 OO 的編譯器,那程序員就用 OO 開發;如果提供的不是 OO 編譯器而是如 BASIC 編譯器,那就用 BASIC 語言進行開發――當然到目前為止這只是一種假設 。

OO 與虛擬機的本質是一樣的――都是為了復用,所以其二者的結合逐漸成為大型系統的開發的主要模式,進一步引得大的系統供應商競相把自己的系統向這種模式轉移、轉變 。

四、各種 OO、各種虛擬機之間的競爭

OO 思想不會有競爭的,競爭的是編譯器(及其定義的語法) 。但編譯器主要依賴于虛擬機,所以虛擬機的競爭是主要的 。如果虛擬機都是一套標準的模式,那很快就會抹平競爭優勢,這是不現實的,所以各虛擬機的性能會迅速提高、組件會迅速增多,但這又與跨操作系統發生沖突 。

說到底,OO 編譯器、虛擬機都是開發工具,加上底層的操作系統的不同支持,供應商會在平臺的廣泛適用與高級功能之間不停地進行競爭、平衡,這大概會是未來很長一段時間的主要競爭模式 。進一步,整個行業應用程序開發都將向這種模式轉變 。

推薦閱讀