在正題之前, 先哈拉一下題外話.
http://www.tutorialspoint.com/java/index.htm
http://www.java2s.com/Tutorial/Java/CatalogJava.htm
http://www.javabeginner.com/learn-java/introduction-to-java-programming
1. Java 是什麼 ?
Java 是一種程式語言. Java 寫的程式, 可以由 Java 的編譯器, 轉換成 byte code 的格式. byte code 是一種虛擬的指令碼(機器碼), Java Virtual Machine 可以辨識並執行這個指令碼. 從定義上來說, Java 是一種編譯語言 ( compiled language) 它在編譯階段有經過語法分析及指令碼編成. 也是一種直譯式語言 (interpreted language), 它是被 Java Machine 執行, 而不能自己執行.
* 關於這種分類, 其實沒有太大意義. 譬如說, HTML 是一種
interpreted language , Linux 的 shell script 則根本不算是一種 language.
* 語言, 尤其是程式語言, 它是因為需要而產生, 隨時代,環境而變化. 我覺得, 重點應該放在它為什麼被設計成這個樣子? 它追求/想達到的目標是什麼? 為了達到這個目標, 它放棄了什麼 ?
以
2. 物件 (Object) 是什麼 ?
初次進入物件導向世界的人, 很難搞清楚物件的概念, 問題就是把它困難化了. 這邊舉一個例子, 幼稚園的小朋友玩家家酒, 一個扮爸爸, 一個扮媽媽, 扮爸爸的就要拿公事包去上班, 媽媽就要去做菜. 在這個例子中, 小朋友一號就是實體化了爸爸這個物件. 所以它就要去實作拿公事包去上班這個方法(method). 小朋友二號實體化了媽媽這個物件, 實作了做菜這個方法. 爸爸和媽媽這兩個物件, 合起來成為家庭這個物件. 也可以說, 家庭這個物件包含(contain)了爸爸和媽媽這兩個物件. 而小朋友在玩的家家酒, 則是具體化了家庭這個物件.
隔壁小朋友在玩的, 則是家庭這個物件的另一個實例 (instance).
3. Java 的組成, javac/java/jar
Java 的核心, 就是編譯, 執行, 打包.
java 是 Java 的執行器, 內含 JVM, 可以執行 .class
jar是 Java 的打包器. 可以好幾個 .class 打包成 .jar, .jar可以是函式庫, 也可以是執行檔, 這部份下次會說明.
4. Java 和 Android 的關係
猛獁是一種史前時代的巨大動物, 高度可以到達 4 公尺. 但是在克里特島, 卻因為島嶼化的關係, 高度小型化到 90 公分左右. 但是 DNA 檢驗證明, 這是同一種動物.
同樣的, 為了適應 mobile 的應用, 對 Java 新增/修改成了一個特別的版本, 但是, 它仍然是 Java.
通常, 可以在 Desktop 上面撰寫 Java 的程式碼, 再移植到 Android 的平臺上. 我看到有很多人建議這樣做. 譬如說, Eclipse 就整合了 Java/Android 的專案開發/debug, 甚至 git 的版本管理. 在 Eclipse 的開發環境中, 可以對 Java 進行逐步偵錯, 確實比較方便.
5. Java 可以做什麼, Java 提供了什麼 ?
Java 所特重的, 並不是它有提供了什麼, 而是它可以很容易的被重複使用. 因此, 我們可以很容易透過加入其他的 library (jar) , 而完成我們要完成的工作. 甚至, 我們也可以再透過它完成其他的工作. 因此, jar 也被設計成同一個 jar 可以被執行, 也可以被呼叫.
也因為 Java 的這個特性, 我們可以找到非常多的 library 來用. 有些 library 因為太常用, 常常在尋找資料(source code) 時, 頻繁的出現, 反而造成混淆, 下面列出來一些常見的 library, 了解這些名稱是什麼, 會對自己查資料有幫助:
AWT (java.awt): GUI (Graphic User
Interface) library
Swing (javax.swing): GUI (Graphic User
Interface) library.SWT (The Standard Widget Toolkit): GUI (Graphic User Interface) library
Eclipse: an IDE (一種整合開發環境 )
JDBC (Java Database Component): 資料庫介面
java.io (Java input/output library)
另外, 以下列出來了很多 java 可以用的 library, 有點印象會對了解找到的 source code 有幫助.
http://en.wikipedia.org/wiki/Category:Java_libraries
沒有留言:
張貼留言
請提供您寶貴的意見