One of the dificulties for the one who is new the coding or has lack of experience is to find valuable recources which might bring you a bit hand-on experiences. In the end you should put extra effort in order to cover many aspects being taught but if you do not know where to start, it is really a nightmare.
From my point of view, theory is an important aspect but if you do not combine it with a practice, you tend to forget it very quickly.
Therfore I advise using CodeGym.
CodeGym – is a structured gamified Java programming course which involves practice(the ratio might be calculated 80% of practice and 20% theory). It is very suitable for beginners and medium level Java students.

This platform is by far the best understandable and easy to grasp. I have been using it for a long time and it forces you to practice and let you think. More importantly you get used to coding starting from easy tasks to hard one.
One of the disadvantages or which I find as a barrier is to explanation of the tasks or better to say is that how the requirement is being explained. Mostly, you will find the task hard to understand but I see that some time to time it is being uptaded. In contrary, that should not stop you lear. In real life, hard problem awaits you as well.