深入Java编程:Java的字节代码 - 编程入门网
ug 为true,“Debug mode is on”还是打印不出来。答案在字节编码中 。运行javap分析EternallyConstant类,可看到如下结果:
很奇怪吧!由于 有“ifep”检测log字段,代码一点都不检测debug字段。因为debug字 段被标记为final ,编译器知道debug字段在运行过程中不会改变。所以 “if”语句被优化,分支部分被移去了。这是一个非常有用的优化, 因为这使你可以在引用程序中嵌入调试代码,而设置为false时不用付出代价,不 幸的是这会导致编译混乱。如果改变了final字段,记住重新编译其它引用该字段 的类。这就是引用有可能被优化的原因。Java开发工具不是每次都能检测这个细 微的改变,这些可能导致临时的非常程序错误。在这里,古老的C++格言对于Java 环境来说一样成立:“每当迷惑不解时,重新编译所有程序“。 深入Java编程:Java的字节代码(6)时间:2011-09-04 comprg.com.cn四、利用第三方工具反编译Java字节代码 以上介绍了利用javap来 分析Java字节代码,实际上,利用第三方的工具,可以直接得到源代码。这样的 工具有很多,其中NMI''s Java Code Viewer (NJCV)是其中使用起来比较方便的一 种。 1.NMI''s Java Code Viewer简介 NJCV针对编译好的Java字节 编码,即.class文件、.zip或.jar文件。.jar文件实际上就是.zip文件。利用 NJCV这类反编译工具,可以进一步调试、监听程序错误,进行安全分析等等。通 过分析一些非常优秀的Java代码,我们可以从中学到许多开发Java程序的技巧。 NMI''s Java Code Viewer 的最新版本是4.8.3,而且只能运行在以下 Windows平台: l Windows 95/98 l Windows 2000 l Windows NT 3.51/4.0 2. NMI''s Java Code Viewer应用实例 我们以前面例举到的ExampleOfByteCode.class作为例子。打开File菜单 中的open菜单,打开Java字节代码文件,Java class files中列出了所有与该文 件在同一个目录的文件。选择要反编译的文件,然后在Process菜单中选择 Decompile或Dissasemble,反编译好的文件列在Souce-code files一栏。用NMI''s Java Code Viewer提供的Programmer’s File Editor打开该文件,瞧,源 代码都列出来了。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |