But the sad truth is that even if you take the trade-school approach, and just teach them java, most graduates still won't be able to produce usable product.
They won't be able to make a robust working app. Probably haven't written a web based app that had more than two concurrent users. Probably haven't written a desktop app that's been tested across a variety of platforms and configurations. Haven't written some server app that can go on for years at a time. They aren't familiar with all the intricacies of J2EE on a real clustered live environment. They aren't going to understand how to code with a team, maybe in theory, not in practice.
They still have to learn all that on the job anyway. People always say (half-joking) that they learned more their first week on the job than they ever did in college.
So how much does learning real-world skills over theory really help you? Not that much.