回 OPENHOME 首頁
語言技術:Java Essence
你以為問題在這,其實問題不在這。你以為這很難,其實它不難!許多的問題,根源自你不了解 Java 的本質,許多的事,其實從安裝 JDK 開始就要知道。你急著完成 Hello! World!,因而忘了 Java 的本質。你急著飛翔,卻忘了如何起步!
不是裝好就沒事
若我是面試官,其中有道題目一定是給台沒裝 JDK 的電腦,請你寫個 Hello World 來執行看看!小心別出局了。。XD
重新認識 JDK
反正你應該寫過 Hello World 了,這次就別急著寫 Hello World 吧!
為什麼需要 JVM?
什麼是 JRE?
來安裝 JDK
Hello World?
反 思 "HelloWorld"
中提到:「小心,就因為它是這麼的簡單,您要小心控制...」
PATH 是什麼?
CLASSPATH 是什麼?
你執行的是哪個 JRE?
雞生蛋?蛋生雞?
降級你的類別檔案
有時需要囉嗦一下
在管理與偷懶之間
package 的出發點是分門別類地管理類別檔案,但管理又想要偷懶,才會有 import 的存在,然後來到了 JDK9,又有了 Java 模組平臺系統。
散落一地的類別檔案
如果你會用 Windows 檔案總管,為什麼你會不了解 package 呢?
使用 package 分類管理
使用 import 少打幾個字
不只管理類別檔案
package 還跟原始碼、類別檔甚至存取權限扯上關係。
package 與 sourcepath、classpath
JAR 檔中的原始檔、類別檔
package 與存取修飾
淺談 Java 模組平臺系統
JDK9 總於可以拼圖了…XD
JVM 與 module-path
編譯器與 module-path
編譯器與 module-source-path
深入模組化
真的要模組化了嗎?啊啊啊.....XD
具名模組、未具名模組
顯式模組、自動模組
一般模組、開放模組(模組與反射)
模組與 ServiceLoader
....
眼見不為憑
程式碼寫好了不代表一切,真正運行的程式碼,有些跟你想的不一樣。。XD
不偷工反加料
不要擔心偷工減料這種事情,你要想說是不是被體貼地多作了些事情。。Orz
那些字串二三事
Promotion 與 Cast
到底有哪些建構式
編譯器請你吃糖
少寫些程式碼,多嘗點甜頭,但別忘了沒糖吃前是怎麼運作的。。。XD
神奇的 foreach
那些角括號是什麼東西
可長可短的引數
要裝箱還是拆封
記憶中的那個東西
Java不用處理記憶體位址,因此隱藏了某些行為,創造了某些名詞,因此造成了某些模糊。
要怎麼參考呢
老實說,變數就是變數,基本型態與參考型態存放的東西都是一樣的。
我們沒什麼不同
Call by value?
陣列是物件
物件相等性
緊來倒垃圾
垃圾海海,有些代誌擱噯你了解。
哪些東西是垃圾?
物件終結者
GC 前、GC 後
X 檔案
一切都是為了彈性
類別、介面用的好,不用程式改到老。。。XD
類別與介面
定義類別是撰寫Java程式的起點,很多人卻錯在這個起點上。
封不封裝有差嗎?
繼承了什麼?
這是哪種東西?
到底哪裡抽象了?
虛有其表的介面
千面人
別再囉嗦了
犯錯並不可恥
程式寫到出錯是不被老闆允許的,看在你有創意的份上,再試一次吧!...XD
例外繼承架構
要抓還是要丟?
貼心還是造成麻煩?
堆疊追蹤
放諸四海皆準
了解千面人一致的行為,就無需在意它不同的面貌。
Collection
請排隊
InputStream、 OutputStream
Reader、Writer
泛型?列舉?
兩邊長角的東西
因為空泛,所以常被忽略。。XD
再來看看角括號
到此為止
我只收這種東西
長角的東西怎麼比
列出想作的事
想作的事,具體一點總是比較好!
沒有 enum 之前
有了 enum 之後
瞭解 java.lang.Enum 類別
進階 enum 運用
千頭萬緒
人多好辦事,但要小心手雜。。。XD
可執行物件
同步?
等待通知吧!
執行緒生命週期
停止執行緒
你是怎麼跑進來的
你也許不用了解反射(Reflection)機制的全部,但了解類別載入的方式卻是必要的。。。XD
Class 類別
一個 .class 在 JVM 中都會有個 Class 實例與之對應。
.class 與 Class
Class.forName()
從 Class 獲取資訊
動態生成物件
怎麼當鴨子
類別載入器
搞清楚類別載入器如何載入類別,ClassNotFoundException或 NoClassDefFoundError時就不會驚慌失措。。XD
簡介類別載入器
使用自己的類別載入器
那隻小老鼠
J2SE 5.0 開始支援 Annotation,目的在對程式碼作出說明以利分析工具使用,現已獲得廣泛應用。
Annotation
先來看看 Annotation 的基本使用與定義方式。
標準小老鼠
自訂小老鼠型態
編譯時期捕鼠
執行時期捕鼠
還有其它小老鼠
傾聽器 Annotation 實例
結合反射機制,Annotation 可以提供許多的資訊,減少設定負擔。
動態代理
使用小老鼠處理傾聽器
Lambda(以下
可 在 Google Play 取得電子書版本
)
JDK8 的 Lambda?那不就是匿名內部類別的語法蜜糖嗎?你這麼想就錯了 … XD
認識 Lambda/Closure
其他的語言中都有 Lambda,從這些語言中 Lambda 的運用先瞭解起 …
從 JavaScript 的函式物件談起
什 麼是 Closure?
Python 對 Lambda/Closure 的支援
從 Scala 中借鏡
Java 的稻草人提案
一 級函式與 Lambda 演算
JDK8 Lambda 語法
方 法參考與建構式參考
Java 開發者的函數式程式設計
函數式設計有許多觀念,即使是命令式設計也是適用 …
初 探函數式程式設計
代 數資料型態
List 處理模式
不 可變特性
JDK8 預設方法
惰 性
參考資料
Java 深度歷險(
非 山寨版
)
為 何 1.0 - 0.8 不是 0.2?