家が近いので 第6回Reactive System Meetup in 西新宿 に参加してきた
続きを読むJigsaw でサービスプロバイダーを定義した場合には、 ServiceLoader は従来の引数なしコンストラクターに加えて provider という名前の static ファクトリーメソッドでオブジェクトを生成できる
GraalVM の native-image はモジュールには未対応ということで、モジュールによるアプリケーションのネイティブ化には一旦諦めましたが、モジュールの仕組みがまだよくわかってないので、もう少し勉強を続けることにした日本で 1,000,000 番目に Java のモジュールシステムに詳しいものです。
今回は Java9 で追加されていた ServiceLoader
のファクトリーメソッドによるオブジェクト生成について紹介します。
時間のない人のための 1 行まとめ
- Java9 のモジュールシステムによって、
ServiceLoader
は生成するオブジェクトを従来の引数なしコンストラクターだけでなく、provide ... with ...
ディレクティブに指定されたクラスのproviders
という static ファクトリーメソッドによって生成できるようになっていた
で、いつもどおりですが、詳しくは ServiceLoader
の javadoc を読むのがおすすめです。
Java のモジュールと ServiceLoader その2 マルチプロジェクトで実験
GraalVM の native-image で javac のネイティブ化に失敗したことの原因が Java のモジュールシステムの理解不足にあることからモジュールシステムを一から勉強し直している、日本で 1,000,000 番目に Java のモジュールシステムに詳しいものです。
今回は自分でモジュールを書いて ServiceLoader
で実装クラスの名前を知らなくてもインスタンスを取得するという実験をやっていきたいと思います。
例によって時間のない人のための 1 行まとめ
ServiceLoader
の javadoc 、特に Deploying providers as module を読んでください- GraalVM の
native-image
はモジュールシステムに2021年2月現在は対応していないため、諦めてください
Java のモジュールと ServiceLoader
多分、日本で1,000,000番目に Java のモジュールシステムに詳しい人間になれた気がする
— 引きこもり持田 (@mike_neck) 2021年2月18日
GraalVM の native-image で、 javac のネイティブイメージを作成した際に、 JavacTool
(JavaCompiler
の実装クラス) というコアとなるクラスがネイティブ化されていませんでした。いろいろと振り返ってみたところ、 Java のモジュールシステムについてまったくといっていいほど理解が足りていないという結論にいたり、勉強がてら少しずつ実験してみることにしました。
時間がない方のための 1 行まとめ
- ServiceLoader の javadoc 読んでください