utilizar util una son sistema sirven que programar prestamo para libros librerías librerias libreria las importancia fuente cuales conjunto codigo clase bibliotecas biblioteca java compilation debug-symbols

util - ¿Por qué algunas bibliotecas de Java están compiladas sin información de depuración?



libreria java util (2)

Las opciones de compilación predeterminadas no incluyen información de depuración, debe indicar específicamente al compilador que la incluya. Hay varias razones por las que la mayoría de la gente lo omite:

  • Algunas bibliotecas se utilizan en sistemas integrados (como teléfonos móviles). Hasta hace poco, cada bit contaba. Hoy en día, la mayoría de los móviles vienen con más memoria que todas las computadoras que tenían en 1985 juntos;)
  • Cuando se compila con la depuración activa, el código se ejecuta un 5% más lento. No mucho pero de nuevo, en algunos casos cada ciclo cuenta.
  • Los Desarrolladores Senior de hoy nacieron en un momento en que 64KB de RAM era enorme. Ayer, agregué otra unidad de 2TB a mi servidor en el sótano. Son 7 órdenes de magnitud en 25 años. Los seres humanos necesitan más tiempo para adaptarse.

[EDITAR] Como señaló John, el código de bytes de Java ya no está optimizado (mucho) hoy en día. Por lo tanto, la salida de los archivos de clase será la misma para ambos casos (solo el archivo de clase con información de depuración será más grande). El código se optimiza en el JIT en tiempo de ejecución, lo que permite que el tiempo de ejecución optimice el código para la CPU, la memoria (cantidad y diseño), etc.

La penalización del 5% mencionada se produce cuando ejecuta el código y agrega las opciones de la línea de comandos para permitir que un depurador remoto se adjunte al proceso. Si no habilita la depuración remota, no hay penalización (excepto para la carga de clases, pero eso solo ocurre una vez).

Recientemente he notado que hay algunas bibliotecas java (JDK, joda time, iText) que se compilan sin parte de la información de depuración. Falta la información de la variable local o faltan tanto la información de la variable local como los números de línea.

Hay alguna razón para esto? Me doy cuenta de que hace que el código compilado sea más grande, pero no creo que esa sea una gran consideración en particular. ¿O simplemente se está compilando con las opciones de compilación predeterminadas?

Gracias.


Probablemente el tamaño de la instalación. La información de depuración agrega sobrecarga a los archivos jar que probablemente a Sun no les gustó.

Tuve que investigar un problema de Java Web Start recientemente, no hay información de depuración disponible, por lo que agregar un seguimiento completo a la consola Java y descargar el código fuente ayudó a algunos, pero el código está bastante enredado, así que me gustaría una versión de depuración.

El JDK debe compilarse con información de depuración COMPLETA en todas partes.