While in University I would have agreed with most of you.
However now that I have experience as a Java developer I can tell you:
Experience is incredible important, the principles are easy to pick-up, learn and remember. Without them you would be completely lost but don't think that is all that matters. Not by a long shot.
Forget about "hardcore" and all that crap you hear about C++, C++ developers love going on about how "hardcore" C++ is but I've worked on C++ application and they were very simple in reality.
I'd happily go back to thinking that having to deal with memory allocation is complex. Or that understanding and working with pointers was difficult.
Working on enterprise Java applications has been one of the most difficult things I've ever worked on.
Having an application that connects to an AS400 and 4 different web-applications each exposing functionality through a WSDL, just the integration level is incredible in terms of complexity.
Next you have EJBs and Spring beans that are injected for those applications and beans that are injected from those beans and vice versa.
Before you know it your application is incredible big and using technologies like Spring, GWT, Java EE, your level of knowledge and complexity quickly outstrips anything I ever encountered with C++ (or .NET)
Just a basic web-application that connects to a few other applications that needs to be deployed as an EAR could easily consist of 8 different projects (Web, Test, EAR, Data, Base, X amount of client projects) each with hundreds of classes.
When new people join they have no clue where it starts and ends. It's like being given control of a Boeing but you've only ever flown Cessnas (and you thought Cessna was hardcore because you control the engine directly instead of it being done for you).
Most web-technologies (Spring for example) is as large as the entire Java langauge just by itself. Also consider that every few years a hot new framework comes along and suddenly all that knowledge needs to be adapted to a new framework. It's living in the fast lane, in terms of learning curve and keeping up to date.
C# is still very behind Java in terms of web-frameworks so it is much less complex which is a bonus (unless .NET cannot do what you want, then you are screwed)