Submit Search
Upload
ラムダ式がjava8で導入された理由
•
5 likes
•
3,912 views
Kodai Takashima
Follow
2013/08/09に渋谷で行われた勉強会(http://atnd.org/events/41192)の資料です。
Read less
Read more
Technology
News & Politics
Report
Share
Report
Share
1 of 24
Download now
Download to read offline
Recommended
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Yuuki Fukuda
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
Kazuho Oku
SageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
SageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
tomohiro kato
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
Shu Sugimoto
Recommended
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Yuuki Fukuda
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
Kazuho Oku
SageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
SageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
tomohiro kato
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
Shu Sugimoto
Introducing C# in AWS Lambda
Introducing C# in AWS Lambda
Atsushi Fukui
DynamoDB Streamを使ったリアルタイム分析
DynamoDB Streamを使ったリアルタイム分析
ShinsukeYokota
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Rescale Japan株式会社
Java8から始める関数型プログラミング
Java8から始める関数型プログラミング
stylefreeslide
HDCLT
HDCLT
Daigaku Ando
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
Makoto Sugishita
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
Yuichi Sakuraba
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
日本Javaユーザーグループ
20130313 OSCA Hadoopセミナー
20130313 OSCA Hadoopセミナー
Ichiro Fukuda
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
MicroAd, Inc.(Engineer)
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
Jslug2 nagoya-shibata
Jslug2 nagoya-shibata
Naoki Shibata
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
真吾 吉田
なにわテック20180127
なにわテック20180127
Natsutani Minoru
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
samemoon
CloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみよう
REALTECHJP
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2
yo0824
.NET Core diagnostics tips
.NET Core diagnostics tips
Yusuke Fujiwara
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
More Related Content
Similar to ラムダ式がjava8で導入された理由
Introducing C# in AWS Lambda
Introducing C# in AWS Lambda
Atsushi Fukui
DynamoDB Streamを使ったリアルタイム分析
DynamoDB Streamを使ったリアルタイム分析
ShinsukeYokota
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Rescale Japan株式会社
Java8から始める関数型プログラミング
Java8から始める関数型プログラミング
stylefreeslide
HDCLT
HDCLT
Daigaku Ando
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
Makoto Sugishita
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
Yuichi Sakuraba
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
日本Javaユーザーグループ
20130313 OSCA Hadoopセミナー
20130313 OSCA Hadoopセミナー
Ichiro Fukuda
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
MicroAd, Inc.(Engineer)
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
Jslug2 nagoya-shibata
Jslug2 nagoya-shibata
Naoki Shibata
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
真吾 吉田
なにわテック20180127
なにわテック20180127
Natsutani Minoru
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
samemoon
CloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみよう
REALTECHJP
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2
yo0824
.NET Core diagnostics tips
.NET Core diagnostics tips
Yusuke Fujiwara
Similar to ラムダ式がjava8で導入された理由
(20)
Introducing C# in AWS Lambda
Introducing C# in AWS Lambda
DynamoDB Streamを使ったリアルタイム分析
DynamoDB Streamを使ったリアルタイム分析
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Java8から始める関数型プログラミング
Java8から始める関数型プログラミング
HDCLT
HDCLT
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
20130313 OSCA Hadoopセミナー
20130313 OSCA Hadoopセミナー
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
サーバーレスの今とこれから
サーバーレスの今とこれから
Jslug2 nagoya-shibata
Jslug2 nagoya-shibata
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
なにわテック20180127
なにわテック20180127
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
CloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみよう
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2
.NET Core diagnostics tips
.NET Core diagnostics tips
Recently uploaded
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Recently uploaded
(14)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
ラムダ式がjava8で導入された理由
1.
ラムダ式がjava8で導入された理由 ~ラムダ式とマルチコアプロセッサ~ 高嶋航大
2.
自己紹介 ● 出身は三重 ● 今はサイバーエージェント ●
趣味は自作PC、ゲーム、アニメ、etc...
3.
発表の流れ ● Lambda式とは ● なぜJavaにLambda式が必要になったのか ●
実例 ● まとめ
4.
java8の特徴 ● 新しい Date
& Time API ● 新しいJavaScriptエンジン(Nashorm) ● モジュール化に向けた準備 ● 暗号化のパフォーマンス向上 ● etc...
5.
java8の特徴 Lambda式を追加
6.
Lambda式 ● ラムダ計算(関数の定義と実行を抽象化した計 算体系)を基礎にした記法 ○ 匿名メソッドをより短く記述するための構文
7.
pointList.forEach(new Consumer() { public
void accept(Point p) { p.move(p.y + 1, p.x); } }); pointList.forEach(p -> p.move(p.y + 1, p.x)); 同じ挙動! 複数の点(pointListの要素)を Y軸方向に1移動する
8.
Lambda式 ● ラムダ計算(関数の定義と実行を抽象化した計 算体系)を基礎にした記法 ○ 匿名メソッドをより短く記述するための構文 ●
主に関数型言語で使用可能 ○ Lisp ○ Scala ○ C# ○ Java
9.
● Javaにとって最も差し迫った理由 ○ コレクションの処理を 複数のスレッドで分散処理すること なぜ、javaに Lambda式が必要なのか
10.
● Javaにとって最も差し迫った理由 ○ コレクションの処理を 複数のスレッドで分散処理すること なぜ、javaに Lambda式が必要なのか intel
Corei7 3930K 6コア(12スレッド) AMD Opteron 6272 16コア intel Atom Z2760 2コア(4スレッド)
11.
java7以前でも 並列処理は可能だよね? ● 今まで: 上手く並列処理を行う責任を持つのは 我々(プログラマ)の役目 ● これから: 上手く並列処理を行う責任を持つのは Java(コレクション)の役目
12.
つまりは ● 並列処理を前提とした処理を とても気軽に書くことが出来る! PCのスペックをフルに使う プログラムを簡単に組める!
13.
実際にやってみた
14.
java7以前 public long waitWithoutLambda(List<Integer>
list) { long start = System.currentTimeMillis(); list.forEach(new Consumer(){ @Override public void accept(Object x) { System.out.println((Integer)x + ":" + (System.currentTimeMillis() - start)); try{Thread.sleep(1000);}catch (InterruptedException e){}; } }); long end = System.currentTimeMillis(); return end - start; }
15.
public long waitWithoutLambda(List<Integer>
list) { long start = System.currentTimeMillis(); list.forEach(new Consumer(){ @Override public void accept(Object x) { System.out.println((Integer)x + ":" + (System.currentTimeMillis() - start)); try{Thread.sleep(1000);}catch (InterruptedException e){}; } }); long end = System.currentTimeMillis(); return end - start; } java7以前 ----- waitWithoutLambda ----- 0:2 1:1002 2:2002 3:3002 4:4002 5:5002 6:6002 7:7002 8:8002 9:9002 10002ms
16.
Lambda式を使って… public long waitWithLambda(List<Integer>
list){ long start = System.currentTimeMillis(); list.forEach(x -> { System.out.println(x + ":" + (System.currentTimeMillis() - start)); try {Thread.sleep(1000);} catch (InterruptedException e) {}; }); long end = System.currentTimeMillis(); return end - start; }
17.
Lambda式を使って… public long waitWithLambda(List<Integer>
list){ long start = System.currentTimeMillis(); list.forEach(x -> { System.out.println(x + ":" + (System.currentTimeMillis() - start)); try {Thread.sleep(1000);} catch (InterruptedException e) {}; }); long end = System.currentTimeMillis(); return end - start; } ----- waitWithLambda ----- 0:76 1:1076 2:2076 3:3076 4:4076 5:5076 6:6076 7:7076 8:8076 9:9076 10076ms
18.
あれ? 並列処理は!?
19.
実は ● ラムダ式を使っただけでは 並列処理にはならない ● コレクションが持つ parallelStream()を使うことで 並列化に必要なStreamが得られる
20.
parallelStreamを使って public long waitWithLambdaAndParallelStream(List<Integer>
list) { long start = System.currentTimeMillis(); list.parallelStream().forEach(x -> { System.out.println(x + ":" + (System.currentTimeMillis() - start)); try{Thread.sleep(1000);}catch (InterruptedException e){}; }); long end = System.currentTimeMillis(); return end - start; }
21.
parallelStreamを使って public long waitWithLambdaAndParallelStream(List<Integer>
list) { long start = System.currentTimeMillis(); list.parallelStream().forEach(x -> { System.out.println(x + ":" + (System.currentTimeMillis() - start)); try{Thread.sleep(1000);}catch (InterruptedException e){}; }); long end = System.currentTimeMillis(); return end - start; } ----- waitWithLambdaAndParallelStream ----- 6:12 5:13 7:13 1:13 2:13 8:13 3:13 4:13 0:1012 9:1013 2013ms
22.
使用上の注意 ● 並列処理の際の問題には気をつけて (ちゃんとスレッドセーフになってますか?) ● 並列化したからと言って、 全部が全部早くなるわけではない ●
例外を投げる場合はRuntimeException を用いるのが良さそう ○ 並列でやっていることをお忘れなく
23.
まとめ ● java8にラムダ式が導入される ● 簡単に並列処理を使うことが出来るようになる! ●
PCの力(コア)をフルに使える! この夏、僕のPCが熱い!!! (なお、正式リリースは2014/03/18の模様…)
24.
参考資料 ● Java8新機能 ラムダ式とデフォルトメソッドの導入理由 ○
http://blog.yujing.jp/entry/2013/06/29/170337 ● JDK8 Features ○ http://openjdk.java.net/projects/jdk8/features ● C# 3.0入門 > 第1回 ラムダ式 ○ http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_01/csharp30_01_02.html
Download now