I have search and fetch the following information .
Please add your Information 
h:commandbutton is same as a4j:commandButton the only difference is a4j:commandButton have  extra ajax request. 
a4j:commmandButton is not used for page navigation. 
h:commandLink is same as a4j:commandLink  the only difference is a4j:commandLink have  extra ajax request.
I want to know when we have to use h:commandButton ,a4j:commandButton ,h:commmandLink and a4j:commandLink. 
What is the difference in h:commandLink and h:outputlink ?
h:commandLink have submit action whereas h:outputlink not. 
h:outputLink is used when we want to navigate from one page to another. 
but for navigation we can use h:commandlink also then what are the use of h:outputLink?
 
     
     
    