Actualmente estamos en el proceso de reescribir todo nuestro sistema de compilación para un proyecto grande (alrededor de 2000 archivos fuente) y se ha hablado de hacer una comparación binaria en los archivos para asegurar que todo sea correcto lo que conduce al siguiente pregunta: ¿Se garantiza que la salida de javac
sea la misma en todas las compilaciones o podría estar sujeta a cambios?¿El archivo de clase generado por javac es siempre el mismo?
Another question a entender que la piscina constante podría tener un orden diferente, pero asumiendo que son capaces de controlar el orden de los archivos de entrar en la llamada javac
¿Existe todavía un potencial de diferencias? Estamos usando Ant y Maven como parte de la construcción si eso también puede influir en las cosas.
No garantizado. En la práctica, probablemente sería idéntico si utiliza el compilador idéntico y la estructura JAR en tiempo de compilación, pero incluso cambios menores en el orden JAR, etc., podrían alterar el carro de manzanas. –
¿No garantizarían sus pruebas la equivalencia * funcional *, que es lo que realmente le preocupa? En cualquier caso, ¿por qué no probarlo y ver qué pasa? Si encuentra que las cosas se han reordenado, tendrá que entrar y hacer un análisis de código de bytes para ver si de todas maneras son equivalentes al código byte. –
Realmente me pregunto por qué tendrías que hacer una comparación binaria de las clases creadas? –