Ruby, Difference between exec, system and %x() or Backticks

What is the difference between the following Ruby methods? exec, system and %x() or Backticks I know they are used to execute terminal commands programmatically via Ruby, but I'd like to know why...