Saem,
although Java certainly has its issues (especially concerning Swing),
as a language I find it lovely. Of course it's almost unusable for low-level programming, but for high-level applications (e.g. business SW) it is quite elegant and makes debugging a lot easier.
Two examples:
Not having to care for memory management (most of the time, that is) is one of the things I love about it. (and with the new multithreaded GC it runs quite good)
Every programmer knows how arduous it is to track a memory leak in a sufficiently complex program.
Another thing is the elegant handling of memory structures (Objects are references, primitives are values). You won't need to use your data structures in another way 95% of the time, at least in high-level applications. And for these you can use Object.clone or put the primitive in its associated Object. (Long for long, Double for double etc.)
I think it's not coincidence that C# looks so similar to Java. C++ may be more powerful, but it is IMO more prone to programming errors and because of that I prefer Java when I don't need the level of control C++ offers.
Oh and I share your concern regarding .NET. If it weren't so goddamn sexy...
Edit: I forgot something...
Having the ability to write procedural code is great if you want to do quick hacks, or for low-level programming. But when you have a complex piece of software with hundreds or even thousands of classes, it undermines the benefits of OO programming.