mike-neckのブログ

Java or Groovy or Swift or Golang

savanna-gradle-plugin をリリースしました

会社で仕事をサボってツイッター見てたら、t_wada さんのトレードマークと言えるライオンに関するツイートがいくつか流れてきました。

Gradle で同じことしてるのあるだろうと思って、「gradle savanna」で検索したところ誰も作っていないようだったので、作ってみました。

plugins.gradle.org

続きを読む

Gradle の C++ プラグインを使って JNI から C++ のコードを呼び出すアプリケーションをビルドする(Android プロジェクトではない)

GraalVM の native-image を作る際に利用する config.json を自動生成させて、アプリケーションを複数回実行してマージするというのをやろうとしており、 JNI を使う Java アプリケーション(JNA ではない)を Gradle でビルドする必要が出てきたが、残念なことに JNI で native を呼び出すアプリケーションを作ったことがなかったので、試しに作ってみることにした。

ところが、 Gradle で JNI を構築する場合の手順が Android だったり、古い software model だったりで、最近の Gradle C++ プラグインを利用しているものがないのでメモに残しておこうという理由でこれを書いてる。

続きを読む

Proxy の InvocationHandler から interface の default メソッドを呼び出す方法

  1. proxy を取得する対象のインターフェースクラスで MethodHandles.lookup() を呼び出して MethodHandles.Lookup を取得する
    1. で取得した MethodHandles.Lookupインスタンスから unreflectSpecial(Method, Class<?>) を呼び出して、MethodHandle を取得する
  2. proxy のインスタンスbindTo して invoke する
続きを読む

検査例外を検査無しで投げる邪悪な方法

netty のコードで結構前に見かけて覚えていたけど、完全に失念してて悔しかったので、メモ

呼び出し側にとってはこういうコード書かれたらかなり邪悪だと思う。

続きを読む