Jaka jest różnica między dynamicznym proxy JDK a CGLib?

W przypadkuWzorzec projektu proxy, Jaka jest różnica pomiędzyDynamiczny serwer proxy JDK oraz API dynamicznego generowania kodu innych firm, takie jakCGLib?

Jaka jest różnica między używaniem obu podejść i kiedy należy preferować jeden nad drugim?