ZipSrc:一个用于代码调试的好工具
dev.java.net确实是个好东西,很多的JCP规范都可以在上面找到源代码。很多的规范,说实在的,如果只是去看PDF的话,捉摸几个月,也是很难理解的,而如果实际上动手使用一下,就能够有助于理解了。
不过,大部分的API如果单纯只是从client使用的角度上去看待的话,往往会有一种雾里看花的感觉,对其设计思想、工作原理很难去进行把握,象我最早 去学习JSF1.0的时候,真的不太理解这玩意是怎么工作的,啃了几遍的Spec,也不太得要领,最终放弃了对JSF的学习。
所以,当dev.java.net上可以发布这些项目的源代码时,我觉得可以通过编写试验代码,再通过调试的方式,理解JSF等内部的工作原理、设计思路 时,我觉得再去理解JSF就非常easy了。所以从这个角度上来看,再好的文档也只能是code的一个补充,没有固然不行,但过分的强调文档,而没有好的 代码(设计清晰、设计实用)的话,刚看文档是很难有收获的。
不过,目前,大部分的opensource项目都存在一个问题,那就是大部分的build过程还是很复杂,像我把javaserverfaces- source编译通过,居然花费了将近一个下午(其中一个library的路径拼写错误,导致javac老是抱怨找不到类,我还以为是ant的错误呢?这 个拼写的问题就花了我2-3小时,除了真是不值以外,应该还是吃一鉴长一智啊,不要太相信自己,很多复杂的问题可能仅仅是简单的拼写错误导致的),很少是 直接与IDE集成的。
从开发的角度上看,我最欣赏的就是eclipse的项目build模式了,1步搞定,CVS CheckOut,所有的build自动搞定,最多加一个ant做点deploy的事情。而且调试非常方便。可惜的是,要在eclipse中对这些项目的 源代码进行跟踪调试的话,设置还是很复杂的,尤其是如果有很多的项目依赖的话。
为此,我设计了ZipSrc,工具很简单,就是在命令行上给定包含项目源代码的目录,一般的,就是项目的root目录,然后,再给定一个jar文件名,这个工具自动的搜索源代码目录,将所有jar中的源文件package到一个对应的-src.zip文件中。
有了这样的-src.zip文件后,我们就可以很简单的在eclipse中,将这些-src.zip文件绑定到.jar的源代码设置上,或者直接将这些 zip文件加入到debug的源代码路径中来,这样,就可以很简单的进行调试了。与那种需要修改ant文件,生成对应的-src.zip的模式相比, ZipSrc最大的优点就是简单,基本上不用理会ant中的复杂的配置,而且对大部分的opensource项目,它都能能工作得很好。
一个想法是:Java应该建立一个规范,使得.jar和-src.zip结合得更为自然。曾经有人提议直接把源代码编译到class的attribute 中,斯如是,那么调试就更为方便了。而且opensource的项目缺省应该发布的就是有src.zip的jar,并且使用调试的选项进行编译,不必过分 在意jar的大小,实际上,如果JVM工作在运行模式,这些调试信息理论上不应该对运行速度有任何的影响。