Hello! In order to help you guys determine what I should start with, I'll give you a little background knowledge of myself. I am currently a high school senior planning to go into college for Computer Science. I absolutely love programming, and am rather known around my school as being the "best" programmer. This year we began learning Java, and due to my ease of learning the language and comprehension of doing so, I finished my first two semesters in the first semester of the class.
My programming teacher allowed me to go into independent study for the rest of the year, and I chose to do game development with Java. Game development had always been my aim but I could never really grasp the concepts behind it. Admittedly, I'm still short when it comes to knowledge on the topic.
I've searched around places, but I'd like to be pointed in the right direction about where exactly I should start learning these things. My teacher does have the book "Killer Game Programming in Java", but it was written in 2005 and I remember reading that it uses Java2D instead of a library of some sort, which leads me to my next question...
I understand that a library is used in order to make game programming easier, but what exactly is the difference between a library and an engine?
My goal is to spend this semester learning the game development process of 2D games in Java, and submit a decently-polished 2D game (Possibly a small RPG or platformer), as my final project. I intend to pursue a career in game development, and I am actually rather excited to start learning these things. I chose Java as my language of choice because I am familiar with it and because my projects need to be written in Java in order to earn credit for this year's course, in case anybody was curious.
Thanks in advance for any help I may receive!