Недавно я видел поведение, которое заставило меня спросить об этом на SO. Я надеялся, что люди тоже смогут поделиться своими выводами.
Будет ли файл класса (байт-код) отличаться, если один и тот же файл скомпилирован (без изменений) с использованием JDK 1.8 u66 и JDK 1.8 u121? Я имею в виду следующее:
1) Я компилирую приложение с помощью JDK 1.8 u66 2) Я вношу изменения в 1 или 2 файла и перекомпилирую с помощью JDK 1.8 u66.
Могу ли я ожидать, что некоторые из неизменных файлов классов будут иметь другое двоичное содержимое, даже если они не изменились?
Моя причина в том, что когда я взял хэш файла, который не был изменен в рамках моих шагов выше, они имели одинаковый размер на диске, но хэш-код был совершенно другим. и я использовал Winmerge, чтобы сравнить эти две версии, где размер был указан как идентичный, но двоичное содержимое было другим. Ниже приведено то, что я сравнил с помощью Winmerge (элемент, отмеченный синим цветом, был чем-то связан с моим исходным именем, поэтому мне пришлось его замаскировать), но, пожалуйста, обратите внимание на разницу между 208 и 248.
Ожидается ли это? если да, может ли кто-нибудь указать мне на ту литературу, которая объясняет это?
С уважением,