1.2.7 可移植性
與c和c++不同,java規範中沒有“依賴具體實作”的地方。基本資料類型的大小以及有關運算都做了明确的說明。
例如,java中的int永遠為32位的整數,而在c/c++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小。唯一的限制
隻
是int類型的大小不能低于short int,并且不能高于long int。在java中,資料類型具有固定的大小,這消除了代碼移植時令人頭痛的主要問
題。二進制資料以固定的格式進行存儲和傳輸,消除了位元組順序的困擾。字元串是用标準的unicode格式存儲的。
作為系統組成部分的類庫,定義了可移植的接口。例如,有一個抽象的window類,并給出了在unix、windows和macintosh環境下的不同實作。
選擇window類作為例子可能并不太合适。凡是嘗試過的人都知道,要編寫一個在windows、macintosh和10種不同風格的unix上看起來都不錯的
程
序有多麼困難。java 1.0就嘗試着做了這麼一個壯舉,釋出了一個将常用的使用者界面元素映射到不同平台上的簡單工具包。遺憾的是,花費了
大量的心血,卻建構了一個在各個平台上都難以讓人接受的庫。原先的使用者界面工具包已經重寫,而且後來又再次重寫,不過跨平台的可移植
性
仍然是個問題。
不過,除了與使用者界面有關的部分外,所有其他java庫都能很好地支援平台獨立性。你可以處理檔案、正規表達式、xml、日期和時間、資料
庫、網絡連接配接、線程等,而不用操心底層作業系統。不僅程式是可移植的,java api往往也比原生api品質更高。