Middleware play a important role in the current application software development. What is middleware? Middleware is the glue in-between application softwares, application software components and system software.
Middleware was identified in early application software development and software development houses did wrote separate peaces of software to implement those. But still there are enough middleware can find in the market people tend to implement middleware with the application software.
Why developers do develop middleware rather than pick a existing one? Many reasons, the application architecture does not clearly define the middleware layers, people unaware about the available software, people need customization of the middleware to implement the business use-cases, existing middleware does not address the entire problem.
When it comes to SOA I have seen developer do develop their own service hosting enviornments, enterprise service buses, repositories and modules to implement various WS-* standards. Development houses spend significant amount of time to develop these type of middleware, not only the time spend for development also for testing and maintanance.
Application developers can save this time by using a suited middlewre for the applications, this has to be done with the initial design of the application and should include to the application architecture. Using a proper middleware for the application will lead the developers to spend enough time on designing and developing the business solution. Picking the correct middleware should be part of the design phase.
Application development teams reluctent to use existing middleware due to many reasosns, one is the implementation is not visible for them so the alternative is to use open source middleware. Another reason is the middleware does not fit for the application requirements, as a solution for that pick a middleware do support open standards and again using an open source middleware provides the flexibility to customize the implementation by changing the code or implementing new implementations and plug them to the core.
As a summary the application developers can concentrate on resolving the business problems by implementing application software and keep the burden of building middleware by using a matching middleware for the requirement.