I see that Microsoft has announced the beta release of IronPython, their port of the Python language to the .NET platform. This could be one of the biggest threats that Java has faced so far.
In many ways, .NET and the C# programming language are a homage to the success of the Java virtual machine and the Java language and API. C# has a lot of Java's features, although the latest version of Java (5.0) returned the favour by copying many of the features that were unique to C#.
The thing is, if you use Java now, there isn't a compelling reason to move to C# and .NET. The differences are too small. If you use C# and .NET, your reason for moving to Java would usually be because you want to run on a non-Windows operating system (e.g. Linux). However, Novell's Mono implementation of C# and the CLR virtual machine gives you the portability (and credibility) to use C# for cross-platform applications too. It's all very evenly matched.
Throwing Python into the mix makes it interesting. Now, there is a version of Python for the Java virtual machine (Jython), but it's use is limited. Java developers don't really think Python is worth the effort, and Python developers tend to use Jython only when their customers insist on a Java-compatible solution. Python on .NET is more interesting because it is closer to the way Python works normally. Python has its own virtual machine, but is easily able to call out to native C/C++/etc. code to get the benefits of its functionality and/or performance. In principle you can do this from Java, but it is frowned upon (Sun ran a 100% Pure Java campaign for a while in the earlier days of Java, which meant that you can link to native code, but don't, except as a last resort). The idea of having a virtual machine, but with access to native code, is also fundamental to .NET.
There was a time when Java was the programming language you used when you needed to deliver the result quickly (certainly more quickly than using C/C++). Now what I see is that Python has become that language, although it's facing a growing challenge from yet another language, Ruby, which seems to be the latest darling of the quick delivery crowd. That said, Python has become very well established of late (it's older than Java), and Microsoft's IronPython port can only raise its profile and increase its penetration into the enterprise end of IT.
Now, will Microsoft deliver any software written in IronPython? That would really make a difference. To date, they have been slow to deliver anything written in C#/.NET, but that should change when the next version of Windows, Vista, arrives. Might they use Python? It will be interesting to see.