Java - Porque las librerias están en formato jar

 
Vista:

Porque las librerias están en formato jar

Publicado por Jordi (135 intervenciones) el 11/08/2017 17:03:42
Hola chicos,
Hoy me desperté con curiosidad de ver como funcionaban las librerías de java, en especial Math, pero me he llevado un disgusto cuando mirando entre los archivos del API me he dado cuenta que están compiladas. Y no solo el API de java, sinó que también las de JSoup :(
¿Alguien me sabría decir el motivo de esto?
¿Cómo java me permite acceder a métodos de una clase que ya está compilada y separada en 4 ficheros.class distintos? Además que el compilador se da cuenta incluso de si existen o no los métodos llamados de la librería...
Y lo último:
¿Es legal decompilar las librerías para ver como funcionan y aprender un poco más?
¿El API de java está encriptado para que no sea decompilado con tanta facilidad?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Porque las librerias están en formato jar

Publicado por Tom (1831 intervenciones) el 11/08/2017 18:21:26
Bueno, el algoritmo de compresión que usaba "zip" era libre ... y es bastante más cómodo usar un único fichero .jar que miles de .class ... (igual que en c es más fácil usar un .a que miles de .o).

https://www.google.es/search?q=java+class+loader

No tienes que tomarte la molestia de decompilar los .class del JRE ... el código está en la web, o en:

http://openjdk.java.net/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Porque las librerias están en formato jar

Publicado por Costero (148 intervenciones) el 16/08/2017 04:19:07
>>>> archivos del API me he dado cuenta que están compiladas. ¿Alguien me sabría decir el motivo de esto?
Por que la JVM (Java Virtual Machine) solo trabaja con classes compiladas.


>>>> ¿Cómo java me permite acceder a métodos de una clase que ya está compilada y separada en 4 ficheros.class distintos? Además que el compilador se da cuenta incluso de si existen o no los métodos llamados de la librería...
Java no te permite. Java es el lenguaje. El JVM cuando carga las classes compiladas y ve los metodos existentes, etc.

>>>> ¿Es legal decompilar las librerías para ver como funcionan y aprender un poco más?
Si es legal (que yo sepa). Por ejemplo el IDE que yo uso IntelliJ me decompila las classes cuando yo trato de leer un classe compilada.
Otra cosa jar, war and ear son formatos Zip.
Algunas librerias usan lo que llaman "Obfuscar" que no es exactamente encryption pero hace que la classe al decompilar no pueda ser leido.


>>> ¿El API de java está encriptado para que no sea decompilado con tanta facilidad?
No creo que este encryptado o obfuscado, yo lo decompilo siempre. Ademas como te dijeron arriba Java es open source puede bajar el codigo source.

Con respecto a Jsoup, que es open source, puedes bajar el codigo source aqui: https://jsoup.org/download, y bajar jsoup-1.10.3-sources.jar optional sources jar


Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar