When we talk about composite applications, we mean applications which have been assembled out of existing components that have been "wired" to work together. When people speak about mashups they are talking about applications which have been built by writing a small amount of code to combine the capabilities of two or more existing sites.
In both cases we are talking about reusing existing assets. In addition, both ideas involve combining the existing assets in innovative ways so that "the whole becomes more valuable than the sum of its parts". However, there are a number of key differences:
- It is generally accepted that web sites should adopt the REST principles, if they wish to make it easy for people to use their functionality as part of a mash-up. However, there is no generally accepted definition of what it takes to be REST compliant. Therefore there can only be limited tool support for building mash-ups. In general hackers have little trouble in producing mashups, but normal people can find it quite difficult.
- In this blog we will use the term composite applications to apply only to applications which have been assembled out of components that were written to be exploit the composite application framework which is supported in V6 of the IBM Portal server.At one level, any portlet which is compatible with the JSR-168 standard is compatible with this framework, but there are some additional APIs which are not yet an industry standard which can be leveraged to get an even deeper level of integration with our framework (click here to learn more about the framework). This very strict definition of what interfaces need to be supported by a component means that we can develop tools which allow non-programmers to easily assemble applications.
The net effect of this is that there is a wider set of components which are compatible with mashups, but once you have components which are compatible with our framework you will find it much easier to assemble them into meaningful composite applications. We have browser based application assembly tools in Portal and in the forthcoming Hannover release we will have a client based Composite Application Editor which will make it even easier for end-users to assemble applications. We will also be allowing people to build components using new technologies (eclipse views and Notes applications).
- Our composite applications generally allocate a fixed rectangle of the UI to each component. This model can sometimes restrict how "cool" the UI looks, but at least it is easy for users to understand which part of the functionality is coming from each component. In a mash-up it is frequently difficult to distinguish which part of the UI is coming from each of the component web sites. This can achieve seamless integration, but if a mash-up stops working it can be difficult for the IT support people to work out which of the components is causing the problem
We are not saying that mashups are better or worse than composite application, just subtly different. I hope this explaination is helpful for people to understand the difference.