Fight the Future

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

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 簡約バージョンと詳細…

Java 11 / JEP 181のNestmatesでのバイトコードの変更を見比べる

JEP 181: Nest-Based Access Controlというものがあります。これはNestmates(ネストメイト)と呼ばれるものです。 http://openjdk.java.net/jeps/181 Nestmatesは、クラスやインタフェースをネストして作成したとき、ネストする側される側の両方を指す言葉…

Java 11 / JEP 309のConstant Dynamic(condy)を試す

JEP 309: Dynamic Class-File Constantsというものがあります。これはConstant Dynamic(condy)と呼ばれるものです。 http://openjdk.java.net/jeps/309 Constant Dynamic、つまり動的な定数です。Javaでは今まで(10まで)プリミティブとリテラルを持つStr…

HotSpot VMビルド時のADファイル処理

jvm

以前HotSpot VMのIntrinsicsを見ました。ビルド時にAD(Architecture Description)ファイルから各CPUアーキテクチャに合わせたC++のソースファイルを生成しています。 www.sakatakoichi.com しかし、ADファイルからどのようにC++のソースを生成しているのか…

JVM(HotSpot VM)におけるIntrinsics(C2/Graal)

Project Loomのソースを読んでいると、また遭遇しました。 public class Continuation { ... @HotSpotIntrinsicCandidate private static int doYield(int scopes) { throw new Error("Intrinsic not installed"); }; ... } @HotSpotIntrinsicCandidateアノ…

アノテーションをimplementsしたクラスを作成する

アノテーションをimplementsしたクラスを作成できるというのを最近知りました。アノテーションなんてJDK 1.5からあるのに、知らないもんですね… みなさんはご存知ですか?とTwitterにツイートしたところ、ご存知の方もたくさんいらっしゃいましたが、ご存知…

メソッド参照をRunnable型の変数に代入する

こんなことができるのを知りませんでした。 public class MethodReferenceSample { private void method1() { } public static void main(String[] args) { Runnable method1 = new MethodReferenceSample()::method1; } } メソッド参照の値をRunnable型の変…

LINE Fukuoka様でのDeveloper Meetupで登壇しました

LINE様が東京を始め京都、大阪、福岡などで頻繁に開催されているいわゆる勉強会、Developer Meetupがあります。 2018年7月に福岡のLINE Fukuoka様で開催されたDeveloper Meetupに登壇しました。こちらの模様をLINE様のEngineer Blogに書いていただきました。…

Value Typesもろもろ

以前Project ValhallaのL-World Value Typesのアーリーアクセスビルドを試しました。 www.sakatakoichi.com 今回もう少し触ってみます。 利用バージョン $ java -version openjdk version "11-lworldea" 2018-09-25 OpenJDK Runtime Environment 18.9 (build…