在Soot的下载页面:http://www.sable.mcgill.ca/soot/soot_download.html中我们可以看到,Soot实际上是依赖于两个框架:Jasmin和Polyglot。对于这两个框架(或软件),我之前不是特别了解,但是在很多地方都可以看到Polyglot,例如,abc(The AspectBench Compiler for AspectJ)就是基于Soot和Polyglot的(怎么这些框架还循环调用?)
今天抽了些时间简单搜索了一下,找到了上面两个框架的主页,了解到:
前者最早是基于这本书:Jon Meyer. Java Virtual Machine. O'Reilly Associates,1st Edition March 1997. ISBN 978-1-56592-194-8,为了让读者更好理解JVM,设计的教程性质的软件,其主页是:http://jasmin.sourceforge.net/这里我也不多做解释,大家可以自行到主页参考。
后者是Cornell(康奈尔大学)计算机系的一个研究项目,其主页在:http://www.cs.cornell.edu/projects/polyglot/大家也可以自行参考。
准备这两天再看看http://www.bodden.de/clara/documentation/how-to-implement-a-typestate-analysis/基于Clara的typestate analysis,似乎Clara也用到了Soot和Polyglot,看来,Polyglot也是应用非常广泛的一个框架,应该好好学习下。
PS:今天看到McGill大学的Sable实验室开发的软件中还包括了Dava这样一个Java反编译软件,这个反编译软件是网上流传的3大反编译软件之一(可参考:http://wenku.baidu.com/view/034cfd3143323968011c92bf.html),顿时觉得Sable实验室的实力还是非常强的,而且他们对研究项目的坚持和执着,非常值得我们学习。)