Quote:
|
Originally Posted by DaWei
That's why it's inferior, when push comes to shove. Any implementation which produces even byte code, tops, isn't going to include the labels which are programmer-helpful. I can show you dozens of pieces of executing code which cannot be traced back to high-livel constructs. That says all that there needs to be said about the subject. Reasonable and accurate decompilation presupposes worthless inefficiencies. If that flips your skirt, so be it.
|
I expect that one reason Java is so straightforward to decompile is because the designers wanted to defer most optimizations until the app gets deployed on the target machine. Some information, such as high-level looping constructs, might be helpful to the JIT compiler's optimizer. Why the hell they'd include other, irrelevant information is beyond me, though. Examples might include the original names of variables and references; very often, these names are a strong hint as to the object's purpose.