Jon Stahl wrote an excellent post recommending the construction of "cross-stack applications" rather than choosing a single platform and hanging all your applications off of it. In the post, Jon also lists some applications that have excellent APIs for integration.
The only thing I would add is that I am hoping a shift away from "Enterprise Applications" which connotes one big system that does everything for everyone (which leads to Enterprise Licenses and Enterprise Lock-In), to "Enterprise Architecture" which focuses more on interoperability and best of breed. I am also happy that I am seeing this meme more and more in the open source world because that is where open source has a distinct advantage over proprietary software which tries to add more breadth with every release.
However, this does raise an issue with the internal I.T. organizations that try desperately to increase efficiency by reducing the number of tools and frameworks that they need to know. This is largely a cultural factor. At some places I have worked, developers are always itching to try and learn new technologies. Other places have developers who are afraid of being made to look foolish by what they do not know. Being a long time consultant, you can probably guess what camp I fall into. For me, having a cross-technology perspective and constantly struggling with new syntax is what makes programming more interesting than just getting paid to type. But I recognize that is not for everyone.