タグ

java8とJava8に関するatm_09_tdのブックマーク (132)

  • Java SE 8 Fukuoka

    Java SE 8 Fukuoka 1. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.1 祝 Java SE 8 正式リリース Yoshio Terada Java Evangelist http://yoshio3.com Twitter : @yoshioterada 2. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.2 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです 。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこ とはできません。以下の事項は、マテリアルやコード、機能を提供することをコミッ トメント(確約)するものではないため、購買決定を行う際の判断材料

    Java SE 8 Fukuoka
  • 第六回渋谷Java Java8のJVM監視を考える

    9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation

    第六回渋谷Java Java8のJVM監視を考える
  • 問い:Java 8のStream APIは業務でどんな時に使うの? 答え:あなたがfor文使いたい時 - ブログなんだよもん

    ※ サンプルがJDK7までとJDK8までで意味が変わっていてわかりにくいという指摘があったので、少し直しました。 ※ boxedを使う書き方だと無駄なAutoboxingが走るとの指摘を頂きましたのでmapToObjを利用するように変えました。 Java8の目玉機能の一つにStream APIがあります。 目玉機能だけあって、先日のJava Day Tokyo 2014を含めて色んな所で発表やブログの記事が公開されているので、どんなものかを知ってる人は多いと思います。 Stream APIといえば「".parallel()"と書くだけで並列化してスピードアップ出来る!」という魅惑的なキーワードで紹介されることが多いので、並列化のための仕様だと勘違いされそうですが、そうではありません。 ※ もちろんそういった記事の中をちゃんと読めばそう単純な話じゃないことも分かります。 むしろ、並列化に関し

    問い:Java 8のStream APIは業務でどんな時に使うの? 答え:あなたがfor文使いたい時 - ブログなんだよもん
  • JavaSE8リリース記念!CGに載っていないマイナーなIncompatibilityを紹介してみる - きつねとJava!

    さてさて,JavaSE8がリリースされてから1週間以上経ちましたね. 多くの企業がJavaSE8への移行を検討しているかと思います. そういう企業が移行の際に気に掛けるものが非互換性(Incompatibilities)ではないでしょうか. Javaは互換性を第一に考えているものの少なからず非互換性があります. そして,それらはCompatibility Guide for JDK 8(以下,CG)としてまとめられています. 今回はそのCGに載っていないマイナーな非互換性を一つ紹介したいと思います.*1 ちなみに,この非互換性はjavacのコードベース自身にも影響があったという少し面白い逸話があります^^; フォーマットはCGのパロディです. JDK8とJDK7との非互換性 このセクションではjavacやHotSpot,Java SE APIのJDK8の非互換性について述べます. いくつか

    JavaSE8リリース記念!CGに載っていないマイナーなIncompatibilityを紹介してみる - きつねとJava!
  • 「Java 8はラムダ式でここまで変わる」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    連載では、今までJavaの経験はあっても「ラムダ式は、まだ知らない」という人を対象にラムダ式について解説していきます Java 8はラムダ式でここまで変わる(終): Stream APIの特殊なメソッドとメソッド参照/コンストラクター参照 連載では、今までJavaの経験はあっても「ラムダ式は、まだ知らない」という人を対象にラムダ式について解説していきます。最終回は、Stream APIの特殊なメソッド3つと、ラムダ式と関係が深いメソッド参照やコンストラクター参照についてコード例を交えて解説。(2014/7/28) Java 8はラムダ式でここまで変わる(4): Stream APIの主なメソッドと処理結果のOptionalクラスの使い方 連載では、今までJavaの経験はあっても「ラムダ式は、まだ知らない」という人を対象にラムダ式について解説していきます。今回は、Java 8の新機能S

  • forEach書いたら負け、for文禁止 - torutkのブログ

    日は日Javaユーザーグループ(JJUG)主催のクロスコミュニティカンファレンス2014春に参加してきました。今日の日記は、参加内容のまとめではなく、参加して得たことやそれをきっかけに考えたことなどをだらだらと書き連ねます。 Java SE 8では、forEach書いたら負け、for文禁止 日記のタイトルは、午前のセッション「K-1 詳説 Java SE 8 – CCC Edition」で出た話題です。手続き的なロジックを書いて、ネストが深く制御構造が複雑になってしまう人向けにはJava SE 8で導入されたラムダ式とStream APIを使って、内部イテレータと関数型プログラミングのエッセンスを取り入れた書き方をするといいよ、という話から出た言葉です。 実は昨日開催したJava読書会(「Java 8 Lambdas」を読む会)でも、「for文は禁止だ!」という話題が出てました。for

    forEach書いたら負け、for文禁止 - torutkのブログ
  • Java8でListとかMapに追加されたメソッドをいくつか試してみる - Qiita

    1.8.0 Collection removeIf(Predicate<? super E> filter) package java8; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = Arrays.asList("hoge", "fuga", "piyo"); System.out.println("before : " + list); list.removeIf(str -> str.contains("g")); System.out.println("after : " + list); } } before : [hoge, fuga, piyo] Exception

    Java8でListとかMapに追加されたメソッドをいくつか試してみる - Qiita
  • Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena

    ※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分で数個定義する感じになると思います。もちろん数個でも効果はでかいのですが。 また、おそらくStreamを受け取ったり返したりするメソッドを定義することは、めったにないのではないかと思います。 Mapでの拡張も、メソッド内部での処理記述がかわる話で、メソッドの引数や戻り値はMapのまま変わりありません。 Javaでのプログラムの構造というのは、メソッドの引数や戻り値の型がなんであるかで決まると言うことができます。その意味では、lambdaやStreamというのは処理の記述は変わるけどプログラムの構造は変わらないとなります。 けれども

    Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena
  • Java8でmixinをがんばってみる - yojikのlog

    Java8からinterfaeのデフォルト実装が使えるようになります。インタフェースは複数implemntsできます。したがって複数のdefault実装付インタフェースを組み合わせてクラスを構成することができそうです。mixiinによる実装の再利用です。(この場合implementと呼んでよいのか疑問ですが)。うまく使えばScalaのトレイトみたいなことが出来るはず。 それでは実例を。Userオブジェクトを検索して、その人にメールを送るという架空のアプリを考えます。 まずはUserオブジェクト。 いちいち複数ファイルを書くのは面倒なので、今回はすべてstaticなネストクラス(とネストインタフェース)として定義します。 public class MyTest { public static class User { String id; User(String id) {this.id =

    Java8でmixinをがんばってみる - yojikのlog
  • 5分で理解できぬ! Java8 ラムダ式 まとめ - Calms blog

    備忘録も兼ねて、Java8で導入されたラムダ式周りを簡単な例と一緒に「とりあえずこれだけ知っていれば十分」というレベルでまとめてみた。 Java8については下のページでよくまとまっているけど、ラムダ関係だけ切り出し&補完しています。 大刷新リリース Java 8の新機能 (1) Java 8の目玉、ラムダ式(1) - ラムダ式の基 | マイナビニュース テストコードの実行にはJava REPLを使用。 Javaプログラマ必須 - 対話型にJavaを実行できる「Java REPL」 - Calms blog ラムダ式 Javaプログラマにはなじみがないが、あくまで「Java版ラムダ式」だからラムダに慣れたスクリプト系言語の人も注意が必要。 ラムダ式はSAM TypeなInterface……つまり 抽象メソッドが一つのみのInterfaceを実装した匿名クラス の生成を簡潔に書けるようにする

    5分で理解できぬ! Java8 ラムダ式 まとめ - Calms blog
  • 祝 Java8 Project Lambda リリース!につき、ラムダ式コトハジメ - 倭マン's BLOG

    まだまだ夜は寒い季節ですが、新年度とともに Java の世界にも一足早く新しい風が吹いてきました。 Java5 でジェネリクスが導入されたときも結構インパクトがありましたが、Java8 でのラムダ式はそれ以上のインパクトがあり、プログラミングのパラダイム・シフトを余儀なくされることでしょう。 そうは言ってもラムダ式、関数オブジェクトは現代的なプログラミング言語では大抵サポートされている機能でもあるので、今更感の強い人もいることでしょう。 そういう方でも、多言語で実現されてた機能が Java8 ではどのように使うのか?ってことは確認しておく価値はあると思います。 ってことでラムダ式、関数オブジェクトに関して基的な事項を Java8 のコードで見ていきまする。 内容 ラムダ式 基的な記法 型推論 クロージャとしてのラムダ式 関数オブジェクト ラムダ式を既存の型に代入する メソッドの参照 メ

    祝 Java8 Project Lambda リリース!につき、ラムダ式コトハジメ - 倭マン's BLOG
  • 詳解 Java SE 8 第5回 Stream API その1

    今月からProject Lambaで追加されたAPIについて解説していきます。 Project Lambdaで追加されたAPIというと、Stream APIですが、その前に連載でもすでに何度も使用しているIterableインタフェースの変更について、あらためて紹介します。 その後、Stream APIについて紹介していきます。 Iterableインタフェースの変更 Java SE 7まで、Iterableインタフェースにはiterateメソッドしか定義されていませんでしたが、デフォルトメソッドを使用して2つのメソッドが追加されました。 1つはこれまでも何度も使用しているforEachメソッド、もう1つがspliteratorメソッドです。 forEachメソッドは拡張for文の内部イテレータ版になります。forEachメソッドの引数の型はjava.util.function.Consum

    詳解 Java SE 8 第5回 Stream API その1
  • ラムダ式で本領を発揮する関数型インターフェースとStream APIの基礎知識

    前回の「知っといてムダにならない、Java SE 8の肝となるラムダ式の基文法」では、Javaでのラムダ式の記述方法について見てきました。 今回はラムダ式の導入によってより効果を発揮するJava 8の新機能について見ていきます。今回のJavaのバージョンアップではラムダ式の導入と共に、多くの関数型インターフェースを扱うAPIが追加されています。 今までJavaをやっている人の中には「Java 8の新しい機能を試してみよう」と思っている人も多いことでしょう。しかし、「ラムダ式」という新しい書式に加えてAPIに数多くのクラスやインターフェースやメソッドが追加されていて、その多さに拒否感を持ってしまう人もいるかと思います。 しかし、多くの新機能は幾つかの基盤となるパターンがあり、多くの細かい機能はそれらを拡張したものになっています。今回は、その中で「汎用的に使える関数型インターフェース」「ラム

    ラムダ式で本領を発揮する関数型インターフェースとStream APIの基礎知識
  • 詳解 Java SE 8 第4回 Project Lambdaでの言語仕様変更 その2

    今回も前回に引き続き、Projet Lambdaのラムダ式以外の言語仕様変更について紹介していきます。 今回取り上げる言語仕様の変更点を以下に示しました。 コンストラクタ参照 デフォルトメソッド インタフェースでのstaticメソッド 特にデフォルトメソッドはインタフェースの根幹を変更するような、大きな変更になります。 コンストラクタ参照 前回、メソッド参照を紹介しましたが、コンストラクタ参照もメソッド参照の一種です。 メソッド参照がメソッドを指すのに対し、コンストラクタ参照はコンストラクタを指します。そして、コンストラクタ参照を使用すると、指定したクラスのオブジェクトを生成します。 このため、関数型インタフェースのメソッドの引数は、生成するオブジェクトのコンストラクタの引数となります。また、関数型インタフェースのメソッドの戻り値が、生成するオブジェクトの型である必要があります。 コンスト

    詳解 Java SE 8 第4回 Project Lambdaでの言語仕様変更 その2
  • もしもラムダの中で例外が発生したら(前編) - Taste of Tech Topics

    ある日、 id:cero-t がJJUGの重鎮たちと話している中で、とある宿題をもらいましたとさ。 「Java8のラムダの中で例外が発生したら、どうなるんだろう?」 こんにちは、アキバです。 もう皆さんはJava8を使ってみましたか? とりあえずインストールしてみた人! ・・はーい (おまえか という冗談はさておき、 今回は、id:cero-t に代わって私が冒頭のお題を調べてみました。 1. SerialStreamで動かしたラムダで例外が発生したら まずは、小手調べにシングルスレッドの場合を見てみましょう。 検査例外が発生するようなコードをラムダに書いてみると、コンパイルエラーになります。 こんなコードです。 try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(W_FILENAME))) { // writer.

    もしもラムダの中で例外が発生したら(前編) - Taste of Tech Topics
  • 15 Must Read Java 8 Tutorials

    Java 8 was released last month and is just chock-full of new features and behind-the-scenes optimizations. The internet has been doing quite a good job covering all these new additions – both the good and the bad. I thought it’d be good to do a round-up of what we think are some of the best tutorials out there, to help you get you quickly up-to-speed on what’s new and what you need to know. Java 8

    15 Must Read Java 8 Tutorials
  • Java 8 ローンチ Q&A

    Java 8は,長年に渡って最も待望されていた,プログラム言語のアップデートのひとつだ。今回のリリースでは日付APIやストリームAPI,ラムダ式といった新機能が導入される一方で,PermGenが廃止されるなど,総合的に見て望ましい方向の改良が行われている。我々はリリースの詳細を知るため,Java Platformグループでソフトウェア開発を担当する,Oracle VPのGeorges Saab氏に話を聞いた。 InfoQ: ラムダプロジェクトの経緯に詳しくない読者のために,今回導入される実装がどのようなものか,簡単に説明して頂けますか? 言語とVMとライブラリがすべて協調して関与するような改良は,今回が初めてではないかと思うのですが。 過去のリリースで実現された言語機能のほとんどは,その3つの領域のいずれかひとつだけに影響するものでした。あるいはメジャーリリースを機会として,それぞれの領域

    Java 8 ローンチ Q&A
  • Java8からはHashMapの性能のためにComparableを実装しておいた方がいい - interprism's blog

    こんにちは、andoです。 ついにJava8がリリースされたのでさっそくインストールしてみました。 Java8になってラムダ式を始め、多くの機能が追加されたのですが、既存機能についても性能改善が行われています。 人気がありそうな新機能の紹介は他の人にお任せして、今回はHashMapの変更点について確認したいと思います。 はたして既存のプログラムはJava8で実行するだけで、その恩恵を享受できるのでしょうか。 java.util.HashMap HashMapといえば使用頻度1、2を争うコレクションクラスでデータの検索、追加がO(1)で行え、 辞書的に使える事から簡易的なDTOやキャッシュ、データベースのレコード構造、さらにはListですむところでさえ数値をキーにして使う兵もいるというくらい良くも悪くも色々使えます。 それが速くなるのであれば、既存のプログラムも速くなるはず、ということでさっ

    Java8からはHashMapの性能のためにComparableを実装しておいた方がいい - interprism's blog
  • 詳解 Java SE 8 第3回 Project Lambdaでの言語仕様変更 その1

    今回も、前回に引き続き、Project Lambdaの紹介をしていきましょう。 前回はラムダ式について紹介しました。しかし、Project Lambdaによる言語仕様の変更はラムダ式だけではありません。そこで、今回と次回でラムダ式以外の言語仕様の変更についてまとめてみましょう。 実質的final 前回、説明したようにラムダ式は関数型インタフェースを実装した匿名クラスの簡易的な記述法になります。このため、匿名クラスの性質をそのまま引き継いでいます。 その一つにスコープがあります。 匿名クラスは、定義されたメソッドで使用されているローカル変数にはfinalをつけない限り、参照することはできません。 例えば、JavaFXでは、ボタンのイベント処理時に、他のコントロールを参照することがよくあります。このような場合、リスト1の赤字で示したようにイベント処理で参照するコントロールにfinalを付加する

    詳解 Java SE 8 第3回 Project Lambdaでの言語仕様変更 その1
  • iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena

    ちょっと気になったので、簡単にベンチマークしてみました。 最初は、ラムダ呼び出しが入る分forEachは遅いんじゃないかと思っていたら、倍の速さに。 もちろん、いろんな条件で変わるんだろうけど、ここまで差が出ることがあるのは驚き。 あと、Collectors.summingIntのような基型に対するCollectorを使うよりは、intStreamに変換してからsumなど専用メソッドを使うほうが圧倒的に速いことも確認できた。 とりあえず、0から10万件のListを用意。 array = IntStream.range(0, 100_000).boxed().collect(Collectors.toList()); それからベンチマーク用のメソッドを用意。 public static void bench(String name, Supplier<Integer> proc){ ben

    iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena