Osobiście uczyłem się programowania w C++, Pythonie, Pascalu, Javie, a nawet Assemblerze. Assembler od samego początku nie, Pascal jest stary, Python nie jest zbyt popularny. Zostaje Java i C++. Zdanie jest po części podzielone, ale po pierwsze: http://pl.wikipedia.org/wiki/J%C4%99zyk_programowania#Najpopularniejsze_j.C4.99zyki_programowania
Java przebija C++ w popularności. Po drugie, jest o wiele łatwiejsza i wygodniejsza. Po trzecie, możesz programować grafikę nie tylko aplikacji okienkowych, ale też gier 2D, bez użycia dodatkowych bibliotek, podczas gdy w C++ pojawiały się takie "hity", jak trudny do rozgarnięcia WinAPI. Ja korzystam z Javy, mimo że zacząłem się jej uczyć jako ostatniej z powyższych, i jestem ze swojego wyboru bardzo zadowolony.
Jeśli chodzi o książki, to polecam dwie: "core Java Podstawy" C. Horstmanna i G. Cornella (troszkę przestarzała, ale wszystko, co tam jest podane, działa do tej pory), i nawet jeżeli nie interesuje cię programowanie gier, zajrzyj do "Java. Tworzenie gier" D. Brackeena, która podaje mnóstwo różnych ciekawych rzeczy, ale wymaga podstawowej wiedzy o Javie (np. z "core Java Podstawy").
Jeżeli wolisz zająć się tematyką gier, to jak najbardziej polecam ci te same książki. "Java. Tworzenie gier" pokazuje także, jak zrobić kod uniwersalny, działający poprawnie bez względu na to, jak chcesz zaplanować grę. Oprócz tego, książka ta uczy tworzenia gier 2d, 3d, sztucznej inteligencji, gry sieciowych i wielu, wielu innych, bez korzystania z dodatkowych bibliotek - tylko to, co udostępnia czysta Java.