Java Tutorial: Learn Java in 06:00:00

自行出版
6
Free sample

 Java Tutorial 系列為六小時課程,目的是想讓對 Java 有興趣但想在短時間內上手的開發者,可以藉由六小時的課程,快速概覽 Java 的生態系。


六小時絕對不可能讓開發者完全學會某個技術,然後用該技術飛天鑽地,六小時目的在於介紹一個技術的輪廊,某些程度上要呈現該技術的優良部份(The good part),並期望在六小時課程結束之後,開發者可以有個出發點與方向,自行去參與更多的主題,研究更多的內容。

Java Tutorial 第一堂

  • Java Tutorial 第一堂(1)JDK 版本與實作
  • Java Tutorial 第一堂(2)準備課程環境
  • Java Tutorial 第一堂(3)哈囉!世界!
  • Java Tutorial 第一堂(4)套件、I/O 與例外

Java Tutorial 第二堂

  • Java Tutorial 第二堂(1)數值與字串型態
  • Java Tutorial 第二堂(2)容器與流程語法
  • Java Tutorial 第二堂(3)方法、類別與套件

Java Tutorial 第三堂

  • Java Tutorial 第三堂(1)IDE 與 Gradle
  • Java Tutorial 第三堂(2)使用 spring-jdbc 存取資料庫
  • Java Tutorial 第三堂(3)使用 Servlet、JSP 開發 Web 應用程式

Java Tutorial 第四堂

  • Java Tutorial 第四堂(1)使用 spring-webmvc 框架
  • Java Tutorial 第四堂(2)使用 spring 相依注入
  • Java Tutorial 第四堂(3)Hibernate 與 JPA

Java Tutorial 第五堂

  • Java Tutorial 第五堂(1)使用 spring-orm 整合 Hibernate
  • Java Tutorial 第五堂(2)JUnit 與 Gradle
  • Java Tutorial 第五堂(3)測試與重構 DvdController

Java Tutorial 第六堂

  • Java Tutorial 第六堂(1)REST 與 JAX-RS
  • Java Tutorial 第六堂(2)使用 Jersey 實作 MVC
  • Java Tutorial 第六堂(3)整合 Jersey/Spring/Hibernate

Read more

About the author

 目前為自由工作者,專長為技術寫作、翻譯與教育訓練。喜好研究程式語言、框架、社群,從中學習設計、典範及文化。閒暇之餘記錄所學,技術文件涵蓋 C/C++、Java、Ruby/Rails、Python、JavaScript、Haskell 等領域。

Read more

Reviews

4.2
6 total
Loading...

Additional Information

Publisher
自行出版
Read more
Published on
Apr 15, 2014
Read more
Pages
82
Read more
Language
Chinese (China)
Read more
Content Protection
This content is DRM free.
Read more
Read Aloud
Available on Android devices
Read more

Reading information

Smartphones and Tablets

Install the Google Play Books app for Android and iPad/iPhone. It syncs automatically with your account and allows you to read online or offline wherever you are.

Laptops and Computers

You can read books purchased on Google Play using your computer's web browser.

eReaders and other devices

To read on e-ink devices like the Sony eReader or Barnes & Noble Nook, you'll need to download a file and transfer it to your device. Please follow the detailed Help center instructions to transfer the files to supported eReaders.
林信良
關於 Python 2 Tutorial

因為我本身熟悉 Java,也熟悉 Java 生態體系,以一個熟悉某技術社群,想要瞭解 Python 社群生態系的角度,來瞭解並濃縮這門課程,應該能符合大會的要求,因為 Python 入門課程不單單只是希望介紹 Python 程式語言,更大程度上,希望能銜接至次日揭開的 PyCon Taiwan 2013 議程內容,讓參加過 Python 入門課程的人,能夠以較齊的水平,更進一步能參與年會議程。

這個構想獲得大會的同意,因此從去年 12 月開始,就陸續在有空的時候,瞭解 Python 生態系相關技術,而不僅僅是語言層面的東西,也因此最後課程的主旨設計為:

