タグ

java8に関するdecoy2004のブックマーク (52)

  • JVM の並行性: Java 8 での並行処理の基礎

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    JVM の並行性: Java 8 での並行処理の基礎
  • 導入経緯から理解するストリームAPIとラムダ式 : Java好き

    JavaSE8は、なんといってもストリームAPIとラムダ式。 いろいろとできることが増えたので どこから手をつければよいのか困ってしまうが、 導入経緯を探っていくと理解しやすい。 ここでは、ストリームAPIやラムダ式の周辺が どんな理由で必要になったかを考える。 並列処理にはそれが必要だった 導入経緯をまとめると、次のような話。 (個人の主観的なまとめです。詳細はご自身でお確かめ下さい。) CPUがマルチコア化しているのに プログラム側が対応しきれていないのはもったいない。 並行処理用のAPI(Concurrency Utilities)があるじゃないか。 粒度の大きな処理は問題ないが、 粒度の小さな処理を並列化する場合には使いにくい。 じゃあ、イテレータに注目しよう。 反復されている処理が、簡単に並列化できればうれしい。 イテレータを改良すればなんとかなるのでは。 でも、今の外部イテレー

    導入経緯から理解するストリームAPIとラムダ式 : Java好き
  • メモっとけ Java 8 Lambdas 〜Chapter3〜 - A Memorandum

    Java 8 Lambdas: Pragmatic Functional Programming (English Edition) 作者:Richard Warburton出版社/メーカー: O'Reilly Media発売日: 2014/03/18メディア: Kindle版 前回 blog1.mammb.com からの続き Stream Stream は複雑なコレクション操作を関数型アプローチで構築するツールです。 外部あるいは内部の繰り返し ロンドン出身のアーティスとを数える旧来のコード int count = 0; for (Artist artist : allArtists) { if (artist.isFrom("London")) { count++; } } 繰り返し処理の抽象である Iterator を使ったコード int count = 0; Iterator<Ar

    メモっとけ Java 8 Lambdas 〜Chapter3〜 - A Memorandum
  • JDK8からあるちょっと嬉しいGCログオプション - n-agetsumaの日記

    JDK8およびJDK8u20では、GCログに関連する2つの便利な機能が追加されている。いずれの機能も2014/8現在最新のJDK7 update 67 には含まれていないが、JDK7u80にてバックポートされる予定。 GCログにpidと日付を含める (JDK8より) JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/wildfly/gc_%p_%t.log" => 実際のファイル名例 : gc_pid31455_2014-08-31_14-20-16.log.0GCログのフォーマットに%pを入れるとpid形式のプロセスIDが付与される。また%tを付与すると"_2014-08-31_14-20-16"のようにGCログファイルを作成した日付時分秒が追加される。かつてGCログはJavaを再起動すると同じファイルが上書きされて消えてしまうため、出力先を-Xloggc:g

    JDK8からあるちょっと嬉しいGCログオプション - n-agetsumaの日記
    decoy2004
    decoy2004 2014/09/01
    『JDK8よりGCログフォーマットに%p(pid)や%t(時間)が含められる。 JDK8u20よりjcmd GC.rotate_logでGCログローテションできる。JDK7u80 にバックポート予定』
  • Stream APIで大きなファイルを読み込むと - torutkのブログ

    Java SE 7で導入されたNIO2のFilesクラスでreadAllLinesメソッドを使って大きなファイルを読むと、ヒープメモリを圧迫またはOutOfMemoryErrorを起こします。 List<String> lines = Files.readAllLines(Paths.get(args[0]), StandardCharsets.UTF_8); Windows 7 64bit(12GBメモリ)で、Java SE 8 64bit版上でヒープメモリサイズのオプションを指定せずに(デフォルト)実行し、8GBのファイルを上述コードで読み込ませたところOutOfMemoryErrorが発生しました。 Java SE 8で導入されたStream APIを使って大きなファイルを読み込むとどうか試してみました。 try (BufferedReader reader = Files.newB

    Stream APIで大きなファイルを読み込むと - torutkのブログ
    decoy2004
    decoy2004 2014/08/26
    『Java SE 8で導入されたStream APIを使って大きなファイルを読み込むとどうか試してみました。』
  • JDK 8のjdepsでJARファイル間の依存関係を可視化 - torutkのブログ

    Java SE 8 Development Kit(JDK 8)で新たに搭載されたコマンドjdepsは、JavaのクラスファイルやJARファイルから、JARファイルやパッケージやクラスの間の依存関係を解析します。ツールの結果はテキスト(標準出力)とdot形式ファイル(Graphvizでグラフィカルに表示)として生成できます。 http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html 今回は、JARファイル間の依存関係をjdepsコマンドで調べてみました。 GeoToolsのJARファイルの依存関係を調べる Javaのオープンソース地図ライブラリGeoToolsは、多数のJARファイルから構成されています。 http://www.geotools.org/ 次にGeoTools 11.1に含まれるJAR一覧を示し

    JDK 8のjdepsでJARファイル間の依存関係を可視化 - torutkのブログ
    decoy2004
    decoy2004 2014/08/26
    『JDK 8 コマンドjdepsは JavaのクラスファイルやJARファイルから、JARやパッケージやクラスの間の依存関係を解析しテキストとdot形式ファイル(Graphviz)として生成できます』
  • 「Java 8 Lambdas」を読む会第2回を実施して - torutkのブログ

    昨日はJava読書会BOF主催のJava読書会「Java 8 Lambdas」を読む会の第2回を開催しました。洋書にも関わらず、10人を超える参加者が集まりました。 今回の読書範囲で感じたことなど ラムダ式の引数命名 ラムダ式の記述で、引数の変数名に著者は多少長くなっても意味を示す名前を付けています。 Example 3-16より引用 int count = Stream.of(1, 2, 3) .reduce(0, (acc, element) -> acc + element); たまにラムダ式の解説でみかける1文字変数のコード例だと int count = Stream.of(1, 2, 3) .reduce(0, (a, e) -> a + e); と短くなるものの、'a'って? 'e'って? となって可読性が下がります。 for文、分かりやすいではないか 上記のreduceを使っ

    「Java 8 Lambdas」を読む会第2回を実施して - torutkのブログ
    decoy2004
    decoy2004 2014/08/26
    キャプチャーをしないラムダ式では、関数型インタフェースのインスタンスが内部でシングルトン・パターンで実装されているので毎回の生成はないですが、キャプチャがあるとインスタンス生成が毎回となるようです。
  • FindBugs 3.0.0-rc2とNetBeans Plugin - torutkのブログ

    Java SE 8対応のFindBugs 3.0.0リリース候補版(rc2)が公開されています*1。 http://findbugs.sourceforge.net/ FindBugsサイトでは、3.0.0-rc2を組み込んだEclipseプラグインが合わせて公開されています。しかし、NetBeans向けのプラグイン(FindBugs Integration)はまだFindBugs 2.0系列のものしかありません。 NetBeansプラグイン(FindBugs Integration)のソースをいじってFindBugs 3.0.0-rc2対応版プラグインを作ろうとしましたが、敷居が高く挫折してしましました。そこで、プラグインとしてではなく、プラグインをインストール後一部ファイルを差し替えることでFindBugs 3.0.0-rc2対応をさせることにしました。 ちょうどJava読書会で現在読

    FindBugs 3.0.0-rc2とNetBeans Plugin - torutkのブログ
  • Java8でListとかMapに追加されたメソッドをいくつか試してみる - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Java8でListとかMapに追加されたメソッドをいくつか試してみる - Qiita
  • jMockit 1.9にしたらえらく変わってた - Qiita

    Mockit.setUpMock(HogeMock.class); // ここでいねーよってコンパイラーさんがOKOKO new Expectations() { Fuga fuga; // これではMock化してくれないっぽい? { this.fuga = new Fuga(); // 動かすとMockじゃないってJVMがOKOKO } }; どうやら、基的にMockUp使えってことらしくて、Expectitionsはテストクラスのフィールドやメソッドの引数にMockedアノテーション付ける以外にはダメっぽそう。 TestNG+jMockit+EclEmmaな環境だと、EclEmma2.3.1とかにしてしまうだけで、jMockitとぶつかって、テストの起動でコケてくれるので、jMockitのバージョンを上げるか、EclEmmaを2.2系に戻すほかないけど、Java8対応とかするにはEc

    jMockit 1.9にしたらえらく変わってた - Qiita
    decoy2004
    decoy2004 2014/08/19
    『Java8対応とかするにはEclEmma2.3.1にしないとダメなので、jMockitをバージョンアップするしかないという』
  • The Checker Framework Manual: Custom pluggable types for Java

    The Checker Framework Manual: Custom pluggable types for Javahttps://checkerframework.orgVersion 3.49.0 (3 Feb 2025) For the impatient: Section ‍1.3 describes how to install and use pluggable type-checkers. This manual is also available in PDF. Contents Chapter ‍1 Introduction 1.1 How to read this manual 1.2 How it works: Pluggable types 1.3 Installation 1.4 Example use: detecting a null pointer b

    decoy2004
    decoy2004 2014/08/07
    『Lock Checker for concurrency and lock errors (see Chapter 5)』
  • Java8のHotSpotVMからPermanent領域が消えた理由とその影響 | ギークを目指して

    今回も前回の記事につづき、Java8による変更点で未だあまり紹介されていないポイントを記事にしようと思う。 今回はJava8のHotSpotVMの話。Java8ではJEP122が取り込まれ、VMのメモリモデルが変更された。JEP122のタイトル「Remove the Permanent Generation」から想像できるとおり、Java8のHotSpotVMからは従来のPermanent領域が無くなった。 なぜ、こういった変更が行われたのだろうか?また、元々Permanent領域に格納されていた情報は何処にいってしまったのか?JVM付属のツールにどういった影響があるのか? 今回の記事ではこの点をまとめていこうと思う。 なお、HotSpotVMのメモリモデルについて詳しくない方は、先にこちらの項番(「補足 – HotSpotVMのメモリ構造概説)を読んでいただくとスムーズに読み進められるだ

    Java8のHotSpotVMからPermanent領域が消えた理由とその影響 | ギークを目指して
    decoy2004
    decoy2004 2014/07/29
    『 jmap 従来のPermanent領域はヒープ領域の一つとして取り扱われていたため、使用状況が取得できたが、利用状況の取得はできなくなった。 これは、Native領域を利用することによるデメリットの一つと言えるだろう。』
  • Java8のインタフェース実装から多重継承とMix-inを考える | ギークを目指して

    2014年3月18日、ついにJava8が正式にリリースを迎えた。 折角なので、今後、Java8の新機能に関する記事をいくつかアップしていきたい。 Java8といえばやはりラムダ式だけど、既に色々な方がブログ等々で紹介しているので、今回は、Java8にて導入されたインタフェースのデフォルト実装と多重継承、Mix-inの関係について書いていきたいと思う。 かなり長丁場になりそうだが、最後までお付き合いいただければ幸いである。 では、Java8の世界に飛びだそう! Java8のインタフェース実装とは? Java8では、インタフェースに実装を持てるようになった。 定義の方法は「default」句、または「static」句を利用する2パターンが存在する。 今回の記事では「default」句を利用した場合のメソッドの振る舞いから多重継承とmix-inについて考えていく。 default句を使用したイン

    Java8のインタフェース実装から多重継承とMix-inを考える | ギークを目指して
  • Java8 で java.lang.Object#hashCode() の生成アルゴリズムが変更されていました。 - 地平線に行く

    java.lang.Object#hashCode()の性質という記事で書いたのですが、Java の Object#hashCode() の値はただの乱数となっています。 この乱数のアルゴリズムが、Java SE 8 で「線形合同法」から「XORシフト方式」に変更になっていました。 といっても、変更されたのはたった1文字。 VMオプションのデフォルト設定が -XX:hashCode=0 から -XX:hashCode=5 に変わっただけでした。 hotspot-rt Udiff hotspot/src/share/vm/runtime/globals.hpp どういうこと? もともと、Java の以前の実装*1 *2から、Object#hashCode() のアルゴリズムはVMオプション -XX:hashCode=? で選べるようになっていました。 ですが、デフォルトは長いこと 0(=線形

    Java8 で java.lang.Object#hashCode() の生成アルゴリズムが変更されていました。 - 地平線に行く
    decoy2004
    decoy2004 2014/07/23
    『しかし、Java SE 8 をリリースするにあたって改めて調べたところ、「-XX:hashCode=5(XORシフト方式)に変えたほうがマルチスレッドでのパフォーマンスが格段に良い*3」という結果が得られたそうです。』
  • Date and Time API 徹底攻略(2) - そもそも「時」とは何か? - Programming Studio

    Java SE 8 が日時間の 3 月 19 日 午前 4 時頃にリリースされました。3 月 18 日リリースと聞いて JDK ダウンロードページが更新されるのを待機していたけれども、いつまで経っても更新されず、翌日見てみたら更新されていた、という経験をされた方も少なくないのではないでしょうか。今回は Java SE 8 のリリースがなぜ 3 月 18 日でなく 3 月 19 日になってしまったのか?という謎解きも含めて、「時」というものを振り返ってみようと思います。 1. 「時」の基単位は「秒」 現在、「時」の基単位は「秒」と定められています。「秒」は 7 つある SI 基単位 (これ以上分解できない単位のこと) の 1 つであり、SI 単位系においては非常に重要な存在です。 SI 基単位は、m (メートル; 長さ)、kg (キログラム; 質量)、s (秒; 時刻・時間)、A

    Date and Time API 徹底攻略(2) - そもそも「時」とは何か? - Programming Studio
  • Java 8 & 機械学習の視点でみる Spark 1.0 リリース - ALBERT Engineering Blog

    はじめに さる 5/30、今か今かと待ち望まれていた Spark 1.0 が 遂にリリース されましたね! その前日 5/29 には都内で 実際のところ Spark ソースコードリーディング だった Hadoop ソースコードリーディング #16 が開催されるなど、 Spark についての注目度が俄然高まってきているように思えます。 そんなわけで、0.9.1 からの変更点や機能追加について、Java機械学習に携わるエンジニアの視点で 今回の 1.0 リリース内容をまとめてみました! 何が変わったのか? Spark : Java 8 のラムダ式サポート Java エンジニア的に今回の一番の変更点は、何と言っても Java 8 のラムダ式への対応、ですね。 今年 3 月の Java 8 正式リリース後、主に Stream API の周辺においてラムダ式を書く機会が徐々に増えつつあるかと思い

    decoy2004
    decoy2004 2014/07/17
    『クラス分類・回帰。行列計算 特異値分解、主成分分析』
  • Technology RaderもJava8を認めた! - きしだのHatena

    技術の注目度・実用度を分析したTechnology raderというのを、Thought worksが半年ごとに発表してます。 で、これいつもJava嫌いなんだなーって思う感じの内容だったんですね。 たとえば、2011年1月には「Java language end of life」といって、JavaはVMは残るけど言語は終わるよねーみたいな感じになってました。 http://thoughtworks.fileburst.com/assets/technology-radar-january-2011.pdf これが、2011年7月では、「Future of Java」として、今後でてくるJavaなら評価していいんじゃねーのみたいに。 http://thoughtworks.fileburst.com/assets/technology-radar-july-2011.pdf そして、先日

    Technology RaderもJava8を認めた! - きしだのHatena
  • Java8 Stream API では collector とかを複数回呼ぶと実行時エラーになる - tokuhirom's blog

    以下のようなコードは、実行時エラーになる。 Stream<String> ss = Arrays.asList("hoge", "fuga").stream(); System.out.println(ss.count()); System.out.println(ss.count()); スタックトレースは以下のようになる。 stream has already been operated upon or closed java.lang.IllegalStateException at java.util.stream.AbstractPipeline.<init>(AbstractPipeline.java:203) at java.util.stream.LongPipeline.<init>(LongPipeline.java:91) at java.util.stream.Lo

  • JAWS-UG三都物語で「そろそろJavaみなおしてもええんやで」というプレゼンしました - きしだのHatena

    夏のJAWS-UG 三都物語 2014というイベントで「そろそろJavaみなおしてもええんやで」というプレゼンしてきました。 Javaのイベントではなかったので、Javaを使ってない人を想定したプレゼンでしたが、実際会場のほとんどがJavaメインではなかったようです。 for(int num : nums){ if(num > 10) continue; sum += num * 2; } というコードが、NetBeansの「関数操作を使用」というリファクタリングで sum = nums.stream().filter((num) -> !(num > 10)).map((num) -> num * 2).reduce(sum, Integer::sum); になったところがハイライト。 ここまでできるとは思ってなかった。 そろそろJavaみなおしてもええんやで from なおき きしだ

    JAWS-UG三都物語で「そろそろJavaみなおしてもええんやで」というプレゼンしました - きしだのHatena
    decoy2004
    decoy2004 2014/07/09
    『NetBeansの「関数操作を使用」というリファクタリングで sum = nums.stream().filter((num) -> !(num > 10)).map((num) -> num * 2).reduce(sum, Integer::sum); になったところがハイライト。』
  • [Pleiades] Java 8 正式対応!Eclipse 4.4 Luna リリース - Qiita

    毎年 6 月恒例の Eclipse メジャーリリースとなる Eclipse 4.4 Luna (ルナ) がリリースされた。ラムダなど Java 8 に正式対応した初のバージョンだ。これに合わせて日語化された Eclipse と便利なプラグインや Java 8 実行環境を含む全部入りの Pleiades All in One もリリースした。 Pleiades All in One Eclipse 4.4 Luna ダウンロード http://mergedoc.sourceforge.jp/pleiades_distros4.4.html 起動時のスプラッシュは月 (Lunar Eclipse) のときに月から地球を見たときに発生しているであろう日イメージにした。地球の所々光っている部分は実際の街明かりで、韓国の北側の国が真っ暗で話題になった NASA の映像。背景は銀河中心方向の S

    [Pleiades] Java 8 正式対応!Eclipse 4.4 Luna リリース - Qiita
    decoy2004
    decoy2004 2014/06/26
    『エディター分割』