This is much too broad for a PF discussion. You will need to take the time to learn the basics of each of these for yourself, and then come back with a more specific question about the differences between them when you find something you don't understand.