Lambdaの最新情報について話していただけました。僕も以前調べていました。Futurehttp://jyukutyo.hatenablog.com/entry/20111121/1321891230この頃から、変わった部分ももちろんあるので、それについてまとめてみます。正直に言って、さくらばさんのブログを読んだほうが詳しいし、正確です。遅延評価http://www.javainthebox.com/2012/12/java-advent-calendar-1-project-lambda.htmlここでは僕の備忘録代わりにまとめます。8のその他の新機能はついてません。UnsupportedOperationException("remove");}となります。2012/12/03現在のものでは、まだ以前の位置のままです。2)という風にバルク操作を呼び出せていました。今はこれだとコンパイルエラーになります。Streamの概念が取り入れられています。Scalaにあるものと同様のものです。StreamとはStreamとはイテレータに似て、空になるまで値を引き出すことができます。実際に次の要素を要求しない限り、操作が行われることはありません。遅延を実現するためのものです。これにより無限のリストを扱うことができます。2)のようにStreamオブジェクトを取得して呼び出します。複数の処理を連続して呼び出せます。n)ただし、map()メソッドは遅延するため、map()メソッドを呼び出した時に処理が実行されるません。実際には即時評価されるメソッドであるreduce()メソッドを呼び出した時にmap()引数として渡していた処理が実行されます。Iterablesクラスもともと、Listでmap()メソッドを呼び出せていたのは、java.util.Iterablesクラスを継承していたからでした。ListはIterablesクラスを継承していません。Listでmap()メソッドを呼び出せていたのは、Iterableインタフェースにmap()メソッドのデフォルト実装があり、そこでユーティリティクラスであるjava.util.Iterablesクラスのメソッドに委譲していました。今はIterableインタフェースからバルク操作メソッドは取り除かれています。Iterablesクラスはほとんどコメントアウトされていて、残っているのはcount()メソッドだけです。Method)のシンタックスシュガーなわけで、今まではインナークラスのclassファイルが生成されていました。今のバージョンでは、ラムダ式の処理をinvokedynamicを利用して呼び出します。#0:lambda:()Ljava/util/functions/Mapper;うーん、でもどうしてinvokedynamicを使うんだろう、と疑問に思いました。すばらしいエントリがありました。式は匿名クラスのインスタンス生成と同じバイトコードを生成します。これには性能面の欠点があります。式をたくさん使うとクラスロードが大変になります。...そしてinvokedynamicを使うことで、初回実行時に呼び出されるブートストラップメソッドが、匿名クラス方式か、MethodHandleの呼び出しにするのかを選択できます。invokedynamicは呼び出す処理を実行時に変えられるからです。MethodHandleは合成したり部分適用したりできるんですが、匿名クラスに比べれば呼び出しは遅くなります。Constantsというものがあります。...2016-01-31GroovyでのinvokedynamicTwitterでのやり取りでGroovyのinvokedynamicの話題が出たので...2015-12-25JDK9では文字列の連結にinvokedynamicが使われることになりそうだJEPにあり、JDK9のターゲットになっている。関西Javaエンジニアの会の代表/発起人です。JVMやJavaについて書きます。(51)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。