Source: http://eacademic.ju.edu.jo/k.darabkeh/Material/SP16/Chapter%202%20%E2%80%93%201%20-%20Java%20Overview.pdf