1
OpenJDKコンパイラでコンパイルされたJavaラムダ式のバイトコードを掘り下げました。ラムダ式のバイトコードはコンパイラ/ランタイムによって異なるのですか?私は、私の検査ロジックがプラットフォーム間で動作するかどうかを知りたいのですが。Java 8ラムダ式バイトコード一貫性
OpenJDKコンパイラでコンパイルされたJavaラムダ式のバイトコードを掘り下げました。ラムダ式のバイトコードはコンパイラ/ランタイムによって異なるのですか?私は、私の検査ロジックがプラットフォーム間で動作するかどうかを知りたいのですが。Java 8ラムダ式バイトコード一貫性
ラムダのバイトコードはコンパイラ/ランタイムによって異なる場合がありますか?
理論上はい。 JLSは、特定のバイトコード/シーケンスを生成する必要があることを指定しません。
既存のJava 8 & Java 9コンパイラによって生成されたバイトコードがどれだけ異なるかを確認する必要があります。 (まだ書かれていないコンパイラ/バージョンについては教えてくれません)
私の検査ロジックはプラットフォーム間で動作するかどうか知りたいのですが。
解決策は、包括的なテストケースを構築し、サポートしたいすべてのJavaコンパイラによって生成されたコードに対して実行することです。
要するに、それをテストします。
正確に何を点検しようとしていますか?特に、Groovy 3コンパイラがJava 8スタイルのlambdaをサポートしている場合、異なるバイトコードを大幅に*発生する可能性が高いことに注意してください。 – chrylis
openjdkのjavacは現存する唯一のJavaコンパイラではありませんが、ecjは一般的に使用されている代替例です。 – the8472