sun.misc.Unsafe
を多用するJavaでいくつかのFFIコードを書いています。クラスの2つの実装のうちの1つを使用してコンパイルするJavaコードを書く
Java 9では、このクラスはアクセス不能になり、jdk.unsupported.Unsafe
になります。今では動作するように自分のコードを書いていますが、Java 9でも引き続き動作します。
これを行うには、少なくともハッキーな方法はありますか?私はバイナリ互換性を望んでいますが、ソースの互換性も問題ありません。
編集:Unsafe
のメソッドが呼び出されるたびに、反射を使用しても、仮想ディスパッチを使用しても100%ではありません。これらのメソッドのほとんどは、という単一のマシン命令でコンパイルします。したがって、パフォーマンスは本当に重要です。ラッパーを付けても構いませんが、毎回JITがインライン展開することが確実である場合に限ります。
私の現在の計画は、実行時に適切なクラスをロードすることです。
「サポートされていません」... – r1verside
@ r1verside私は知っていますが、それほど多くのコード(新しい開発を含む!)がそれに依存するので、ほとんど離れることはありません。 – Demi
おそらく、ずっと前にやっていたはずのことをやるべきときです。コードを修正してください(あなたは古い太陽のコードを使いません)。 – Bohemian