Amateur Looking For Advice On Where To Go Next
I'm not sure Java is going anywhere so I support your idea of going away.
I honestly wouldn't start from C++ nowadays. C# and JavaScript are better candidates in my opinion for the time being.
I'm pretty sure UE4 allows some fairly extensive scripting without even writing code (through Blueprints). I strongly suggest to play a bit with some engine, maybe only from a level design perspective. It allows you to keep a view of the target at an higher level. It likely doesn't make you a better programmer but if you want to ship a whole product, you must think at the whole picture.
Previously "Krohm"
As with anything, it heavily depends upon what you want to be doing in the industry.
If you want to work on Indie/Mobile/Tools/Scripting [basically work on something in an engine or browser based games or auxillary tools], then C#/Javascript are great canidates!
However, the industry standard is C++ and that is not going to go away anytime soon (Hell, I know alot of people here that would prefer to go to C).
Based off what your saying, it sounds like your not all that interested in using an Engine, so although it certainly could be useful to poke around, isnt at all required. If you are having difficulty understanding how everything falls together, than it may be useful.
Ultimately it comes down to whether you want to make a game, or want to make some dope ass tech.
If you want to make a game, then you may want to check out UE4, as your able to get a game started almost immediatly, the engines source is available so theres functionally zero restrictions if you have the wherewithall to modify it to what you need (which you really shouldnt be needing), and all the gameplay code is written in C++ and not some proprietary scripting language (RIP Unrealscript). If you put the effort into it, this will give you experience with C++ and light, general knowledge of development.
If you know you want to make sweet ass tech, or focus on a specialty down the road (Physics/AI/Graphics/ etc..) [Assuming you have light knowledge of all the different aspects of development already], then you may want to just focus on that stuff, starting with the foundations and building your way up. So if you are really into physics, rather than just including some random physics library, start a fresh one from scratch so that you will have a deeper understanding of all the aspects that go into it and how common problems can be sovled. (of course research general knowledge and common issues and how existing libraries do it so that your not just blindly spewing crap). Even if your not sure what you want to focus on, but you know you want to focus on the technology, then may want to try working on your own Engine (many people will say that its a bad idea, that true if you want to make games, otherwise they are full of shit.). Even though it likely wont go anywhere, you will learn ALOT about things that you otherwise wouldnt even know about if you were using an existing engine or just making a quilt of different libraries (You dont know what you dont know).
Of course, if you want to use C++, you will need to learn C++ first. Spend a bit getting comfortable with the language before you jump too deep into gamey stuff, if you like books then the book you talked about should be good enough to kickstart you. It may also be good to work on a personal simple library for an area your interested in (simple physics, or rendering etc), since the fundental understanding of concepts and math behind it supercede whatever language its in, so even though the code you are writting will be obstensibly shit [all learning code is], you will still be learning alot of useful concepts, and getting more experience with the language.
If you want to do C++, then start doing it. Having a finished Java Game wont help you get a position that requires C++ knowledge if you dont have a proper understanding of the language. At least where im at, we look if the applicant has the ability to perform whatever role they are applying for. If hiring for a "Junior Graphics Programmer" position, someone with a rendering demo with techniques x,y,z [buzzword,buzzword,latest trend technique] is far more enticing than someone with a fully completed and fleshed out java game, as it simply isnt relevant and doesnt tell anything about actually having any required knowledge.
TLDR; Do what you want to be doing. If you want to make java games, then make java games. If you want to make normal people games, then use a game engine [UE4]. If you want to write Physics Code in C++, than write Physics Code in C++, if you want to work on generalist-engine level stuff, then start working on an engine.
Its understandable to think stuff like "Doing x,y and z will look good" or "I should start with q THEN do w THEN do z". Ultimately at the end of the day, you either know what you need to know or you dont. Try to jump into the deep end and see what happens, if you find yourself drowning, then post here "Help me im droning when trying to do x,y and z". Then people can give you more specific and relevant advice, as its difficult with such an open ended questions.
General Disclaimer: take my advice with 4 grams of salt.
Thanks for the responses, guys!
@Krohm I actually really like what you said about using UE4 from a level design perspective and not necessarily jumping into the scripting side yet. I hadn't really thought about doing things like that, as obvious as it may be. My design skills are middle-ground and my art/modeling skills don't exist, so practicing those would be in my interest. Thinking as a whole picture makes a lot of sense.
@theflamingskunk Thanks for such a detailed response! As for what I would want to end up doing, I think I'd like to end up as a gameplay programmer, someone who programs the mechanics and gameplay for the game and not necessarily get too much lower, like graphics and physics. However, I would still definitely like to learn them and gain some general knowledge of them so I can understand them and how they work. I actually have a little bit of experience with C# and XNA, before it was dead - RIP. It was an okay experience. I know MonoGame replaced it, so I've kept my eye on it a little, but it seems to still be a bit too early to rely on it heavily as a framework. I also like what you said about working on a simple library for a specific topic as that could drastically increase my understanding of the topic. I'll definitely keep that in mind and maybe give it a try soon.
Also, as much as it hurts to hear, you're very right about the Java not helping when looking for a C++ position hah :P. Thanks for the perspective from your work, that helps a lot more than you may think.
The advice from you guys has definitely cleared up a lot of things and brought some new perspectives for me to consider.
I think the best route for me right now might be to start learning C++ and practicing with that while also practicing my design skills in UE4, and once I've gotten a grasp on C++, combining the two and working in UE4 to create an actual game.
Thanks again, guys.