What are the ways to render a 2d game?

Forgive my ignorance guys, I’m completely lost and afraid! After reading and watching tutorials, I concluded that there are many ways to render and manipulate an image on the screen, some use JPanel and others Canvas. Some use BufferedImage and some use vectors (draw.fillRect), some use paint or paintComponent.

Can you please list down the ways 2d java game programmers do to render images for their games? What are the recommended way by Oracle? What are their pros and cons? There are just so many ways to implement this (rendering an image)! Can someone please enlighten me?