瞭解 Python 生態系(語言、工具、程式庫…)瞭解 Python 社群核心文化(撰碼風格、典範、文件、社群…)建立與 PyCon Taiwan 2013 的連結Python 化(Pythonic)

關於 Python 3 Tutorial

距離為 PyCon Taiwan 2013 設計入門課程,轉眼又經過了三年左右,這段期間也承蒙一些單位邀請,實際執行了幾次 Python 生態之旅,對於課程內容的調整,其實有些想法。

另外,這段期間,Python 3.x 持續在推進中,當中有了不少的改進,以 2015 年 9 月 13 日釋出的 Python 3.5 為例,與最初的 Python 3.0 相比,就多了許多引人注目的特性,像是預載了 `pip`、`pyvenv`,以及有利大型專案型態檢查的 Type Hint 等特性,而社群、業界甚至是教育界,近來聽到的 Python 3.x 需求,比之於 2008 年 Python 3.0 剛釋出的那時期,在接受度上顯然提昇了不少。

最近一次在準備 Python Tutorial 課程時,也發現到 Django 的版本已推進至 1.9,一些特性與 Python Tutorial 中的 Django 1.5 已有所不同,而且可直接運行於 Python 3.4 之上,官方網站的 Django Tutorial,也改寫為使用 Python 3.4 了。

這種種的一切,讓我感覺到為 Python Tutorial 做改寫的必要性,而且是基於 Python 3.x 之上改寫,因此,新的系列會是命名為〈Python 3 Tutorial〉。

雖然先前的〈Python Tutorial〉是以六小時的課程為目標,然而,當時是以投影片在 PyCon Taiwan 2013 中實行,由於後來改寫為中文之後增加了不少內容,實際被邀請至各單位中進行生態之旅時,都是以 12 個小時完成課程為目標,因此,新的〈Python 3 Tutorial〉,架構上會與〈Python Tutorial〉類似,不過,預計將分為 12 堂課來進行,以反映實際實行過的課程內容。

然而,基本上課程的主旨不變:

- 瞭解 Python 生態系(語言、工具、程式庫...)

- 瞭解 Python 社群核心文化(撰碼風格、典範、文件、社群…)

- Python 化(Pythonic)

可以看到,這次並沒有要建立與 PyCon Taiwan 的連結,而是以課程的角度來進行生態之旅,照例地,這個課程當然沒有時間鉅細靡遺地交代所有 Python 的細節,但會是個快速瞭解 Python 生態系的起點,讓你從這個起點開始,可以自行找到更多相關的資源。

因此,無論各單位是自行使用這份課程進行內部訓練,或者想接洽我來實現這門課程,請記得,這個課程不會讓學員上完後飛天鑽地,而是給予他們一個不錯的「起點」。


林信良
相對於 JavaScript、Python、Scala 等本身支援一級函式(First class function)的語言,Java 開發者對於一級函式是比較陌生的,因而在 2010 年 JCD 中的議程 Lambda/Closure - 從 JavaScript、Python、Scala 到 Java SE 7,我簡單地從 JavaScript、Python、Scala 等語言的一級函式特性開始介紹,分享了 Java 要加入 Lambda/Closure 會有什麼樣的考量。

Java 的 Lambda 語法後來歷經了數次的討論與改變,後來確定在 Java SE 8 中引入 Lambda,也引進了因應新語法而帶來的 API 新功能,因而我在 2012 年 Java TWO 議程 Java SE 8 的 Lambda 連鎖反應 中,從 Lambda 演算開始探討了 Lambda 的前世今生,以及會對 Java 帶來的新典範(Paradigm)與風格。

Java 引入的新典範其實有著函數式程式設計(Functional programming)的影子,想要善用 Java 引入的 Lambda 語法與新 API,先認識函數式程式設計會有非常大的幫助,因而在 2012 年 JCD 中,我於議程 Java 開發者的函數式程式設計 中探討了函數式程式設計,以及在 Java 中如何適當地運用函數式風格。

Java SE 8 確定於 2014 年 3 月發表,而我發現過去的這幾個議程可以整理成為系列文章,讓大家可以認識 Java 中 Lambda 的前世今生。除此之外,最後並加上了 JDK8 Functional API 的介紹,讓本書對 JDK8 Lambda 的介紹更為完整。

