G.Bordel >Docencia >TAP Técnicas Actuales de Programación (curso 2010-2011)
desprotegido Intro. desprotegido Temario desprotegido Calendario desprotegido RPF desprotegido Recursos protegido Práctica protegido Gest. Alum.
tema_anterior Tema 2: Uso del entorno de desarrollo tema_siguiente
  1. Ejemplo inicial: el programa "HolaMundo".
  2. Bibliotecas de clases: su estructura.
  3. Compilación y ejecución.
  4. Generación de documentación.
  5. Desensamblado y decompilación.

2.5- Desensamblado y decompilación

Los ficheros de clase (los compilados) contienen el código para la máquina virtual. En este sentido son código ejecutable y puede "desensamblarse" para ser leido. Esto se consigue mediante el mando javap. En la siguiente ventrana puede verse el resultado de aplicar el desensamblador a una de las clases de la aplicación SKTLSSJapp que ya se ha utilizado antes como ejemplo.


Resultado de "javap -c SKTLSS.Vocabulary".

Esta utilidad puede ser fundamental para quienes esten implicados en aspectos relacionados con los compiladores o con el funcionamiento de la máquina virtual (en combinación con el debugger jdb). Tambien es de interés en actividades de ingeniería inversa, aunque para estos casos es digno de mención el hecho de que una clase se puede no solo "desensamblar" sino que incluso puede "decompilarse". Aunque parezca extraño, es posible pasar del programa compilado al fuente gracias a las capacidades de "introspección" que tienen las clases en Java. El resultado de la decompilación será semejante al programa fuente excepto en cuestiones de formato y en la ausencia de cometarios.

Con el kit de desarrollo de Java no se proporciona ningún decompilador, pero es facil encontrar varios en Internet. A continuación se muestra el resultado de aplicar uno de ellos a la clase AN1usada anteriormente como ejemplo.

OriginalDecompilada
Código original de una clase y versión obtenida por "decompilación" .

Siguiente Tema: 3- Elementos básicos del lenguaje


Plataforma de soporte a curso y contenidos (c) German Bordel 2005.