Codegym is excellent for learning the Java programming language. Being comfortable with thinking and programming in Java, the natural next step would be to study the JVM and know the machine that runs Java.