Java Vs .NET
Price - .NET has tons of licensing associated with it while Java is under a more free license
Cross Platform - .NET has Mono but it is typically far behind Microsoft .NET and does not have the entire .NET library included in it. Also Microsoft can kill Mono at any moment. They probably will not but the risk will always be there....Java has ports in multiple platforms and encourages more ports. The java library is usually ported to various platforms almost in its entirety. Also many of the ports are out almost immediately.
Java Vs C or C++
Garbage Collection - This is a pretty big advance and saves development time big time. I don't think this needs more explanation.
Huge standard library - In C and C++ you need libraries to do almost anything useful. Load XML? Get a library. Regular Expressions? Get a library. Cross Platform GUI? get a library. Not all libraries are available on all platforms and it is not unusual to use one and suddenly have it stop being maintained and have to switch. In Java the standard library is huge. It includes data structures, GUI libraries, xml libraries, web libraries, networking libraries, regular expression libraries, etc... Now with Boost C++ gets some of these things in a cross platform way but even C++/Boost is lacking compared to Java's library....
Cross Platform - It is much easier to port Java than C and C++. I don't think this needs more explanation.
Java VS Perl/Python/Ruby
Speed - The complaint against Java used to be speed. Compared to C and C++ it was slow. Still for most business apps this really didn't matter. Now Java tends to be very close to C in speed. Still for most business apps even Perl/Python/Ruby are fine though they are sometimes 20+ times slower than C. Java is sometimes 4 times slower than C or less. Basically an order of magnitude improvement.
The Library - I know both Perl/Python have huge libraries. I'm not 100% sure about Ruby but I'm sure that one has a big one too. Perl has CPAN as well. But in terms of standard library it is hard even for these language to compete with Java. In Python/Perl TK is included as a standard GUI library. Java includes Swing, AWT (and now I think SWT too). Java includes concurrency libraries, web services libraries, xml libraries, etc. all built in. Java also includes enterprise frameworks, sound, graphics, etc.. I don't think I have found a language with a bigger standard library yet. But with Perl/Python/Ruby I think this is less of an issue with data structures and other more standardishy things. Still the java library is tough to beat. And it is all pretty efficient.
Also when comparing with .NET don't forget that .NET was founded after Java and to a large degree copied much of Java. It also had the benefits of learning from many of Java's shortcomings (I would take delegates over nested inner classes 10 out of 10 times). But compared to what else was available at the time Java was revolutionary. Compared to C and C++ it is much more productive to built an enterprise application in Java. Although with Boost and other great efforts C++ (including the newer ISO standards) C++ is slowly catching up. But C and C++ are so powerful that it is easy to shoot yourself in the foot. The garbage collector has such a huge productivity advantage in programmer time.
I think now with processors becoming more powerful the speed issue of C and C++ versus Java is becoming even less important. Also there have been many advances in Java technology (like the Just In time Compiler). Someday the speed difference between Python/Perl/Ruby may become less important too. When that day comes then maybe there won't be a reason to use Java now. But until it sometimes speed necessitates Java or .NET (or C++/Common Lisp/anything on the level) and Perl/Python/Ruby just don't cut it...
** ABOUT MONO ****
It has come to my attention that I seem to have offended people saying Mono might be a legal risk. My point is not that MS is planning to shut down Mono. It is that the possibility exists. C# is an ECMA standard but not the .NET libraries. Also Mono is catching up with MS .NET, it has made good progress and Microsoft has warmed up to it as well. But the fact is that MS and Mono are in a business relationship. And that is subject to the whims of people at business. If tomorrow MS decides MONO is enemy #1, they may be able to kill it. Even if they cannot kill it, they can develop a lot of stuff for .NET and not share the technical details with MONO. Remember how long it took MONO to get winforms implemented? I'm not knocking MONO. They made great progress. But still it took a long time to get MONO up to speed. Without MS help adding their new features will take time. Also ADO.NET, ASP.NET, WinForms are not ECMA standards. There is a patent agreement not to sue Novell customers. If you aren't a Novell customer then there is no agreement. I'm not saying you will get sued. But I'm saying that it is a risk (even if a 2% risk). And to deny that is to be stupid. At the same time most windows developers are using ADO.NET to talk to databases, WinForms to create GUIs, etc.. So you really need those technologies to port most normal applications. That's what is great about Java. JDBC, AWT, Swing. There is no dark cloud.... Again I mean no disrespect to Mono. I think they have made great progress since the early days. Compared to when it could only compile a little C# and most of the .NET library was not implemented to now where it has many features of .NET 3.0 it is a HUGE effort.
Also, if you use MONO and make your GUI in GTK and stay away from the less controversial API's then you probably have 0 legal risk even if you are not a MS or Novell customer. If I developed in Mono I would probably use winforms and ado.net because that's what I use in Microsoft environments at work. But admittedly I could just GTK. And not worry.