Microsoft Build 2022をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
This document discusses various tools for monitoring and analyzing metaspace and class metadata in the Java virtual machine. It describes using -XX:+PrintGCDetails to print details of full GC collections including metaspace usage. It also discusses using MBeans, jstat -gc, and VisualVM to monitor memory pools like metaspace and class space. The document further explains using jmap -clstats to view
Java8 ではラムダ式やストリーム API に注目が集まってますが、何気にアノテーションに関しても機能拡張がされているようなので簡単な変更点や使い方を今夜試してみました。 ElementType の追加 TYPE_PARAMETER TYPE_USE 定義済みアノテーション @Repeatable アノテーション @FunctionalInterface アノテーション @Native アノテーション 目次 ラムダ式やストリーム API や新しい日時 API だけじゃない! Java8 のタイプ・アノテーションあの手この手 どんとこいタイプ・アノテーション! Checker Framework 導入あの手この手 ~without IDE 編~ どんとこいタイプ・アノテーション! IntelliJ IDE 独自のタイプ・アノテーション 参考 InfoQ 「Type Annotations
こんにちは。アキバです。 ゴールデンウィークですね! 皆さんいかがお過ごしですか? 今年は間に平日が多めなので、大型連休!というよりは2回連休があるというイメージの方が強いかもしれません。 cero-tの奥さんは11連休だとか さて、前回に続いて、ParallelStreamで動かしているラムダ内で、例外が発生した場合の挙動について調べていきます。 まずは、軽くおさらいします。 以下のようなコードを書きました。 try { List<String> strArray = Arrays.asList("abc", "def", "xxx", "ghi", "jkl", "xxx", "pqr", "stu"); strArray.parallelStream().forEach(s -> { System.out.println("ラムダ開始: id=" + Thread.currentTh
一ヶ月ほどまえに Java 8 がリリースされました。ラムダも入ったことだし、お試しがてらゴールデンウィーク中に asterisque* の Scala コードの一部を Java で書き換える作業などを行っております。 ただまぁ asterisque* は非同期 RPC フレームワークですので、ラムダだけでなく Scala の Promise, Future もあちこちで使っています。うーんこいつらの互換性どうしようかなーと悩んでいたところ Java 8 に CompletableFuture というクラスが追加されいるのに気づきました。ざっと API リファレンスを読む限り以下のような特徴があります。 Scala の Future と同様に非同期処理間で成功 (計算結果) または失敗 (例外) を渡すことが出来る。 複数の処理スレッドで共有することも想定していて、早い者勝ちで結果を出すよ
ある日、 id:cero-t がJJUGの重鎮たちと話している中で、とある宿題をもらいましたとさ。 「Java8のラムダの中で例外が発生したら、どうなるんだろう?」 こんにちは、アキバです。 もう皆さんはJava8を使ってみましたか? とりあえずインストールしてみた人! ・・はーい (おまえか という冗談はさておき、 今回は、id:cero-t に代わって私が冒頭のお題を調べてみました。 1. SerialStreamで動かしたラムダで例外が発生したら まずは、小手調べにシングルスレッドの場合を見てみましょう。 検査例外が発生するようなコードをラムダに書いてみると、コンパイルエラーになります。 こんなコードです。 try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(W_FILENAME))) { // writer.
ちょっと気になったので、簡単にベンチマークしてみました。 最初は、ラムダ呼び出しが入る分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
Compatibility is a complex issue. This document discusses three types of potential incompatibilities relating to a release of the Java platform: Source: Source compatibility concerns translating Java source code into class files including whether or not code still compiles at all. Binary: Binary compatibility is defined in The Java Language Specification as: 'A change to a type is binary compatibl
こんにちは! アキバです。 ...T3ブログは初登場かもしれません。ハジメマシテ。 以後お見知りおきを。 いよいよ、2014年3月、Java8が正式公開されますね。 なんと言っても、Java8の注目機能はラムダ式ですので、ラムダ式や型推論に関する記事は多いです。 世の中で「Java8」と検索すると、皆さんいろいろと記事を書かれているので、おおよその事はこれで分かっちゃうような気がします。 が、 実は地味に便利なAPIが追加されていたりすることを最近知りました。 これはあまり触れられていないぞ、と。 というわけで、このエントリでは、あまり日本語で情報の無い、しかし地味に便利なAPIに実際に触れてみます。 大事なところなので2回強調して書いてみました。 今回は、前編として4つ紹介します。 ※APIの紹介と言いつつ、コードにはラムダ式を使ったコードが普通に出てるので、ご了承ください。 (むしろ、
こんにちは @cero_t です。 今日のテーマは・・・ラピュタ禁止令! バルス! いや違う。ラムダ禁止令、です。 さて、なかなかの滑り出しですが、今日はただのラムダの紹介ではなく、禁止令に主眼を置いて語ります。 このエントリーは、Java Advent Calendar 2013の12/16分の投稿です。 http://www.adventar.org/calendars/145 前日は @sugarlife さんの JDK 8 新機能ダイジェスト (JDK 8 Features) です。 翌日は @setoazusa さんです。 ラムダ禁止令はあり得るのか? 勉強会やその懇親会などで、たびたび「ラムダ禁止令が出るのではないか」が話題に上ることがあります。 「そりゃ禁止する組織もあるでしょうね」というのがお決まりの答えなのですが、ただそれに従うだけでは面白くありませんし、要素技術の発展も
いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します) もちろん、慣れてきて、ちょっとしたサポートメソッドを用意してやれば、結構使いやすいのですが、それは「このAPIは使いやすい」という評価にはなりません。 つまり日付時刻APIは、慣れないとぜんぜんわからないし、サポートメソッドがないと面倒なコードが必要ということです。 いろいろあってよくわからない 日付時刻では、時点を扱うInstantや期間を扱うPeriod、時間量をあらわすDurationなど多くのクラス・インタフェースが導入されています。 これらは、IDEの補完でAPIを探りながら機能を推測すれば、それなりにドキュメントなし
←2部(ラムダ式(実質的にfinal・スコープ)〜メソッド・コンストラクタ参照) →4部(例外ジェネリクス)→5部(Tips)ここで使用されているサンプルは、lambda-8-b25-05_feb_2012に基づいて作成されています。現在の仕様とは違っている点があるかもしれませんので注意してください。 デフォルト実装 デフォルト実装とabstract デフォルト実装とインターフェースの継承 デフォルト実装と多重継承 デフォルト実装とダイアモンド継承 デフォルト実装の使いどころ 1.誰が実装しても同じような実装になるとき 2.任意のオペレーションのメソッドを定義する時 3.既存のインターフェースに新しいメソッドを追加する時 ここまでラムダ式とメソッド参照・コンストラクタ参照について見てきましたが、今回はインターフェースのデフォルト実装についてです。 デフォルト実装(別名:拡張メソッド/デフォ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く