認識 Lambda/Closure

從 JavaScript 的函式物件談起什麼是 Closure?Python 對 Lambda/Closure 的支援從 Scala 中借鏡Java 的稻草人提案一級函式與 Lambda 演算JDK8 Lambda 語法方法參考與建構式參考

Java 開發者的函數式程式設計

初探函數式程式設計代數資料型態List 處理模式不可變特性JDK8 預設方法惰性
JDK8 Functional API
使用 Optional 取代 nullConsumer、Function、Predicate 與 Supplier使用 Stream 進行管線操作Stream 的 reduce 與 collectOptional 與 Stream 的 flatMapStream 與平行化

林信良
函數式程式設計(Functional programming)已經歷經時代的考驗,這年頭做為一個開發者,或多或少都有聽過函數式程式設計這個名詞,不少主流語言中,也已經或逐步出現函數式程式設計的基礎元素,就連 Java 這個保守的語言,在 Java 8 中,除了 Lambda 語法本身具有一級函式(First class function)概念之外,也突然出現了不少函數式概念的 API。

這類主流語言中,不少本身並不是以函數式為主要典範(Paradigm),為了讓函數式元素在其本身中不至於過於突兀,這類元素多多少少都有經過一些調整,這類調整是必要的,這也是函數式程式設計得以逐漸為開發者接受的主因之一,經過調整之後,才使得讓這類元素得以成為開發者使用的選項之一。

然而,也正因為經過調整,在試圖從這類語言中探討函數式概念時,總有種朦朦朧朧看不清楚真貌的感覺,那麼,來學習一門純函數式語言如何?這就成了我想撰寫 Haskell Tutorial 一開始的動機。

實際上,已經有不少 Haskell 的好書,像是《Learn You a Haskell for Great Good!》,線上觀看是免費的,如果想購買電子書或實體書也行,中文翻譯為《Haskell 趣學指南》;其他書籍像是《Real World Haskell》也有線上版、電子書、實體書的選擇。

自己想來寫寫看,無非就是想整理一下這幾年的心得,用自己的順序來構築一個路徑。

-- 目錄 --

# 關於 Haskell Tutorial
# 起步走
## 哈囉!世界!
## 一絲不苟的型態系統## 初探代數與函式

# 從函式開始 
## 這裏,那裏,到處都是函式
## 如喝水般自然的高階函式
## 從 List 處理初試函數式風格
## filter、map、fold 模式

# 從入門到進階
## 懶惰是美德之一
## 最代表宣告式的 List Comprehension
## 從 Tuple 初試模式比對
## case、let 、where 與 guard
## 從 lambda 到函式合成

# 深入資料型態
## 正式入門代數資料型態
## 減輕型態負擔的型態參數
## Typeclass 定義、實作與衍生
## Record 語法、Type 同義詞

# 模組
## 定義與使用模組
## 認識 Data.List 模組
## Data.Set 與 Data.Map 模組

# 銜接兩個世界
## 初探 IO 型態
## 來寫些迴圈吧!

# 錯誤處理
## Maybe 有無、Either 對錯
## Exception 的 catch 與 handle
## 拋出與自訂 Exception

# Functor、Applicative 到 Monad
## 可被映射盒中物的 Functor
## Functor 的 fmap 行為
## 可直接函式套用的 Applicative
## 活用 Applicative 的 pure 與 <*>
## 一個型態的 newtype
## 解決巢狀結構的 Monad
## do 區塊與 <- 綁定

# 發掘具有組合性的行為

林信良
函數式程式設計(Functional programming)已經歷經時代的考驗,這年頭做為一個開發者,或多或少都有聽過函數式程式設計這個名詞,不少主流語言中,也已經或逐步出現函數式程式設計的基礎元素,就連 Java 這個保守的語言,在 Java 8 中,除了 Lambda 語法本身具有一級函式(First class function)概念之外,也突然出現了不少函數式概念的 API。

