I know it's not the same as pure Java, but I found that trying to build an Android App was a practical way of learning Java. I had an app I wanted to make, and having that as the goal kept me going through all the boring parts of learning a new language.