The javax.Servlet Interface consists of a method called init(ServletConfig sc), which is used to save the ServletConfig object in the Servlet so that you can access some init parameters and so on.
The GenericServlet implements the javax.Servlet which means that it has to implement the init(ServletConfig sc) method. As a convenience to the Servlet programmers (like us) they dicided to add a init() method.
When we write our own Servlet and we want to do some initialization we only have to override the init() method and all the default initialization (saving the ServletConfig object) is taken care of. GenericServlet.init(ServletConfig sc) is called by the servlet container and that method actually calls GenericServlet.init() method.