對於JAVA的跨平台和C的可移植性,一直存在疑惑,這裡說說個人理解
1.C的可移植性需要在不同的作業系統上多次編譯成不同的目標代碼,甚至需要為不同的作業系統編寫不同的代碼,而JAVA因為有JVM的支援,就免去了這個麻煩
2.JAVA的跨平台是一次編譯,依託JVM可以到處運行
引用在論壇上看到一位仁兄的發言,覺得很有道理
在java之前,跨平台是很痛苦的事情,主要是因為所有對於系統的調用,在不同的作業系統下結果都不一樣,簡單的來說,int的長度在不同作業系統裡面就不一樣,甚至於連位元組排列的順序都不同。調用同一個函數返回的格式也不同,因此,寫程式的人自己要對不同的系統非常瞭解,如果真的需要對不同作業系統進行相容,要在程式裡面寫很多if,編譯的時候要先判斷使用的作業系統,創造很多環境變數才能編譯,而且編譯好的二進位可執行檔只能在本系統上運行。如果你寫的是個功能庫供別人調用的,那麼光對作業系統的判斷就佔了代碼的絕大部分,而且,還要你在不同平台下進行測試,這可是個艱苦卓絕的工作。建議你有空可以看看apache httpd伺服器的原始碼就知道了。
自從有了java之後,就把作業系統相容的工作丟給了jvm了,對於程式員來說就再也不要關心int有幾位,還有高位在前還是地位在前的問題了,你只要用java的代碼把你程式的邏輯實現出來就可以了,這些相容的問題就交給jvm去處理吧。這樣,如果你寫一個程式交付給客戶使用,如果客戶的環境是運行AIX的,你就不需要在本地也裝一個AIX來開發和運行,你可以在windows上完成所有的開發,然後把編譯好的檔案交給客戶就可以了,以後有別的客戶需要在Solaris上運行這個程式,你都不用修改,直接拿過去就可以運行,這難道不是一種方便嗎?只有被跨平台開發折磨過的人才能更深得體會到用java開發跨平台應用的優勢。
另外再引用一段對於PHP跨平台的理解
我用PHP的時間不算太短,才4年左右,現在基本上不用了,改用JAVA了
並不是因為PHP不好,我個人很喜歡PHP
但是我的寫的程式中很多是需要在M$和Linux兩個平台上搬來搬去用的(因為我無法限制使用者的平台)
如果用PHP的話,很多擴充在兩個平台上不見得通用,甚至有的不支援
為了一個程式寫兩個版本,或者在程式中寫大量的判斷,我想我的時間和精力不夠用了
改用java,只需要在運行平台上安裝相應的jvm, 我只管我的程式能否正確的運行,剩下的我就不用管了,多省事
btw:
並不認為JAVA是萬金油,什麼地方都可以用,只是認為能省點事幹嘛不省點?? 反正現在機器配置都不錯,運行效能差點沒關係吧 :-)