Tiles is a superset of the template. Before Struts 1.1, there are only tiles. After that, template was introduced as a branch of tiles.
Template is easy to use. Tiles is more complicated and requires a deep learning curve. Tiles allows greater control over our containers (collecting units) by allowing us to pass parameters. This is quite useful when we want to make our templates and containers dynamic. Furthermore, Tiles integrates well with Struts action components.