Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

static finalな定数が速いのは、何がどうなって速い?

定数を利用した最適化、というのはイメージしやすいですし、実際速くなります。今回、Alekseyさんのサンプルを使いながら、まずはstatic finalな値のコンパイルコードを実際に見て、どう速いのか学びました。 JVM Anatomy Park #15: Just-In-Time Constants …

JMHの`-prof perfasm`がめちゃすごい

JMH(Java Microbenchmark Harness)で、-prof perfasmをすると、perfと-XX:+PrintAssemblyを使って、JITコンパイラ生成コードでのホットな部分を表示してくれるという機能があります。これが、思いの外すごい機能だったので、紹介します。 前提条件 JMHを知…

TLABとフィラー(詰め物)

以前、TLABとBump the Pointerについて、検証しました。 www.sakatakoichi.com AlekseyさんのJVM Anatomy Parkには、もう1つTLABの話題があります。今回、その内容も、実際に動かして見てみます。 JVM Anatomy Park #5: TLABs and Heap Parsability こんなコ…

TLABとBump the Pointer

JJUG CCC 2018 Fallのセッション、数村さんのGCを発生させないJVMとコーディングスタイルにて、TLABとBump the Pointerについての説明がありました。 (https://www.slideshare.net/kenjikazumura/gcjvm より抜粋) TLAB、理屈は知っているけれど、よく考え…

Java 11でPrintStringTableStatisticsするとクラッシュする

Java 11でのみ発生します。7、8、9、10では発生せず、現在開発中のJava 12では、fixされています。 $ java -version openjdk version "11.0.1" 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.1+13) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1…

String#intern()を使った場合の、パフォーマンスへの影響を学ぶ

JJUG CCC 2018 Fallのセッション、GCを発生させないJVMとコーディングスタイルにて、GCの発生を抑えるアプリケーション側の対処として、以下のことをするケースもある、とありました。 (https://www.slideshare.net/kenjikazumura/gcjvm より抜粋) String#…

OpenJDKのC++コードを、CLionでデバッグする

OpenJDKをhg cloneしたあと、bin/idea.shを実行して、IntelliJ IDEAでソースコードを読んでいました。ただ、C++のコードを読む割合が増えてきて、IntelliJでは読みづらいな、と感じてきました。 以前chiroitoさんが、Eclipse上でOpenJDKをデバッグしていたこ…

書籍「現場至上主義 Spring Boot2 徹底活用」をいただき、読み終えました

現場至上主義 Spring Boot2 徹底活用作者: 廣末丈士,宮林岳洋,高安厚思出版社/メーカー: ソシム発売日: 2018/11/30メディア: 単行本この商品を含むブログを見る はじめに 書籍「現場至上主義 Spring Boot2 徹底活用」を、この書籍を編集された会社からいただ…

JJUG CCC 2018 Fallに参加/パネリストをしました #jjug_ccc

JJUG CCC 2018 Fallに参加しました! www.java-users.jp そろそろ始発近くの新幹線で向かうのは、体力的にきついなと感じ始めました… JJUG基調講演「Javaの未来を考えよう」パネリスト JJUG鈴木会長の司会の下、せろさん、きしださんとともにパネリストとし…

GraalVMのSubstrateVM (1): ネイティブイメージ関連のコードを読む準備

そういえば、Graal JITコンパイラのコードはいろいろ読んでみたことはあるけれど、ネイティブイメージのSubstrateVMの方はまったく読んでいないなあ、と思いました。 ネイティブイメージを生成してみる、的なことを、1年ほど前に試しただけでした。 www.saka…

Oracle Code One 2018参加記: GC編

Oracle Code Oneは、JavaOneとして2017年まで開催されていたものを、リブランドしたカンファレンスです。 2018/10/22〜25までの4日間、USサンフランシスコのモスコーンコンベンションセンターで開催されました。このブログでは、時系列ではなく、トピックご…

MacでIntelliJ IDEAを使うと、optionキーを含んだショートカットが効かない/特殊文字が出る場合

いつのバージョンから発生していたのか、気づけばIntelliJ IDEAでoptionキーを含んだショートカットを使うと、動作しなかったり、特殊文字が入力されるようになりました。 具体的には、次のようなものです。 キーマップでは、option + shift + Gでクラスをナ…

Oracle Code One 2018参加記: イベント編

Oracle Code Oneは、JavaOneとして2017年まで開催されていたものを、リブランドしたカンファレンスです。 2018/10/22〜25までの4日間、USサンフランシスコのモスコーンコンベンションセンターで開催されました。このブログでは、時系列ではなく、トピックご…

Oracle Code One 2018参加記: 登壇編

Oracle Code Oneは、JavaOneとして2017年まで開催されていたものを、リブランドしたカンファレンスです。 www.sakatakoichi.com 2018/10/22〜25までの4日間、USサンフランシスコのモスコーンコンベンションセンターで開催されました。このブログでは、時系列…

今後のJavaのサポートやアップデートについてJavaチャンピオンが執筆したドキュメント、Java is Still Freeの日本語訳を公開

今後のJavaのサポートとアップデートに関して、世界のJavaチャンピオン数十名が執筆したJava is Still Freeというドキュメントを、日本のJavaコミュニティメンバーで翻訳しました。翻訳したドキュメントはこちらです。 docs.google.com 簡約バージョンと詳細…