Бери любую книгу и используй её сугубо как справочник.
Для практики проходи задачи
с проекта Эйлера.
Прочитал главу и пробуй в рамках полученных знаний решить задачу. И руку набьешь, и математику подтянешь, и по алгоритмам пройдешься.
UPD. Как написали выше - Java обратно-совместима. По ходу написания кода так или иначе будешь сталкиваться с документацией, откуда и будешь подтягивать знания о новых версиях. А для базы выбирай книгу, у которой охват тем больше, не глядя на рассматриваемую версию.