http://www.jpassion.com/
I have no affiliation with JPassion, but recently began using it to fill in the gaps in my Java/Groovy/Spring skills and improve my programming skills for my current job. Though I don't yet have enough experience using this service to provide a really in-depth review, I wanted to share my initial experiences to help any others looking for a Java learning resource.
JPassion is a subscription based online learning site for Java in general with courses in Groovy, Spring, and many other areas related to programming. I had considered using this service several years ago, but decided against it at the time due to the lack of any reviews and testimonials outside of what are provided on the JPassion site. Instead, I chose to simply learn on the job and use a combination of books, Google/Stackoverflow, and on-the-job experience (mostly unit testing) as I work for a software and informatics company spending most of my days working with data using databases, SQL, Python, and R. Recently, I convinced my employer to put me on a team programming mostly in Java and Groovy using the Spring framework with the idea that I'd learn on the job. This wonderful opportunity opened my eyes to the gaps in my programming abilities and I quickly found that I preferred a step-by-step program where I could determine the pace and choose the areas I wanted to focus on.
After much deliberation, I decided to take a chance with JPassion since they offer a 5-day no questions asked refund policy. Well, I'm over a week into this service and really wish I'd have done this a few years ago when I first discovered the site. A ton of courses are available ranging from beginning level fundamentals to more intermediate and advanced topics such as Spring framework, Groovy/Grails, Web Services, Hadoop, etc. This content is pretty wide yet seems pretty well organized. The various subjects are divided into individual modules. Then, each module is divided up into smaller sections that each provide a lecture, a PDF of the slide show that the instructor uses during the lecture, and most importantly, a lab containing lots a reasonably small coding exercises. Most labs have a final coding exercise that is supposed to be submitted as homework. After all homeworks are submitted, you can request a certificate of completion for each course.
I really like that all course content is available (for paid subscribers) immediately, allowing me to pick and choose the content most applicable to me at this stage in my development (I'm not a brand-new beginner, but not advanced either). Most of the very first course, Java Programming, is familiar to me, but I am forcing myself to go through each to fill in my aforementioned skills gaps in skills and understanding. At the same time, I am struggling a bit using Spring while at work and am going through the Spring course in parallel.
So far, JPassion's content and teaching method is perfect for where I am in developing my programming abilities. If you are looking for a learning resource (besides JavaRanch, of course!), I recommend trying JPassion. Good luck!