В данный момент изучаю Java по книжке Шильдта. но я думаю это дело вкуса. имхо, иногда в этой книге немного усложняют понятия, некоторые вещи сам с первого раза не понимаю. зато есть наглядные примеры, которые решают эту проблему. можно еще комбинировать: читать понравившуюся книгу, изучать материал по ней, а если что-то там непонятно, то бежать смотреть как это описывается в другой книге.