The Tag interface is the main interface in custom tags
we can make our own custom tag by implementing this interface

When the container evaluates the custom tag, it first pass the PageContext object of the current page and the parent Tag of this custom tag.
Then the container calls the doStartTag that decides to include or skip the body of the tag then it calls the doEndTag that decides to continue parsing the rest of the page or to stop.
The tag is used many times by the container before it got out of service then the containers calls release method.