online - java decompiler portable
¿Por qué es tan fácil descompilar Java Code? (2)
Debido a que el código de bytes de Java es más cercano (más similar) al origen que al ensamblaje.
En particular, los archivos .class
incluyen metadatos para nombres de clases, nombres de métodos, tipos de campos y parámetros, etc.
Todo lo que debe hacer un decompilador Java (o .Net) es mirar las instrucciones en cada cuerpo de método y convertirlas en las construcciones sintácticas apropiadas.
Por el contrario, los lenguajes nativos como C ++ no incluyen ningún metadato en absoluto, por lo que el descompilador necesita reconstruir todo .
Entonces me acabo de dar cuenta de lo fácil que es descompilar mi código Java. He estado buscando por la red y parece que no puedo entender POR QUÉ es tan fácil. Cada vez que busco algo así como "¿Por qué puedo descompilar archivos .class
?" o "¿Por qué Java descompila tan fácilmente?", todo lo que obtengo son enlaces a un software que puede fácilmente deompilar mi código. Así que recurro a ti StackOverflow: ¿por qué Java se puede convertir de nuevo en un código fuente fácil de leer mientras que C ++ y otros lenguajes no son muy amigables con la descompilación?
Gracias
Java se compila en una forma intermedia, bytecode JVM, que conserva una gran cantidad de información contenida en el código original de Java. Un lenguaje como C ++ se compila en código ensamblador, con un aspecto muy diferente del código original, y es, por lo tanto, más difícil de revertir.