I've been asked recently by different customers, BPs and ISVs what the advantages of composite applications in Notes 8 are. Here is my take on it from a technical perspective. Mix & match of components through standardized inter component communication
Most importantly composite applications provide an extended way to allow rapid application programming. Rapid application development has always been one of the main reasons why Notes/Domino has been that successful. While you can still do all the cool things that Notes has provided in the previous releases, composite applications re-emphasize this aspect again and push it to another dimension. You can now easily assemble new applications by re-using existing components in new contexts.
The components in composite applications (the rectangles in the UI) are coarse grained components with well defined interfaces. While you can even have framesets and frames communicating via profile documents and such, the key with composite applications is that they provide a standardized way to do this type of communication. This standard mechanism is what we call property broker using WSDLs under the cover.
The property broker allows also a loosely coupling of components. This is important for a mix & match of components and an easy aggregation of components into new composite applications on demand. Re-use of finer grained components has not been proven successfully in the industry except of standard libraries like Swing that have been defined by an organization with a lot of influence. I personally think that the component model in composite applications is one of the only models that allows such a re-use of UI components within a department, between departments in an enterprise, between ISVs and customers, etc.
I think that composite applications have the potential to significantly change the way customers, ISVs, system integrators and business partners make business. For example BPs could much easier re-use the same components in different applications for different customers. Some ISVs can focus on building components instead of complete solutions. Customers could have much more flexibility when choosing third parties to build their applications. Some higher skilled customers will be able to extend a CA and improve an already existing solution without having to request simple changes from ISVs. ISVs can focus on developing components and new CAs instead of having to make every change for a customer. Some customers will also feel more empowered by their ability to customize and extend CAs. Advanced LOB users can assemble and extend CAs without requiring developers to make every change and understand every detail of the solution or process.
As I wrote a clear advantage of composite applications in Notes 8 is the possibility to use reusable components in applications. This opportunity is best achieved by BPs, ISVs, etc. building and distributing such components. We're working to build a public catalog to help share these components. This catalog is expected to come fairly soon. It is up you, our developer community, to help populate this catalog and really build an ecosystem around composite applications.Support for more component types through Eclipse
As everyone is aware of Notes 8 bases on Eclipse. This gives us many new capabilities and many new ways to do the same things differently, maybe for some people easier.
With Eclipse, SWT and JFace you have maximal flexibility in terms of developing sophisticated user interfaces. This was one of our main reasons to build the new and modern UI for the PIM applications with Eclipse. We just get a lot of cool UI libraries for free from the Eclipse community and can focus on collaborative functionality rather than infrastructure. This doesn't only save us time within development, but also allows us providing more functionality for our customers. I'd think that there are many external people that would want to use Eclipse for this purpose as well.
Maximal flexibility however never means that you get all of this for free. Even with Eclipse and all the available libraries you need to manually code a lot of this. However I think providing a more difficult way to implement certain features is better than no way to do this.
While more flexibility for UI development can also be done today in Notes 7 (e.g. by embedding objects and controls) I personally think that there are advantages of doing this with Eclipse/Java. First of all you can build re-usable components for multiple platforms without even having to recompile code. Then you have even more flexibility where to put your extensions/code. Not only forms can be used to embed objects but you have the whole rectangle in the UI. You can even contribute menu actions to wherever you want.
The other advantage of Eclipse compared to other ways to embed other component types is that there is a well established community around this. The established community allows two things. First there are people that know how to build Eclipse components. Students learn this at university, many people have come across Eclipse in previous projects etc. Even if your company doesn't have these skills yet, it is relative easy to get them and there is relative little risk that building up these skills wouldn't pay out.
By providing Eclipse as a first class citizen in the Notes client, Notes can also attract new markets and new customers that haven't been interested for different reasons in Notes yet, but now can continue to build Eclipse applications and then use the advanced collaborative functionality provided by the Notes layer on top of Eclipse.
The second advantage of the well established Eclipse community are the existing tutorials, samples, articles and re-usable applications, often even available as freeware. A perfect example is BIRT which is an open source project to do graphical reporting. It is easy to imagine that someone could take BIRT, add a Notes data adapter and then put it as component in a composite application.
Eclipse and Expeditor also allow us through the extensibility to run JSR 168 portlets locally. This doesn't mean that the whole server side logic is automagically taken offline but you can now build portlets running on server and on the client in online mode. For example you could now easily take some very popular portlets from the portal catalog and run them in Notes.Features that couldn't be done in previous Notes releases and features that can now be done easier
I'm a big fan of Notes and had been long before we started with composite applications. I think Notes allows you to do incredible applications and there are features like the NIF facilities, the replication, security etc. I haven't seen in any other product. I also understand that our partners have done things with Notes that we in development have not even anticipated when we built Notes features.
That having said I think that there are features in Notes 8.0 and that there will be features in Notes 8.x that you couldn't do in previous Notes releases. Let me give a concrete sample. Notes 8.0 comes with a new type of API, an UI API, for the PIM applications. The PIM apps support some properties and some actions. Granted, these APIs support only minimal functionality yet, but we didn't feel comfortable putting in more functionality since we usually wait a whole release cycle before we make APIs public. But you can imagine that at some not distant point of time you can extend the PIM functionality WITHOUT design changes to the PIM templates. This is possible since you can reuse PIM components in new applications and use the property broker to interact with other components.
Also the rectangles in the UI can be easily minimized and maximized in composite applications. This is not easy to do with frames in a frameset. However this is an important UX pattern when you use multiple peripheral components on a page. You don't always want to see everything expanded.
Eclipse also allows embedding other types of components. The embedded browser is a good example. In Notes 8.0 the embedded browser is a re-usable component for composite applications allowing to set the URL to display initially via component preferences in the CAE as well as to pass in new URLs to display at runtime via property broker. Other HTML rendering engines like Gecko can also very easily be used from Eclipse components. Another example are the Personal Productivity Editors that we've planned also to provide as components at some point.
You can also pass in context to Eclipse components in composite applications allowing these components to behave slightly differently depending on this declarative configuration. This will also be possible for NSF components in Notes 8.0.1. This context is defined using the CAE when the CA is assembled instead of when components are built. This allows developers to design components which accept context and LOB users assembling composite applications can specify different parameters to increase the resuability of components.
Notes applications are typically very form based. In previous Notes releases other components had to know the field names of forms to populate some fields. With composite applications UI services (the actions of components with property broker) can be provided to encapsulate the storage layer and provide real business services like in SOA.