tabla programación programacion programa prestamo libro lenguaje desde codigos codigo cero calculadora basica amortizacion java optimization jar dependencies

programación - programa java prestamo



¿Cómo determinar qué clases utiliza un programa Java? (4)

¿Hay alguna herramienta que enumere qué y cuándo algunas clases son efectivamente utilizadas por una aplicación o, mejor aún, recorta automáticamente las bibliotecas JAR para que solo proporcionen clases a las que se hace referencia y se utilizan?


Para la mayoría de los casos, puedes hacerlo bastante fácilmente usando solo javac.

Elimina tus archivos de clase existentes. Llame a javac con el nombre de sus clases de entrada. Recopilará esas clases necesarias, pero no más. Trabajo hecho.



Sí, quieres ProGuard . Es un encogidor y ofuscador de código Java completamente gratuito. Es fácil de configurar, rápido y efectivo.


Tenga en cuenta que, como lo demuestra el problema de detención , definitivamente no puede decir que una clase en particular se usa o no. Al menos en cualquier aplicación moderadamente compleja. Esto se debe a que las clases no están limitadas en tiempo de compilación, sino que se pueden cargar:

  • basado en la configuración XML (por ejemplo, Spring);
  • cargado desde los archivos de propiedades (por ejemplo, el nombre del controlador JDBC);
  • agregado dinámicamente con anotaciones;
  • cargado como resultado de una entrada externa (por ejemplo, entrada de usuario, datos de una base de datos o llamada de procedimiento remoto);
  • etc.

Así que solo mirar el código fuente no es suficiente. Dicho esto, cualquier IDE razonable le proporcionará herramientas de análisis de dependencia. IntelliJ ciertamente lo hace.

Lo que realmente necesita es instrumentación en tiempo de ejecución sobre lo que está haciendo su aplicación, pero incluso eso no está garantizado. Después de todo, una ruta de código particular puede llegar a uno de cada 10 millones de ejecuciones debido a una extraña combinación de entradas, por lo que no se puede garantizar que esté cubierto.

Sin embargo, herramientas como esta tienen algún valor. Es posible que desee ver algo como Emma . Los perfiladores como Yourkit pueden proporcionarle un volcado de código en el que también puede hacer un análisis (aunque eso no captará los objetos transitorios terriblemente bien).

Personalmente encuentro poco valor más allá de lo que el IDE le dirá: eliminar los JAR no utilizados. Ir más detallado que eso es simplemente pedir problemas por poco o ningún beneficio.