みんな Java やってる?
どーも mike です!
GraalVM 編、第XX話は GraalVM のエクスペリメンタルなプロダクト espresso
ついに、試してみたよ〜
それでは、スタート!!!
(以上、最近お気に入りのユーチューバーの前口上)
続きを読むGraalVM の native-image はモジュールには未対応ということで、モジュールによるアプリケーションのネイティブ化には一旦諦めましたが、モジュールの仕組みがまだよくわかってないので、もう少し勉強を続けることにした日本で 1,000,000 番目に Java のモジュールシステムに詳しいものです。
今回は Java9 で追加されていた ServiceLoader
のファクトリーメソッドによるオブジェクト生成について紹介します。
時間のない人のための 1 行まとめ
ServiceLoader
は生成するオブジェクトを従来の引数なしコンストラクターだけでなく、 provide ... with ...
ディレクティブに指定されたクラスの providers
という static ファクトリーメソッドによって生成できるようになっていたで、いつもどおりですが、詳しくは ServiceLoader
の javadoc を読むのがおすすめです。
GraalVM の native-image で javac のネイティブ化に失敗したことの原因が Java のモジュールシステムの理解不足にあることからモジュールシステムを一から勉強し直している、日本で 1,000,000 番目に Java のモジュールシステムに詳しいものです。
今回は自分でモジュールを書いて ServiceLoader
で実装クラスの名前を知らなくてもインスタンスを取得するという実験をやっていきたいと思います。
ServiceLoader
の javadoc 、特に Deploying providers as module を読んでくださいnative-image
はモジュールシステムに2021年2月現在は対応していないため、諦めてください