Debbie Moynihan of IONA writes the following in regards to a presentation she heard by Rod Johnson of Interface21 (and creator of the Spring Framework):
Rod promoted the notion that Ignorance is Good. “Your code won’t be broken by things it doesn’t know about and doesn’t need to know about.” I would add that the less you need to know about as a developer, the easier your job will be. For example, Spring provides many patterns and recipes that you can use so you don’t have to work through all of the details every time, like the JDBC template which makes it easy to access a database using Spring and the JMS template which makes it easy to utilize Java messaging with Spring. Many services are provided out of the box, for example there is a transaction management service. For developers in larger organizations, there are also many pre-built integrations with other ISVs, and open source projects, for example ServiceMix, Oracle Fusion Middleware, Tapestry, and GigaSpaces. Spring is completely portable, and even runs on .net.
The old way of doing things was to create a standard (e.g., J2EE). Vendors implement the standard, developers learn the standard programming model -- everybody's happy, right? Wrong.
The result: every vendor develops a slightly different flavor of the standard and enhances it in order ot have unique capabilities. the result is that in order to benefit from a vendor's unique product capabilities, you have to depart from the standard. And in any case, developers have to deal with the complexities of the infrastructure.
The new way of doing things is abstraction. That's what we adopted in 6.0, which just went GA. Shield the developers from the underlying middleware/infrastructure implementation, and let them add value with unique business logic and data models.
Once the middleware and the business logic and the data are decoupled, your life becomes easier throughout the application lifecycle: design, development, testing, production, management and monitoring.
Update: See Nati Shalom's post: Avoiding vendor lock-in in a non-standard environment