Java 特性

說明Java與其他程式語言主要有哪些差異

  • 高階程式語言 (high-level programming language)

  • 簡單且純物件導向 (simple and purely object-oriented)

  • 可攜性 (portable)

  • 開發網路應用 (developed in world wide web applications)

高階程式語言

若將程式語言概括分為低階語言和高階語言兩種,Java是屬於高階程式語言。

低階語言不是比較low,而是更接近機器端的語言,如由01位元構成的機器碼(CPU執行,幾乎不具可讀性)、組合語言(比機器碼具可讀性,但仍不易理解)。

高階語言一般被認為具有可讀性,需要有編譯器(預處理器)轉為執行碼才交由機器執行。

高階語言與低階語言的分類沒有明確定義,但也不需要定義。重要的是你要知道現在你要開發的程式在哪裡被執行、用來提供什麼樣的功能。不管哪種程式語言都是為了方便工程師解決問題而開發的。

簡單且純物件導向

簡單,

上述提到Java屬於高階語言,具有可讀性,且內建函式通常是由簡單英文單字構成,因此稱為簡單。但Java的世界無遠弗屆,縱使已經公開於世二十多年,但仍不斷的在進化更新。若終止學習,或連想學習的心都沒有,那可能不能算上簡單了。

純物件導向, purely object-oriented ,

Java的世界即是物件的世界,C語言可以用一個函式做為一個程式的最小單位 int main(){...},但Java是純物件導向,一個Java程式至少會有一個物件,該物件執行方法(method)來達成所需要的功能。詳細物件的介紹後面章節會深入說明,這邊重點是Java程式的一個最小單位是一個物件,C是函式導向,C++是半函式導向半物件導向,因此學習好Java的純物件導向,往後要學習其他物件導向的語言會非常容易上手,而事實也是在Java之後被開發出來的熱門語言大多都會涵蓋物件導向的精神(如Apple的Swift)。

可攜性

"Write once, run anywhere" 這是Sun公司推出Java語言時喊的口號,一語道出了Java的跨平台特性。

也就是說工程師可以在自己電腦上開發程式,並將產生的執行檔拿到其他支援Java的系統上運作,且不需任何調整。這點大大增加了程式的通用性,減少工程師為了不同平台而重複寫很多類似功能的時間。在許多晶片、設備、軟體包中安裝Java已經變成一種標準。

但這點又是如何做到的?

『程式碼經過Compiler的編譯,產生執行檔,然後交由機器執行。』讓我們來把這句話講得更清楚。

如果想要在windows上開發C語言程式,你需要做的是:

撰寫C語言程式 -> 利用windows平台的C語言編譯器,編譯產生windows的可執行檔 -> 交由windows執行。

注意到了嗎?若同樣的程式要在Linux系統上執行,需要利用Linux的C語言編譯器,產生Linux的可執行檔,才能執行。

換另一個平台就要類似的動作在做一次,還不能保證出來的結果不會有問題,因為C或C++語言資料型態、指標的位元組大小會因平台及作業系統的bits不同而不同。

Java的開發為了克服這個問題,使用了一個名叫JVM (Java Virtual Machine)的Java執行環境。『所有』的Java程式,都是在JVM上執行。因此所有Java上的資料型態在JVM上都是統一的,不會因為作業系統不同而產生不同的結果,這個特性使就是Java可以跨平台的關鍵。

或許你會覺得很弔詭,明明是想在windows上開發Java程式,為什麼突然蹦出一個Java虛擬機器(JVM),還說我的程式要在上面跑?

你可以把JVM當作與作業系統溝通的『橋梁』,你跟JVM說你想要印一段文字,JVM會解析你的.class檔 (Java的執行檔),然後去作業系統那邊執行相對應的工作。所以你完全只需要跟JVM溝通,不用理會當前是什麼作業系統。

要在windows上執行Java,就給windows-JVM你編譯出來的Java執行檔。

要在Mac OS上執行Java,就給Mac OS-JVM你編譯出來的Java執行檔。

要在Linux上執行Java,就給Linux-JVM你編譯出來的Java執行檔。

只要該作業系統上有支援相對應的JVM,你所撰寫的Java就可以在該作業系統上的JVM執行。

~ 或許你已經發現,Java根本不是所謂的跨平台ww ~

Java程式只有在一個平台上可以順利執行,那個平台叫做JVM,而支撐著Java可以到處在任何OS上執行的背後推手,就是那些開發不同平台JVM的工程師們。對JVM來說 他只認得 .class的執行檔,解析這個.class執行檔,會跟作業系統要資源執行命令處理資料。

開發網路應用

Java是因為瀏覽器而爆紅的,而他也提供許多API來開發網路應用。不論是瀏覽器上執行的Java Applet,或是要開發Server、Client都很方便。

備註一下,Java跟JavaScript只有名字很像而已,其實沒什麼關係,不要搞混。

Last updated