What's NewIf you have previously used JRat, you will definitely notice some differences in recent versions. During JRat's history, it has become clear what features provide the most value, and those features have been focused on.
No Injection StepJava 5 has given us JVMPI, which provides a super easy way to hook into a JVM's class loading infrastructure. The result is that you can "install" JRat now with a single command line argument. Nice.
File ConfigurationPrevious versions of JRat made extensive use of system properties to control features, though an XML file could be optionally used. This model has been replaced with an jrat.xml file that is always used. If this file is not found at statup, a default file will be created and used.
No Separate DownloadsPreviously, it was necessary to download BCEL to use JRat. While JRat still depends on several other open source projects ( ASM and SwingX ), these libraries are now embedded within the JRat jar. This is done with a fine open source tool called Jar Jar Links.
Focus on the TreeHandlerThe most useful handler has always been the TreeHandler, but several others were implemented as well. Much more attention is now being paid to the TreeHandler, which is provides about 90% of JRat's value. You can still write your own handlers, or configure multiple handlers, but the TreeHandler has been promoted to first class status. This is also true of
Focus on Bytecode InstrumentationBytecode injection is the preferred way to use JRat. Support for programmatic instrumentation and possibly AOP will be phased out.
ASM is in, BCEL is outJRat now uses ObjectWeb's ASM library to perform bytecode injection. ASM fully supports the Java 5 class file format.
HTTP ServerWhile still under active development, the built in HTTP server has been vastly improved upon. It is expected that JRat will begin taking greater advantage of this interface.