System.get_env vs. Application.get_env

What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.