JVM, JRE, JDK
與一般直譯程式語言不同,JAVA是分為編譯與執行兩個部份。程式設計在打字時都是編譯階段,程式編譯完成實際運行的時候稱為執行階段。JVM = Java Virtual Machne 簡單記一下就是讓JAVA語言能夠跨平台的一種特徵。
JRE = Java Runtime Environment 安裝在電腦上就可以運行JAVA程式。
JDK = Java Death Killer JAVA死亡殺手
其實JDK是Java Developer Kit的縮寫,意思是JAVA的開發者工具,與一般的SDK也就是Software Development Kit的性質相同。
但是對JAVA的初學者來說,JDK絕對不友善,這就是Java陣營的潛規則。無論再有錢也買不到配套好的完整開發環境,更別提什麼所見即所得的拖拉工具。所有該自己設定的變數或選項就要自己設定,就算有付費方案也不會讓你輕易的駕馭。過去戲稱JDK全名為Java Developer Killer 並不是徒有其名來的。
J2SE, J2EE, J2ME
Java分為三個體系,分別為Java SE 標準版
JavaEE 企業版
Java ME微型版
可以在 Oracle Technology 網站上參閱所有版本
說到微軟家用版要收錢,企業版收更多錢。讓一般人認知企業版就是要收錢的版本,其實企業版的概念就是透過網路的進階功能提供解決方案的版本。就只差個網路這樣嗎?就只有這樣。
javac, java
javac 執行javac時會動java的編譯器程序,將JAVA語法轉換為JVM的機械語言。java 運行編譯完成的機械碼, 讓JRE如同反射動作般運行程式。
1. 要能夠成為可執行檔,在編譯前必須要有一個執行的起始點 main()
2. 程式設計執行 javac 時使用發生錯誤時稱為編譯錯誤 Compile error 也可以稱為語法錯誤 Syntax error
3. 執行java發生超出程式設計預期結果為執行錯誤 runtine exception
API
現代的整合開發環境已經提供了相當簡易的系統開發環境,但是在學習與實作中還是有些處理需要自己輸入程式碼去完成。JAVA 的 Application Programming Interface 操作而言「點」相對於動詞,小括號表示參數、大括號表示程式碼區塊、分號表示句子結束。如此而已,想太多只會造成不必要的壓力。困難的部份,也只有指令用法的查詢。JAVA API 的內容龐大,沒有任何一本書可以詳細講解每個 API 如何運用。例如JAVA7可以在線上直接查詢相關的類別功能與使用方式,網址是: http://docs.oracle.com/javase/7/docs/api/,以此類推中間那個數字就是代表版本號。事實上,大部份常用的方法是不會有變動的。而JAVA的特性是絕大部份的語法能與舊版本相容,極少部份被放棄的套件也有取而代之的用法,幾乎完全不用煩惱語法版本問題。現代高教生懂得使用搜尋引擎來找尋問題的解答是一件必要的能力,使用 Google,幾個簡單的關鍵字通常就可以找到任何API使用上的方式。
class, object
在現實世界中,各項事物都可以分門別類。世界上的每樣東西都可以分類,甚至相同的東西也會有新舊大小之分。而每項分類也都有不同的特性,講的出來的分類都能夠具體連想到相關的東西。在 Java 中使用 class 來定義「類別」,使用類別來定義一個 Object 「物件」時,會考慮這個物件可能擁有的「屬性」Property 與「方法」 Method。屬性是物件的靜態表現,而方法則是物件與其他物件互動的動態操作。
汽車 class car
豐田汽車 class toyoya extends car
豐田汽車 class Prius extends toyota
凌志汽車 class ct200 extends Prius
new camry AFK888...run()...stop()...scrap()
new ct200 AAC088...race()...crash()...scrap()
project
project 是程式設計時的暫時名稱,讓可以重複使用的資源放在同一個資料夾好用好找。不同於一般的直譯式程式隨便建個文件,把程式從頭打到尾複製再複製的設計方式。這個翻譯名詞通常叫專案
project/ 專案資料夾
src/ 程式碼資料夾
bin/ 編譯檔資料夾
lib/ 套件資料夾,通常要建立並導入
package
package又稱封裝,其實就是資料夾。不用懷疑就是資料夾,只是在程式碼中用「點」來分隔而不是用斜線。主要用來識別專案中的資源路徑,或是引用套件時的目錄的路徑。有時候在專案中會有多個類別彼此合作,也有可能由多個外來套件協助。若是沒有package封裝路徑.class,在使用時就有可能發生物件或方法命名衝突的問題。package 的概念與資料夾概念幾乎完全一樣,同名資料夾不可在同階層、不可使用特殊符號等。
classpath
開發環境中所有資源路徑統稱classpass ,有些是JAVA安裝就送的、有些可能是別人提供的套件、有些可能是自己設計的程式。這些東西在電腦儲存的絕對位置、相對位置或階層必須要讓 JVM 知道,這就是 classpath 的概念。JAVA的種子教師視classpath 為極重要的環節不斷突顯其重要性,卻不知道在這個問題上讓多少有意學習的人材拋棄JAVA。把命名方法的觀念跟資料夾綁在一起,雖然說不管懂不懂程式設計,都一定懂得檔案資料夾的管理。但是JAVA以資料夾路徑管理資源的做法,卻時常會引起不必要的麻煩。
絕對路徑?相對路徑?關鍵字?中文名稱、編碼方式?命名太長字打錯?空格?符號?數字?參數方法?
會出錯的事總會出錯
不會出錯的事也有出錯可能
任何錯誤的發生都可能跟 classpath 有關
如果你擔心它會發生,那麼它就一定會發生
Key Word
有一天魔王抓走公主 公主一直叫 魔王:「你盡管叫破喉嚨吧~沒有人會來救你的」 公主:「破喉嚨~破喉嚨」 沒有人:「公主~~我來救你」 魔王:「說曹操曹操到」 曹操:「魔王~~你叫我幹嘛!」 魔王:「哇勒~~~看到鬼! 」 鬼:「靠!被發現了」 靠:「胡說, 誰發現我了」 誰:「關我屁事」 魔王:「oh my God」 上帝:「誰叫我?」 誰:「沒有人叫你阿!」 沒有人:「我哪有?裝肖威。」 肖耶 :「誰在裝我?」 誰 :「又說我?你們找麻煩啊?」 麻煩 :「哪一個找我?」 哪一個:「找你?我才沒有……咦,這兒有好多人。」 好多人:「我才剛到耶……你是誰?」 哪一個:「我才不是誰。」 誰 :「他才不是我。」 公主 :「大家都是來救我的嗎?」 大家都:「我不是來救你的,是來看熱鬧的。」 熱鬧 :「我有什麼好看的?」 上帝 :「不關我的事,先走了。」 魔王 :「你回答一個問題再走,為什麼這麼多人救公主? 我這個魔王怎麼演下去?」 下去 :「你好好的魔王不幹,演我做什麼?」 公主 :「魔王若是沒有人演,我就可以走了。」 沒有人:「若是我演魔王,怎麼會讓你走……」 怎麼會:「我才不讓公主走,我要看熱鬧。」 熱鬧 :「看我幹什麼?」 什麼 :「你居然要『幹』我?」 熱鬧 :「你裝什麼可愛呀,噁心」 噁心 :「我哪有裝可愛呀」 可愛 :「可愛是裝不出來的」 裝不出來:「大家不要在吵了,我只想好好的看這齣戲」 這齣戲:「看我幹嘛??我臉上有長東西嗎? 」 長東西:「我又沒有在你臉上,幹麻那麼生氣」 魔王:「你們到底之不知道誰才是主角呀??搞不清楚狀況 不清楚狀況:「要搞我,我怕痛 」 痛:「你怕我幹嘛,我又不會吃你」 你:「最好是你敢吃我」 最好是你:「我哪敢吃你呀 」 公主:「沒有人在看這齣戲了,我想回家 沒有人:我要演魔王,哪有時間看這齣戲 」 這齣戲:「你少臭美,我也不想給你看 」 回家:「公主你為何想我,你是喜歡我嗎?? 喜歡我:「剛剛導演說如果公主一走要給我公主的角色 」 上帝 :「真的沒我的事了,我先閃啦.... 」 導演:「你不行走,剛剛曹操偷溜了,你要演他的角色 」 上帝:「Oh!Shit」 Shit:「Jesus....你採到我了」 哪一個:「你們到底演不演呀?? 」 不演:「誰要演我??我:誰要演我喔??他會演戲嗎??」 戲:「對呀..他什麼都不會吧..他只會打電動」 電動:「他沒打過我呀 」 我:「我在打逼呀,干我屁事 屁:你的事就是我的事,我們是好馬吉 」 好馬吉:「我等到愛睏了 睏:原來你愛的是我,我也是耶,我等這句話等好久了 」 這句話:「沒事幹麻等我,我要回家了」 公主:「等等我,我跟你一起走,我也要回家了」 我:「等我幹麻?」 你:「誰要跟你一起走 」 回家:「你要我幹什麼? 什麼:怎麼大家都在幹我? 」 大家都在:「我才剛來,誰幹你了?去~」 去:「哇~~你烏賴我」 魔王:「你八成是看到鬼了 」 鬼:「屁啦~~我從剛才開始就隱形到現在了 」 我:「誰跟你隱形了..去」 誰:「 ..為什麼是我跟他 」 他:「我剛睡醒~」 醒:「誰跟你一起睡阿.....」 誰跟你一起說:「沒有吧」看一下 JAVA 關鍵字
或許這不是一個很好的例子,年代久遠也不好笑了。但程式語言的邏輯觀念大概就是這樣,沒有什麼人工智慧或什麼大數據去分析你的程式碼指令。假設動詞相對於關鍵字,名詞若使用則會產生笑話。相對於電腦程式而言,所有的指令都不能是模稜兩可的。
關鍵字已經不需要死背了,但是命名方式無論JAVA或是其他資訊相關領域:
不要用數字開頭
不要有任何符號
名稱不要有中文
路徑不要有中文
沒有空白字元