這類主流語言中,不少本身並不是以函數式為主要典範(Paradigm),為了讓函數式元素在其本身中不至於過於突兀,這類元素多多少少都有經過一些調整,這類調整是必要的,這也是函數式程式設計得以逐漸為開發者接受的主因之一,經過調整之後,才使得讓這類元素得以成為開發者使用的選項之一。

然而,也正因為經過調整,在試圖從這類語言中探討函數式概念時,總有種朦朦朧朧看不清楚真貌的感覺,那麼,來學習一門純函數式語言如何?這就成了我想撰寫 Haskell Tutorial 一開始的動機。

實際上,已經有不少 Haskell 的好書,像是《Learn You a Haskell for Great Good!》,線上觀看是免費的,如果想購買電子書或實體書也行,中文翻譯為《Haskell 趣學指南》;其他書籍像是《Real World Haskell》也有線上版、電子書、實體書的選擇。

自己想來寫寫看,無非就是想整理一下這幾年的心得,用自己的順序來構築一個路徑。

-- 目錄 --

# 關於 Haskell Tutorial
# 起步走
## 哈囉!世界!
## 一絲不苟的型態系統## 初探代數與函式

# 從函式開始 
## 這裏,那裏,到處都是函式
## 如喝水般自然的高階函式
## 從 List 處理初試函數式風格
## filter、map、fold 模式

# 從入門到進階
## 懶惰是美德之一
## 最代表宣告式的 List Comprehension
## 從 Tuple 初試模式比對
## case、let 、where 與 guard
## 從 lambda 到函式合成

# 深入資料型態
## 正式入門代數資料型態
## 減輕型態負擔的型態參數
## Typeclass 定義、實作與衍生
## Record 語法、Type 同義詞

# 模組
## 定義與使用模組
## 認識 Data.List 模組
## Data.Set 與 Data.Map 模組

# 銜接兩個世界
## 初探 IO 型態
## 來寫些迴圈吧!

# 錯誤處理
## Maybe 有無、Either 對錯
## Exception 的 catch 與 handle
## 拋出與自訂 Exception

# Functor、Applicative 到 Monad
## 可被映射盒中物的 Functor
## Functor 的 fmap 行為
## 可直接函式套用的 Applicative
## 活用 Applicative 的 pure 與 <*>
## 一個型態的 newtype
## 解決巢狀結構的 Monad
## do 區塊與 <- 綁定

# 發掘具有組合性的行為

林信良
相對於 JavaScript、Python、Scala 等本身支援一級函式(First class function)的語言,Java 開發者對於一級函式是比較陌生的,因而在 2010 年 JCD 中的議程 Lambda/Closure - 從 JavaScript、Python、Scala 到 Java SE 7,我簡單地從 JavaScript、Python、Scala 等語言的一級函式特性開始介紹,分享了 Java 要加入 Lambda/Closure 會有什麼樣的考量。

Java 的 Lambda 語法後來歷經了數次的討論與改變,後來確定在 Java SE 8 中引入 Lambda,也引進了因應新語法而帶來的 API 新功能,因而我在 2012 年 Java TWO 議程 Java SE 8 的 Lambda 連鎖反應 中,從 Lambda 演算開始探討了 Lambda 的前世今生,以及會對 Java 帶來的新典範(Paradigm)與風格。

Java 引入的新典範其實有著函數式程式設計(Functional programming)的影子,想要善用 Java 引入的 Lambda 語法與新 API,先認識函數式程式設計會有非常大的幫助,因而在 2012 年 JCD 中,我於議程 Java 開發者的函數式程式設計 中探討了函數式程式設計,以及在 Java 中如何適當地運用函數式風格。

Java SE 8 確定於 2014 年 3 月發表,而我發現過去的這幾個議程可以整理成為系列文章,讓大家可以認識 Java 中 Lambda 的前世今生。除此之外,最後並加上了 JDK8 Functional API 的介紹,讓本書對 JDK8 Lambda 的介紹更為完整。

認識 Lambda/Closure

從 JavaScript 的函式物件談起什麼是 Closure?Python 對 Lambda/Closure 的支援從 Scala 中借鏡Java 的稻草人提案一級函式與 Lambda 演算JDK8 Lambda 語法方法參考與建構式參考

