I personally see Open Source Java as a crucial response to MS and DotNet. I know this is a really dangerous and conteitous area, but it is not my intention to start a flame war...
MS has leveraged the experiences of the Java communty in creating DotNet and as such it makes certain advances in technology that provide a compelling business case. Visual Studio .Net is also now the most advanced IDE available. I don't think this point is really worth arguing, I simply concede it...that said, Java WILL catch up, and in some places it probably is still ahead.
The result is that the business case for J2EE has suddenly become a much harder sell...there are of course a subset of incredibly large software systems that will remain in the Java world regardless, but I would argues this isn't necessarily driven by Java so much as the integration support and services these systems demand from vendors (this is where we still find companies like IBM).
However, the whole middle ground of enterprise development has compelling reasons for choosing DotNet, including lower costs in terms of up-front costs (notice: this is not necessarily TCO, but up-front costs play a crucial role in times of tight cash flow (conomic downturn, anyone).
Open Source provides a crucial role here. Many companies that run JBoss today will demand aan IBM, BEA or Sun system tomorrow. Application Servers are also obviously becoming much more 'commodity' driven market segment and has been observed elsewhere repeatedly, Open Source functions very well in this type of market.
Sexy tehnology coupled with the MS marketing machine means that J2EE has lost significant momentum recently. Remeber that the real issue here is the platform, not the language or the implementation, but the services and framework that together make up the entire J2EE platform. Platforms benefit from network effects, and this is something that MS has always known (in fact their entire business is based on this principle and I would bet that MS will ensure that DotNet is installed on every capable Windows machine within the next 12 months). The crucial point is to spread the platform as widely as possible, even at the cost of immediate revenue losses...Open Source J2EE is the answer here, this would create a groundswell of smaller Java installations, really pushing the platform. It aslo provides a fertile learning area for future developers and architects. It is obvious that many developers cut their teeth in Open Source before moving into the commerical world. This is simply a result of availibility and the reason why development versions of so much software is free or cheap these days.
Sun has also been reluctant to adopt web services, largely I think because it really goes to the heart of Sun's hardware business...Web Servcies provide an alternative paradigm to the Big Iron appraoch to centralised server systems.
The JBoss vision of the 'WebOS' provides an excellent model for the Web Service world. Small ubiquitous app servers, deployed to the edges of the organisation providing needed services as close to the requirment as possible. Unforntunately, this is a really decentralised approach that really coincides with a MS vision (sell more Wintel boxes) than the enterprise incumbents (sell one BIG box).
MS has been pushing the CLR and language independence heavily within academia and is gaining some significant support in this crucial realm. With Sun vacilating over opening core components of the Java platform, it becomes a key issue in research terms.
NOTE: the real issues here are not whether DotNet is technically or idealogically better than Java, but in relation to marketing, user base and ubiquity.