Когда меня взяли на работу Java-программистом без знания Java, то усадили за классический учебник Брюса Эккеля «Thinking in Java». В русском переводе — «Философия Java», но мне порекомендовали читать оригинал. Книжка сильно устарела (Java 4 и 5), но очень хорошо излагает материал.
Также некоторые люди советуют книги Герберта Шилдта или Кея Хорстманна. Тут ничего не могу сказать, сам не учился по ним.
А вот если хочется чего-то понагляднее, то есть учебник из серии Head First.