今天復習java的知識,學到了類加載器,jvm第一個類加載器是BootStrap,用來加載其它的類加載器,比如AppClassLoader。不清楚的同學可以去網上找下張孝祥老師的《java高新技術》的視頻查看一下。
在視頻中張老師提到BootStrap是用C++編寫的,那么就引入了C++是否是跨平台的思考,因為我一直知道的只是JAVA在宣傳跨平台,偶爾也聽說過.net支持linux可以使用C#開發等等。
百度一圈發現眾說紛紜,但可以確定的是C++是可以跨平台的,只不過實現方式不同而已。
此處引用網友的說法:
C++編程語言是跨平台的,這正是他當年的設計的目標。
需要重新編譯,只是C++編譯器輸出的可執行代碼不是跨平台的,但是這正是C++源代碼跨平台的實現手段之一。
你有沒有想過,只要開發平台上安裝了C++開發工具,發布平台上可以什么都不用安裝就可以執行了,而Java必須在目標平台上安裝JVM,你認為這樣才叫跨平台,它並沒有跨平台,它只是在自己的平台上運行,它在所有的平台上附加了JAVA虛擬機平台,類似於一個小的操作系統。
Java它自身就是一個平台。
-----------------------------------
總結:
這說明所有語言都是跨平台的,畢竟要吸引用戶去使用它,只不過表現形式和操作方法不同而已。這里引出了“一次編譯,到處運行”。java並不是編譯機制,而是解釋機制。
java是僅需編譯一次即可,安裝上JVM,底層的處理交給它處理就好了。而JVM也是用C++幫你實現了與底層硬件的交互。你只需了解java提供的api即可寫出跨平台程序,不用去操作系統平台的問題啦。
網友的神比喻:
如果把 Java的程序比做“漢語”的話,字節碼就相當於“世界語”,世界語不和具體的“國家”關,只要這個“國家”提供了“翻譯”,就可以再快速地把世界語翻譯成本地語言。
博客推薦:http://blog.csdn.net/wangyongxia921/article/details/28117155
-----------------------------------