Almost everything has tutorials online these days.
I find the theserverside.com and ibm's developer network have some good tutorials.
I learned more from the Hibernate reference manual and tutorials than I did by a formal class that my work payed for.
I'm always out on Spring's website browsing the reference manual.
I don't recommend a book unless there is a good one that someone has recommended so it won't become a home for dust bunnies.
If have a lot of cash to blow go for the books.
Sun has a basic tutorial on Java.
Sun also has a tutorial on J2EE/JEE.
UML is design by modelling and is an instance I'd recommend a good book.
You can do Java development with notepad and the command line if you want.
However if you want syntax checking, automatic, javadoc information, and easy classpath management you're going to want to use an IDE.
Eclipse and Netbeans seem to be the common free ones most people use (I'm pretty hard against Commercial Products/Vender Lock In's when there's a Free Open Source alternative).
Eclipse has some nice features that can help you when it comes to tooling related to JEE. It's plugin (plug: OSGi) architecture allows tooling to be added for Spring, Hibernate, JavaServer Faces, Database, J2EE/EE Servers etc...
There's a lot to be said to be able to debug and step through code in your IDE (Although some argue if you have proper unit testing and logging that you shouldn't need to).
IDE also provide templates and formatting which helps easy development and maintainability.
I find that I learn a language as I move in the industry and that they are all pretty common. I wouldn't bother to learn a language just to learn it and an employer will not value this kind of knowledge as much as on the job training anyway (although they do like people who are open to learning new things).
If you know the basics to Algorithms, Object Oriented Design, Data Structures, Design Patterns, and UML then you can really apply this to any object oriented language (These are the books that get used).
A nice thing about Java is the open source community and availability of free packages.
In two words Apache and Sourceforge although there are others that are important too.
I find that regardless of the language (or any task really) that the DRY (Don't repeat yourself) and KISS (keep it simple stupid) are good things to learn.