Здравейте, чудех се колко файлове на Java клас се променят в различните компилатори. И така, колко се променят действителните байтове, ако .java файлове се компилират от Sun JDK 1.4, 1.5 1.6 или дори IBM JDK. Знам, че файловете на класа могат да бъдат различни по отношение на информацията за отстраняване на грешки и обфускацията, но нека приемем за въпроса, че тези опции са еднакви, така че информацията за отстраняване на грешки е включена, без обфускация. Ако стартирам MD5 или SHA-1 има върху .class файл, който е компилиран от JDK 1.4, хешът ще бъде ли различен, ако го компилирам в JDK 1.5, но насочен към 1.4, какво, когато насочвам към JDK 1.5?
Също така свързано с това, променя ли се двоичният файл на клас файл, когато се използват различни зависимости, или може ли двоичният файл на клас файл да се промени въз основа на неговите зависимости?
И не на последно място има ли програмни начини за анализиране на метаданните на .class файл, за да се идентифицира версията на компилатора и/или превключвателите, които са били използвани при компилирането му?