Идентичные исходники Java компилируются в двоичные классы
Может кто-нибудь объяснить, как идентичные исходники Java могут в конечном итоге компилироваться вbinary файлы разных классов?
Вопрос возникает из следующей ситуации:
У нас есть довольно большое приложение (более 800 классов), которое было разветвлено, реструктурировано и реинтегрировано обратно в магистраль. Перед реинтеграцией мы объединили магистраль в ветку, что является стандартной процедурой.
Конечным результатом был набор каталогов с источниками ветвлений и набор каталогов с магистральными источниками. Используя Beyond Compare, мы смогли определить, что оба набора источников были идентичны. Однако при компиляции (same JDK используя maven, размещенный в IntelliJ v11), мы заметили, что около дюжины файлов классов были разными.
Когда мы декомпилировали исходный код для каждой пары очевидно разных файлов классов, мы получили один и тот же исходный код Java, поэтому с точки зрения конечного результата это, похоже, не имеет значения. Но почему некоторые файлы отличаются?
Благодарю.
Дополнительная мысль:
Если maven / javac компилирует файлы в другой последовательности, может ли это повлиять на конечный результат?