difference between javaassist and cglib

2019-02-18 17:10发布

问题:

I learning hibernate and I understood that hibernate has stopped using cglib and switched to javaassist.

I also understood that javaassist and cglib are used for proxy generation.

so I was wondering how these two works and which one is better? What is the difference between their working style?

回答1:

Cglib is no longer actively maintained and the library's developers would not even apply provided patches: https://jaxenter.com/hibernate-to-deprecate-cglib-as-bytecode-provider-102106.html

Additionally, javassist offers an API for modifying classes and not only for subclassing them. These APIs allow also for byte code-level manipulation while cglib only allows for several hardcoded interceptions.

Finally, there is a minor performance difference. For an overview, see this table on a third byte code manipulation framework, Byte Buddy, that I created: http://bytebuddy.net/#/tutorial