在学习和编程中,我们经常使用到第三方框架或工具集(以下都简称为框架),需要引入其JAR包,大部分情况下能熟练使用就足够了。但是,对于一些经典的框架,我们必须深入了解一下其运行机制及其实现过程。学习其思想和实现机制的最好方式就是阅读源码。
大部分的开源项目,其在提供用户JAR包时,与此同时也会发布对应的码源和使用文档,对于这类项目,学习源码不是事。
对于只提供JAR包的框架,我们只有字节码,没有源程序,这时反编译工具就可以派上用场了。
何谓反编译?根据百科词条: 计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。在java中,反编译就是根据.class文件(字节码文件),生成对应的.java文件(源代码文件)。
当然,有些商业的JAR包是经过加密处理的,反编译是无法真实或接近还原其源代码,这不是本文所论述的范畴。
Java反编译的工具很多,有Java Decompiler(JD)、Joint Application Development(JAD)以及各种延伸的插件。JadClipse是Jad的Eclipse插件,是一款非常实用而且方便地Java反编译插件,能直接在Eclipse中查看.class文件还原的.java文件,下面就一步一步显示如何在Eclipse中设置反编译。
JAD下载地址:http://varaneckas.com/jad/
下载后解压到某个目录,解压后包含了一个jad.exe文件和一个Readme.txt文件,我们需要用到的是jad.exe。 本人解到的目录是E:\JavaFrameWork\java反编译。
Jadclipse下载地址:http://sourceforge.net/projects/jadclipse/
下载的是一个JAR文件,在撰写本文时,其文件是net.sf.jadclipse_3.3.0.jar
下载完成后将其拷贝到Eclipse目录下的plugins目录中。
启动eclipse(如果您在完成第二步之前已经打开了eclipse,需要重新启动Eclipse)
Windows--> References --> Java -->JadClipse 设置Path to decomplier成Jad.exe的完整路径。
Windows -->References --> General -->Editors --> File Associations设置.class文件关联的编辑器成JadClipse Class File Viewer
这样,我们在项目中引入了JAR后,在Eclipse中.class文件就可以直接查看其对应的源代码。