![image-ru-00-18](https://cdn.codegym.cc/images/article/39735482-af27-4449-93ad-88b9649329bc/original.gif)
「嗨,阿米哥。我是漢斯‧麵條教授,銀河衝衝號上科學委員會的負責人。我也負責監督幫你學習 Java 程式設計的教學工作。」
「哈囉,麵條教授。」
「我想對你說明,為什麼 Java 是非常酷的程式語言。」
「 Java 有一個無人匹敵的優點,我們會反覆強調,這個優點就是它的平台無關性 (platform independence)。那是什麼?用來幹嘛?你大概想問。讓我繞個彎來解釋它。」
「電腦只能執行最簡單的數值命令。」訓練狗的時候,我們會使用像是『腳側隨行』、『握手』等指令,來讓狗做出我們希望的行為。」
「對電腦來說,數字跟這類命令扮演同樣的角色。每個命令都由特定數字或代碼(有時會稱為機器碼 (machine code))來表示。」
「但只用數字寫程式實在太困難了,所以人們發明了程式語言和編譯器 (compilier)。人類和編譯器都能理解程式語言。編譯器是一種特殊的程式,能把用程式語言編寫的程式轉換成一串機器碼。」
「程式設計員通常以程式語言撰寫程式,然後運行編譯器,編譯器接著把程式設計員寫的程式代碼檔案變成機器碼形式的單一檔案—也就是最終(編譯完成)的程式。」
- 以 C++ 設計程式
-
編譯器
- 機器碼
「產生的程式可以立即被電腦執行。壞消息是最終程式的碼對於處理器和操作系統有很強的相依性。也就是說,為 Windows 系統編譯的程式在 Android 智慧型手機上無法使用。」
「所以,如果我寫了一個程式然後編譯給 Android 系統,它也不能在 Windows 系統上使用囉?」
「完全正確。」
「我明白了。」
「然而,Java 使用了一個非常創新的方法。」
- 以 Java 設計程式
-
Java 編譯器
- 與平台無關的特別碼(位元組碼 (bytecode))
-
JVM
- 機器碼
「Java 編譯器不會把所有類別編譯成單一機器碼程式。它採取不同作法,把每個類別獨立編譯,而且並不是編成機器碼,而是編成特殊的中間碼(位元組碼)。位元組碼在程式啟動的時候被編譯成機器碼。」
「所以,誰會在程式被執行的時候,把它編譯成機器碼呢?」
「有個叫做 Java 虛擬機 (JVM) 的特殊程式。在你需要運行位元組碼程式之前,必須先啟動 JVM。JVM 會在程式執行前,把位元組碼編譯成機器碼。」
「真有意思。為什麼必須那樣做呢?」
「這是個威力強大的做法,也是 Java 完全主導了市場的原因之一。」
「這個做法讓用 Java 編寫的程式幾乎可以在所有裝置上運行:電腦、智慧型手機、ATM 機台、烤麵包機、甚至是信用卡!」
「酷!」
「這個做法有很多優點。所以 Android 程式也採用 Java 進行編寫。由於行動手機產業的快速成長,Java 在下列程式設計領域都佔了主導性地位:
1) 企業:重度伺服器導向的應用,用於銀行、公司、投資基金等場域。
2) 行動:行動開發(智慧型手機、平板電腦),這要歸功於熱門的 Android 系統。
3) 網頁:PHP 還是領先,但 Java 在市場已取得重要的影響力。
4) 大數據:分散式運算,用於由上千台伺服器組成的叢集中。
5) 智慧型裝置:用於智慧家居、電子裝置、物聯網冰箱等裝置中的程式。」
「Java 不只是一個語言,更可說是一個生態系統:有上百萬個現成的模組供你在自己的程式中使用;你也可以從上千個網路社群及留言板取得幫助或建議。」
「你以 Java 撰寫程式的經驗越豐富,對於『為什麼選 Java?』這個問題,你就會找到越多答案。我們今天就說到這裡。」
「謝謝您,教授。這真的非常有趣又具啟發性。」
GO TO FULL VERSION