Enviar pesquisa
Carregar
Java 8 與 retrolambda
•
31 gostaram
•
4,958 visualizações
Justin Lin
Seguir
2015放視大賞-工作坊-Java 8 與 retrolambda
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 45
Baixar agora
Baixar para ler offline
Recomendados
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
Java 開發者的函數式程式設計
Java 開發者的函數式程式設計
Justin Lin
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
javatwo2011
Scala function-and-closures
Scala function-and-closures
wang hongjiang
functional-scala
functional-scala
wang hongjiang
Recomendados
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
Java 開發者的函數式程式設計
Java 開發者的函數式程式設計
Justin Lin
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
javatwo2011
Scala function-and-closures
Scala function-and-closures
wang hongjiang
functional-scala
functional-scala
wang hongjiang
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
Execution
Execution
Angel Boy
給初學者的Spark教學
給初學者的Spark教學
Chen-en Lu
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
Ecmascript
Ecmascript
jay li
Javascript share
Javascript share
Xu Mac
Nashorn on JDK 8 (ADC2013)
Nashorn on JDK 8 (ADC2013)
Kris Mok
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
Kris Mok
From Java Stream to Java DataFrame
From Java Stream to Java DataFrame
Chen-en Lu
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
資料永續與交換
資料永續與交換
Justin Lin
Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)
ChengHui Weng
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
Java8 lambda
Java8 lambda
koji lin
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
jay li
5, initialization & cleanup
5, initialization & cleanup
ted-xu
Reactive X 响应式编程
Reactive X 响应式编程
Jun Liu
ES5 introduction
ES5 introduction
otakustay
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
hugo
Retrive&rank
Retrive&rank
Joseph Chang
Mais conteúdo relacionado
Mais procurados
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
Execution
Execution
Angel Boy
給初學者的Spark教學
給初學者的Spark教學
Chen-en Lu
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
Ecmascript
Ecmascript
jay li
Javascript share
Javascript share
Xu Mac
Nashorn on JDK 8 (ADC2013)
Nashorn on JDK 8 (ADC2013)
Kris Mok
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
Kris Mok
From Java Stream to Java DataFrame
From Java Stream to Java DataFrame
Chen-en Lu
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
資料永續與交換
資料永續與交換
Justin Lin
Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)
ChengHui Weng
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
Java8 lambda
Java8 lambda
koji lin
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
jay li
5, initialization & cleanup
5, initialization & cleanup
ted-xu
Reactive X 响应式编程
Reactive X 响应式编程
Jun Liu
ES5 introduction
ES5 introduction
otakustay
Mais procurados
(20)
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Execution
Execution
給初學者的Spark教學
給初學者的Spark教學
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Ecmascript
Ecmascript
Javascript share
Javascript share
Nashorn on JDK 8 (ADC2013)
Nashorn on JDK 8 (ADC2013)
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
From Java Stream to Java DataFrame
From Java Stream to Java DataFrame
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
資料永續與交換
資料永續與交換
Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)
Ecma script edition5-小试
Ecma script edition5-小试
Java8 lambda
Java8 lambda
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
5, initialization & cleanup
5, initialization & cleanup
Reactive X 响应式编程
Reactive X 响应式编程
ES5 introduction
ES5 introduction
Semelhante a Java 8 與 retrolambda
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
hugo
Retrive&rank
Retrive&rank
Joseph Chang
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
Wen-Tien Chang
Hadoop学习总结
Hadoop学习总结
ordinary2012
Ali-tomcat
Ali-tomcat
wang hongjiang
Rpc原理与实现
Rpc原理与实现
wavefly
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
tidesq
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
Angel Boy
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
twMVC
Weibo lamp improvements
Weibo lamp improvements
Xinchen Hui
Metro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' View
Eric ShangKuan
in in der 響應式編程
in in der 響應式編程
景隆 張
Nosql及其主要产品简介
Nosql及其主要产品简介
振林 谭
Tcpcopy 阿里技术沙龙
Tcpcopy 阿里技术沙龙
drewz lin
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
线程与并发
线程与并发
Tony Deng
Introduction to C++ over CLI
Introduction to C++ over CLI
建興 王
用 Ruby 開發 IoT 應用 - 以 RubyConf.tw 打卡系統為例
用 Ruby 開發 IoT 應用 - 以 RubyConf.tw 打卡系統為例
亮齊 曾
Thrift
Thrift
jiaqing zheng
About Thrift
About Thrift
jiaqing zheng
Semelhante a Java 8 與 retrolambda
(20)
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
Retrive&rank
Retrive&rank
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
Hadoop学习总结
Hadoop学习总结
Ali-tomcat
Ali-tomcat
Rpc原理与实现
Rpc原理与实现
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
Weibo lamp improvements
Weibo lamp improvements
Metro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' View
in in der 響應式編程
in in der 響應式編程
Nosql及其主要产品简介
Nosql及其主要产品简介
Tcpcopy 阿里技术沙龙
Tcpcopy 阿里技术沙龙
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
线程与并发
线程与并发
Introduction to C++ over CLI
Introduction to C++ over CLI
用 Ruby 開發 IoT 應用 - 以 RubyConf.tw 打卡系統為例
用 Ruby 開發 IoT 應用 - 以 RubyConf.tw 打卡系統為例
Thrift
Thrift
About Thrift
About Thrift
Mais de Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Ch04 會話管理
Ch04 會話管理
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
11. 常用內建模組
11. 常用內建模組
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
9. 資料結構
9. 資料結構
Justin Lin
Mais de Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch09 整合資料庫
Ch09 整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch03 請求與回應
Ch03 請求與回應
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
14. 進階主題
14. 進階主題
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
10. 資料永續與交換
10. 資料永續與交換
9. 資料結構
9. 資料結構
Java 8 與 retrolambda
1.
Java 8 與
retrolambda Justin Lin caterpillar@openhome.cc http://openhome.cc
2.
議程 • 從《重構》開始 • 使用
Java 8 Lambda • Retrolambda • 繼續重構 2 @ L -> :: 8765
3.
從《重構》開始 3
4.
4
5.
5 租金計算
6.
6 點數計算 租金計算
7.
7 幾件事? 點數計算
8.
8 點數加總 租借描述 租金加總
9.
9 點數加總 租金加總
10.
使用 Java 8
Lambda 10
11.
11 迭代 Rental 加總租金 取得租金 三件事?
12.
三件事? 12 迭代 Rental 加總點數 取得點數
13.
13 Lambda expressionStream API
14.
Lambda expression? 14 ->
15.
Functional interface 15 Code as
data
16.
• Method reference 16 ::
17.
17
18.
Stream API? 18
19.
• Stream 從來源取出資料,來源可以是
… – Collection, 例如 collection.stream() – 陣列, 例如 Arrays.stream(…) – 產生器, 例如 IntStream.generate(…) – I/O, 例如 Files.lines(…) – … • Stream 上有 intermediate operation 與 terminal operation。 19
20.
20 intermediate operation terminal operation
21.
21 迭代 Rental 串接各筆描述 該筆租借描述 Reduce?
22.
Reduce • sum 就是一種
reduce 操作 22
23.
Reduce • 遞迴 23
24.
Reduce 24 串接各筆描述 各筆租借描述
25.
25
26.
26
27.
27 好 Lambda …
不用嗎? ′o‵ 可是良葛 … ′ _` 我們上不去了 … ~~′ _`~~
28.
Retrolambda 28 https://github.com/orfjackal/retrolambda
29.
• 改寫 bytecode
為可運行於 Java 7, 6, 5 • 目前支援 … – Lambda expressions – Method references – Try-with-resources statements • 部份支援 … – Default methods – Static methods on interfaces • 採用方式 … – Command Line Application(結合 Ant) – Maven Plugin – Gradle Plugin 29
30.
Command Line Application •
從 Maven Centrol 下載 retrolambda.jar 30
31.
31 Java 8 編譯 Retrolambda Java
7 執行
32.
Ant 32 ……
33.
Gradle • Gradle Retrolambda
Plugin – JDK8 – Gradle 2.x 33
34.
34 Optional
35.
35
36.
36 繼續重構
37.
Java 8 API? •
LambdaJ • Linq4j • guava-libraries • Joda-Time • ThreeTen • streamsupport 37 r Functional API Stream API New Date & Time API
38.
Java 8 API? •
streamsupport 替代 java.util.stream 38 r
39.
39
40.
40
41.
41
42.
• Commit History 42
43.
想瞭解更多? • Java Lambda
Tutorial • 解析 JDK8 Functional API • Java 8 Patterns • 認識 Gradle • Retrolambda in Android • Java 8 Friday: Let’s Deprecate Those Legacy Libs 43
44.
44 Justin Lin caterpillar@openhome.cc http://openhome.cc
45.
The others? 45
Baixar agora