Java 開發者的函數式程式設計

初探函數式程式設計代數資料型態List 處理模式不可變特性JDK8 預設方法惰性
JDK8 Functional API
使用 Optional 取代 nullConsumer、Function、Predicate 與 Supplier使用 Stream 進行管線操作Stream 的 reduce 與 collectOptional 與 Stream 的 flatMapStream 與平行化

林信良
關於 Python 2 Tutorial

因為我本身熟悉 Java,也熟悉 Java 生態體系,以一個熟悉某技術社群,想要瞭解 Python 社群生態系的角度,來瞭解並濃縮這門課程,應該能符合大會的要求,因為 Python 入門課程不單單只是希望介紹 Python 程式語言,更大程度上,希望能銜接至次日揭開的 PyCon Taiwan 2013 議程內容,讓參加過 Python 入門課程的人,能夠以較齊的水平,更進一步能參與年會議程。

這個構想獲得大會的同意,因此從去年 12 月開始,就陸續在有空的時候,瞭解 Python 生態系相關技術,而不僅僅是語言層面的東西,也因此最後課程的主旨設計為:

瞭解 Python 生態系(語言、工具、程式庫…)瞭解 Python 社群核心文化(撰碼風格、典範、文件、社群…)建立與 PyCon Taiwan 2013 的連結Python 化(Pythonic)

關於 Python 3 Tutorial

距離為 PyCon Taiwan 2013 設計入門課程,轉眼又經過了三年左右,這段期間也承蒙一些單位邀請,實際執行了幾次 Python 生態之旅,對於課程內容的調整,其實有些想法。

另外,這段期間,Python 3.x 持續在推進中,當中有了不少的改進,以 2015 年 9 月 13 日釋出的 Python 3.5 為例,與最初的 Python 3.0 相比,就多了許多引人注目的特性,像是預載了 `pip`、`pyvenv`,以及有利大型專案型態檢查的 Type Hint 等特性,而社群、業界甚至是教育界,近來聽到的 Python 3.x 需求,比之於 2008 年 Python 3.0 剛釋出的那時期,在接受度上顯然提昇了不少。

最近一次在準備 Python Tutorial 課程時,也發現到 Django 的版本已推進至 1.9,一些特性與 Python Tutorial 中的 Django 1.5 已有所不同,而且可直接運行於 Python 3.4 之上,官方網站的 Django Tutorial,也改寫為使用 Python 3.4 了。

這種種的一切,讓我感覺到為 Python Tutorial 做改寫的必要性,而且是基於 Python 3.x 之上改寫,因此,新的系列會是命名為〈Python 3 Tutorial〉。

雖然先前的〈Python Tutorial〉是以六小時的課程為目標,然而,當時是以投影片在 PyCon Taiwan 2013 中實行,由於後來改寫為中文之後增加了不少內容,實際被邀請至各單位中進行生態之旅時,都是以 12 個小時完成課程為目標,因此,新的〈Python 3 Tutorial〉,架構上會與〈Python Tutorial〉類似,不過,預計將分為 12 堂課來進行,以反映實際實行過的課程內容。

然而,基本上課程的主旨不變:

- 瞭解 Python 生態系(語言、工具、程式庫...)

- 瞭解 Python 社群核心文化(撰碼風格、典範、文件、社群…)

- Python 化(Pythonic)

可以看到,這次並沒有要建立與 PyCon Taiwan 的連結,而是以課程的角度來進行生態之旅,照例地,這個課程當然沒有時間鉅細靡遺地交代所有 Python 的細節,但會是個快速瞭解 Python 生態系的起點,讓你從這個起點開始,可以自行找到更多相關的資源。

因此,無論各單位是自行使用這份課程進行內部訓練,或者想接洽我來實現這門課程,請記得,這個課程不會讓學員上完後飛天鑽地,而是給予他們一個不錯的「起點」。


©2017 GoogleSite Terms of ServicePrivacyDevelopersArtistsAbout Google
By purchasing this item, you are transacting with Google Payments and agreeing to the Google Payments Terms of Service and Privacy Notice.