Het hangt natuurlijk allemaal af van welke richting je op wilt. Java is een groot platform, je zou het bijna een virtueel operating system kunnen noemen

. Als je het hebt over ANT, Spring, Hibernate, .. dan lijkt het me dat je richting web en enterprise omgevingen op wil.
Als je eenmaal de Java taal onder de knie hebt, en je wil de JEE richting op, lijkt het me het best om te beginnen Servlets en JSPs. Daar dit de grondbeginselen vormen van de meeste webapplicaties. Er zijn een hele hoop tools en frameworks beschikbaar om het je gemakkelijker te maken om voor de 'enterprise' te programmeren. Ik ga hier even een opsplitsing in maken
web frameworks: Struts, Spring MVC, JSF, Echo2, Wicket, ...
build tools: ANT, Maven
enterprise frameworks: EJB3, Spring
persistence frameworks: JPA, Hibernate, IBatis, ...
Op web framework niveau kan je nog eens een opsplitsing maken tussen request-based en component frameworks. Struts, Spring MVC zijn request based frameworks en JSF, Wicket zijn component frameworks (volledig object oriented).
Er zijn 2 grote frameworks beschikbaar om je applicatie te builden (compileren, jarren, ..), zonder daarvoor afhankelijk te moeten zijn van batch files of IDE's. Hiervoor werd in het verleden veel ANT gebruikt, maar tegenwoordig komt Maven meer en meer in de picture.
Ik weet dat ik eigenlijk niet de rechtstreekse vergelijking zou mogen maken tussen EJB3 en Spring, daar deze maar een klein deel overlappen, maar ik doe het toch. Wat bedoel ik dan met enterprise framework? Wel, deze frameworks vereenvoudigen het werken met globale transacties, security, lifecycles van uw objecten, ... etc. Verder voorziet Spring bijvoorbeeld in een aantal abstracties naar andere frameworks, zodat het gebruik ervan ook makkelijker wordt.
Op vlak van persistentie is er sinds kort een algemene standard, JPA (Java Persistence of EJB3 persistence wordt het ook nog vaak genoemd). Dit is een specificatie, die onder andere door Hibernate geïmplementeerd wordt. Als we gebruik maken van deze specificatie, gebruiken we eigenlijk ook Hibernate, maar we gebruiken dan alleen maar de functies die in deze specificatie beschreven staan. Als we mee willen evolueren met de laatste nieuwe technieken en features, ga je er in de toekomst niet onderuit kunnen om toch gewoon Hibernate specifieke features te gebruiken.
Daar waar JPA een specificatie is, is JSF (standaard voor web) ook een specificatie.
Het is niet makkelijk om een pad uit te stippelen voor iemand die nog nooit iets met deze frameworks gedaan heeft. Maar mijn advies zou zijn om het gradueel in te faseren. Start met Servlets en JSPs en werk een kleine applicatie uit, bvb een eshop. Ga dan bijvoorbeeld een Struts of Spring MVC gebruiken om te zien hoe dit je werk kan vergemakkelijken. Ik raad Struts vaak aan voor beginners omdat hier erg veel documentatie en antwoorden voor te vinden zijn op het internet. Het is immers tot op vandaag nog altijd het meest gebruikte web framework, ook al is het een beetje voorbijgestreefd qua technologie.
Ga eerst lekker met JDBC aan de slag, map je objecten op je resultssets. Snel zal je zien dat dit veel boilerplate code in de hand werkt. Zo kan je Hibernate er eens bij betrekken om te zien welk werk dit je uit handen neemt. Of begin eerst eens met de Spring JDBC abstracties...
Het is inderdaad een feit dat afstudeerders die met Java willen beginnen een enorme hoop moeten verwerken eer ze nog maar een beeld kunnen vormen van wat er allemaal beschikbaar is. .NET heeft 1 entry point, en dat is Visual Studio. Gelijkertijd ook de grote kracht van .NET!