FacesContext can be accessed from all over JSF as a static class. It provides access to the JSF APIs and functions, such as the message stack, which is compiled throughout the Faces request life cycle.
ExternalContext allows developers to work with the servlet API, as they are used to working with JSP and Struts. However, it is recommended that you use FacesContext for as long as possible.
FacesContext and ADFFacesContext are static classes.