Osobiście nie poleciłbym ani Thinking In Java, ani Java. Podstawy do nauki. Obie są świetne (korzystam z Thinking in Java, miałem kiedyś wypożyczoną Java. Podstawy), i znakomicie sprawdzają się jako materiał referencyjny.
Niestety, i w jednej, i w drugiej przykłady są rozbuchane. Jako przykład, podam, że w rozdziale o kolekcjach w TIJ kod przykładowy do Map jest na 4 strony, z czego większość to... wiersze ze skrótami i nazwami państw. Do tego Eckel stosuje swoją śmieszną konwencję komentowania plików, która zielonego może doprowadzić do złych nawyków.
Ciekawie wygląda pozycja Head First Java, niestety w języku polskim jest dostępna tylko w "Druku na żądanie". Bardzo przyjemnie się uczyło z innych książek tej serii.
Osobiście, Javy uczyłem się z kursu przygotowującego do certyfikatu SCJP, uzupełniając lub wyjaśniając pewne kwestie w TIJ. W ciągu dwóch miesięcy intensywnej nauki zdałem (uprzedzając - wynik nie był rewelacyjny:)) Książka ta przedstawia to, co najważniejsze w zwięzły i krótki sposób.
Niestety, ma swoją cenę (tym wyższą, że wyrażoną w USD). W związku z tym poleciłbym jednak rozpocząć od tutoriali na stronach Suna. Warto też zarejestrować się na forum JavaRanch - świetne miejsce dla każdego programisty Javy.