Java源碼,編譯後會產生一種.class文
來源:互聯網
上載者:User
相信大家已經瞭解到Java具有跨平台的特性,可以“一次編譯,到處運行”,在Windows下編寫的程式,無需任何修改就可以在Linux下運行,這是C和C++很難做到的。
那麼,跨平台是怎樣實現的呢?這就要談及Java虛擬機器(JavaVirtualMachine,簡稱JVM)。
JVM也是一個軟體,不同的平台有不同的版本。我們編寫的件Java源碼,編譯後會產生一種.class文,稱為位元組碼檔案。Java虛擬機器就是負責將位元組碼檔案翻譯成特定平台下的機器碼然後運行。也就是說,只要在不同平台上安裝對應的JVM,就可以運行位元組碼檔案,運行我們編寫的Java程式。
而這個過程中,我們編寫的Java程式沒有做任何改變,僅僅是通過JVM這一”中介層“,就能在不同平台上運行,真正實現了”一次編譯,到處運行“的目的。
經常在網上看到各種標題為“Java程式員”、“PHP程式員”、“C/C++程式員”的招聘文章,但我感覺這種招聘方式,很難找到好的人才。語言只是一種工具,對一個聰明的程式員來說,用沒用過什麼工具主要是由他原來的工作需要決定,並不能代表他全部的技能。
另外,一個軟體產品往往涉及很多方面的知識,比如網路、資料庫、Cache、編譯環境工具等。如果這些必要基礎知識不足,很難很好的獨立完成一個產品的某個部分。
另一方面,一個人的聰明程度、對新知識的好奇心、自我驅動意識、為問題找到最佳解決方案的決心,才是他能不能成為一個好程式員的關鍵。舉個例子,我在擔任JPushCTO的時候,有位同事本來是伺服器端以C語言為主做開發的,完全沒有過iOS開發經驗,但他表現出對iOS開發很有興趣,並且在做伺服器端開發時,表現出良好的學習能力,後來我把他調到iOS組,負責iOSSDK和APNs相關的工作,結果只花了幾個星期,iOSSDK的穩定性大幅提升,解決了多個致命問題。
之所以用Java作為標題,一是現在以Java語言為主的工作非常之多,另外在學校裡就以學習Java為主的人也越來越多。但我發現,從學校就以學習Java這種進階語言為主的人,很多基礎知識比較薄弱。進階語言掩蓋了太多細節,提高了生產力,但在學習階段,卻不利於基礎知識累積。
軟體行業是一個非常強調人的價值的行業,價值就體現在有效推動產品前進,而語言只是實現這個價值的工具。