Gar keine. Seiten und "Programmiersprachenbücher" vermitteln allesamt dem Lernenden nicht, was relevant ist. Seiten wie CodeWars machen Spaß, und sind was zum knobeln, aber Programmdesign und Algorithmik bringen auch die dir nicht bei, schon weil die Aufgaben nicht umfangreich genug sind. Ultimativ hilft nur ein solides theoretisches Fundament(und damit meine ich NICHT Sprachmittel, sondern Informatik und Softwareentewicklung), und vor allem Erfahrung, die nur aus Programmieren und Code lesen über Jahre kommt. Ich würde daher damit anfangen Programmieren zu lernen( dafür gibt es zum Glück super Bücher, kein einziges davon verwendet dafür Java
), die konkrete Sprache auf bekannte Konzepte anzuwenden ist dann einfach, und dann musst du wirklich nur noch Sprachmittel lernen( die bei den imperativen Sprachen eigentlich alle gleich sind und nur manchmal anders heißen, Java, C, Python und Basic sind nicht halb so verschieden, wie man vielleicht glauben würde). Dafür kann ich in der Tat Bücher empfehlen, ein paar meiner Topempfehlungen davon sind "How to Design Programs" von Felleisen et.al., "Structure and Interpretation of Computer Programs"(Abelson & Sussman) und natürlich "The Art of Computer Programming" von Donald Knuth. Dazu hilft vielleicht noch ein klassisches Algorithmik-Buch, wie "Algorithms" von Sedgewick oder "The Algorithm Design Manual" von Skiena, und , weil du definitiv auch gleich von Beginn an lernen willst richtig zu arbeiten ist es auch eine gute Idee, die Nase mal in Kent Beck's "Extreme Programming"-Bücher zu stecken. Hab ich erwähnt, dass gutes Englisch in Wort und Schrift eine Grundvorraussetzung für einen Programmierer ist?
Java-spezifische Bücher, die dir das eigentliche Programmieren aber halt nicht beibringen gibt es viele, wirklich empfehlen kann ich keines davon, aber hier ist die generelle Regel dass deutsche Bücher schlechter sind als englischsprachige.
Wenn es dann ums üben und tatsächlich Code schreiben geht bringen solche Minimalrätsel zum Lernen rein gar nichts, alles wichtige (Entwurfsmuster...) kommt da nämlci hnicht vor. Es ist eine gute Idee, dich da in ein Open-Source-Projekt einzuklingen und dir dort einen Mentor zu suchen, so lernst du halt gleich unter realistischen Bedingungen zu coden, statt Rätseln die so nie im realen Leben vorkommen. Direkt eigene Projekte starten ist da oft keine so gute Idee, denn da neigt man dazu, sich schlechte Angewohnheiten zuzulegen, die man nur extrem schwer wieder los wird.
MfG,
Lowl3v3l