I have learn that in order to use any other exported module, we need to specify that module as a requires: 
module mymodule{
       requires othermodule.xyz;
}
When othermodule uses on thirdmodule  and mymodule needs that as well,  othermodule should define transitive dependency like this:   
module othermodule {
       requires transitive thirdmodule  
}
However, I have seen many sites that use the public keyword for this situation:
module othermodule {
       requires public  thirdmodule  
}
What is the difference there is between the two forms; i.e. requires public and requires transitive?
 
     
    