談到Java,我們不得不談到Java優秀的可移植性,這基本上是Java最值得誇耀的地方。一次編譯,隨處運行,Java的這一切都源於它的運行方式——採用JVM(Java虛擬機器)託管運行。由於採用作業系統最小交集,對於每個平台,它都能有一套實現機制,保證實現相同的效果。但是正由於Java的這種特性,也導致了Java的低效。 為什麼程式員以及使用者都不喜歡用Java做案頭開發呢? 主要有以下幾點原因:1、啟動速度慢:Java採取JVM進行託管運行,在啟動Java程式的時候,首先要載入JVM,然後才是依次載入Java所需的類庫,這需要一定時間的延時。2、佔用記憶體大:載入JVM需要消耗極大的記憶體,而且由於Java採取自動回收垃圾的機制,記憶體回收並不由Java程式本身控制,而是由JVM來自動實現,這樣不能通過手工馬上釋放記憶體。Java並沒有提供一個手工處理記憶體回收的機制,而僅僅提供了一個簡易記憶體回收的方法。如果記憶體佔用不大,也許Java永遠也不會進行記憶體回收。3、需要安裝JRE:JRE(Java Runtime Environment)是Java程式的運行環境,這需要使用者額外的安裝一個應用程式,最新版本的JRE5.0大約為15M左右,這使得任意一個Java傳統型應用程式的安裝包都在15M以上,即使一個簡單的“Hello world”程式。4、響應速度慢:JDK提供的標準的介面開發包為awt包和swing包。他們的底層實現並不是直接叫用作業系統自身提供的小視窗組件,而是採用另外一套輕量級實現機制進行視窗小組件類比,以保證在各個作業系統下看到的效果都一樣。但是一來看上去樣子很彆扭,二來效率低下,響應速度慢。5、Java的布局:為了保正在每個作業系統看到的效果都一樣,Java採取了Layout策略。這樣就不能像Window程式開發通過簡便的可視化拖拉就可以達到我們想要的結果,而要進行複雜的布局管理器設定。每個Java開發人員在學習介面編程都不得不去面對複雜的布局管理器編程。6、能夠操縱的系統API太少:由於採用系統交集,所以Java也只能操作所有作業系統一致擁有的API,這樣將使傳統型應用程式的功能不得不大大減少。很多功能都是Java開發人員無法得到的,連拿到磁碟空間這種最基本的API,Java程式員甚至都無法做到。
看到這篇文章, 讓我想起了前段時間聽說的一件事情, 一Java開發的小型資訊系統原來採用B/S結構, 但卻因為客戶方的用戶端機器配置太差(據說記憶體才128M), 而改用Dephi開發, C/S結構. 當時不明白為什麼改用Dephi, 後來問程式員, 結果也不清楚. 直到我看到了這篇文章, 呵呵. 原來如此啊. 理解了為什麼後來會出現AJAX, 也就理解了AJAX這兩年的火爆了.