Разные компиляторы Java (если поставщик отличается) создают разные байт-коды

Учитывая одну и ту же основную версию, скажем, Java 7, различные компиляторы Java (например, точка доступа Oracle, JRockit или IBM J9 и т. Д ...) компилируют данный файл исходного кода Java в один и тот же байт-код?

СканированиеСпецификация языка Java 7 Казалось бы, речь идет о семантике языка, а не о преобразовании кода в байт-код.

Этот вопрос не совпадает с тем, что разные версии major.minor для данного поставщика выдают один и тот же байт-код. На этот вопрос уже дан ответВот - сможет быть.

Из следующегоответ вЯвляется ли создание файлов классов Java детерминированным? и комментарий к этому ответу, который относится кэто вдоль стороны два ответа на вопрос Major.minor выше1 а также2Я понимаю, что ответ на мой вопросДА.

Выдержки для вышеупомянутого:

JLS оставляет много деталей реализации, чтобы варьироваться от одной реализации к другой.

а также

Однако JLS не определяет отображение 1: 1 из исходного кода в сгенерированный байт-код, поэтому не следует полагаться на тот же байт-код, который будет сгенерирован.

Еще комментарийВот подразумевает по-другому:

Это компилятор, то есть javac, создающий код с использованием BLAH BLAH BLAH. Это не имеет ничего общего с HotSpot.

Это подразумевает, что при наличии кода X все реализации javac (одна и та же версия / разные поставщики) должны создавать один и тот же байт-код Y.

Я не могу понять, как это так, но я не могу проверить, что это не так (или то, что я думаю, см. Выше), является правильным.

Можно ли дать окончательный ответ?

Ответы на вопрос(3)

Ваш ответ на вопрос