2016-10-16 12 views
1

OpenJDKコンパイラでコンパイルされたJavaラムダ式のバイトコードを掘り下げました。ラムダ式のバイトコードはコンパイラ/ランタイムによって異なるのですか?私は、私の検査ロジックがプラットフォーム間で動作するかどうかを知りたいのですが。Java 8ラムダ式バイトコード一貫性

+2

正確に何を点検しようとしていますか?特に、Groovy 3コンパイラがJava 8スタイルのlambdaをサポートしている場合、異なるバイトコードを大幅に*発生する可能性が高いことに注意してください。 – chrylis

+0

openjdkのjavacは現存する唯一のJavaコンパイラではありませんが、ecjは一般的に使用されている代替例です。 – the8472

答えて

4

ラムダのバイトコードはコンパイラ/ランタイムによって異なる場合がありますか?

理論上はい。 JLSは、特定のバイトコード/シーケンスを生成する必要があることを指定しません。

既存のJava 8 & Java 9コンパイラによって生成されたバイトコードがどれだけ異なるかを確認する必要があります。 (まだ書かれていないコンパイラ/バージョンについては教えてくれません)

私の検査ロジックはプラットフォーム間で動作するかどうか知りたいのですが。

解決策は、包括的なテストケースを構築し、サポートしたいすべてのJavaコンパイラによって生成されたコードに対して実行することです。

要するに、それをテストします。

関連する問題