Using Hooks you can:
- provide a portal configuration (portal-ext.properties)
- define new or modify existing language key (language.properties)
- modify portal JSPs
- define servlet filters
- implement post indexers
- override Liferay-Services (especially by implementing a ServiceWrapper, like for example UserServiceWrapper)
Using an ext-Plugin it is possible to:
- override any class inside Liferay (classes inside portal-iml.jar or portal-util)
- modify Liferay's core portlet's desciptors and configurations (like portelt.xml, liferay-portlet.xml,...)
Ext-plugins are more powerful than hook-plugins BUT ext-plugins are not hot-deployable, an can not be undeployed! If you want to undeploy an ext-plugin, it is recommended to start with a clean liferay instance!