About the Author
Claus Seitter is a senior engineer at MUENCHENER VEREIN Versicherung, a Munich-based insurance company. He is part of the team that developed the underlying architecture and reference implementation for MVV's UltraLightClient-based applications.
Spotlight Features

The Rich Engineering Heritage Behind Dependency Injection

Andrew McVeigh takes us on a tour of the rich heritage behind dependency injection, what it represents, and tells us why its here to stay.

NetBeans 6: Matisse Updates

NetBeans 6 delivers great updates to the Matisse GUI builder. Spend a few minutes with Roman Strobl and get an expert briefing on what's new and what has changed.

Introduction to Groovy Part 3

In this, the third and final installation of Andres' Introduction to Groovy series, you learn about how Groovy handles variable numbers of arguments, named parameters, currying, and more about Groovy operators. Including, some new operators.

Easier Custom Components with Swing Fuse

Swing Fuse (actually just Fuse), is a framework designed to make it easier to create your own custom desktop components. In this article, Daniel Spiewak shows you how to get started and provides sample source code you can download.

Benchmark Analysis: Guice vs Spring

Willam Louth shows how he uses JXInsight Probes to investigate probable performance issues with code bases that he is not familiar with. He also highlights possible pitfalls in creating a benchmark, as well as in the analysis of results.

RIA Technology enables Mobility for Insurance Applications

Four years ago MÜNCHENER VEREIN insurance started developing new front-end applications with RIA technology. Several applications are live today, each of them delivering a highly efficient graphical user interface (GUI) to both internal and external users, and allowing both online and offline execution. The key to these multiple operating scenarios is the combination of a Service-Oriented Architecture (SOA) with UltraLightClient, a Java-based RIA library. This marriage of SOA with RIA enables separating functional code from infrastructural code in such a rigorous way that operating scenarios are entirely configurable.

Figure 1
Fig. 1: Rich User Interface enabled by RIA Library

The goal of the new front-end applications is to combine existing, formerly isolated functions of legacy applications into end-to-end business processes. All insurance products that allow for an automated workflow will be integrated and handled with the new applications. A consistent user interface (Fig. 1) standardizes all business processes: the user starts each process by selecting a product and a business transaction. Depending on this selection and the role of the user, the system then triggers backend applications and workflows from a large pool that includes numerous legacy applications. Fig. 1, for example, shows the new data entry interface of the workflow that generates a quote for a life insurance product. Fig. 2 and Fig. 3 show the same process at a later stage that illustrates the entitlement to insurance benefits.

Figure 2
Fig. 2: Table showing Entitlement to Insurance Benefits

Figure 3
Fig. 3: Chart showing Entitlement to Insurance Benefits

Choosing the technology for this new generation of applications was challenging. There were demanding and seemingly conflicting requirements: on the one hand, the IT department wanted a server-side J2EE architecture, because the applications needed to be easily installable and accessible both within the company and over the Internet. On the other hand, the users needed highly interactive, rich UIs because they are experts that cannot accept the action-wait-reload cycle of HTML applications. Finally, some of the applications must be installable offline, such that field agents could use them when visiting customers.

An evaluation showed that only Rich Internet Applications (RIA) offer the potential to combine these characteristics. Within RIA, there are three client-side technology options: JavaScript/AJAX, Java, and Flash [1]. MÜNCHENER VEREIN decided to use Java for three reasons:

  1. using the same technology both on the client and the server enables a homogeneous and simple programming model and is a key feature for flexible deployment scenarios;
  2. a pure Java solution will survive ten or more years because J2EE and J2SE are well-established and mature standards;
  3. availability of a proven product: UltraLightClient from Canoo [2][3]. This product leverages J2EE and J2SE infrastructure in a clever way that results in a minimal amount of proprietary code (50'000 lines) while offering the full power of Swing-based rich UIs in a J2EE architecture.

UltraLightClient is a Java library that transfers the API of Java’s standard UI library Swing from the client to the server [4]. The developer can use Swing in a server-side programming model, where the library resolves the issues of code distribution and communication between client and server. As a consequence, development is substantially simplified. A further bonus is that applications can be deployed in numerous configurations without changing the code. MÜNCHENER VEREIN has leveraged the latter benefit to realize applications that run both in multi-user server configuration and offline in stand-alone configuration.

The technology that enables this flexibility is intriguing: the starting point is UltraLightClient’s thin-client architecture with a Java-based presentation engine. This architecture allows shifting the borderline between client and server: in a typical J2EE configuration, the client is merely a UI rendering engine that is independent of an individual application, similar to a browser (Fig. 4). The application runs on the server, including the presentation logic.

Figure 4
Fig. 4: Client/Server Configuration

In a stand-alone configuration, the application can be deployed together with the rendering engine and run within a single Java VM. In this case, client/server interaction is simulated (Fig. 5).

Figure 5
Fig. 5: Stand-alone Configuration

Leveraging these configuration options requires that you realize a backend architecture that also allows both server-based and stand-alone deployment. Fig. 6 shows the solution chosen: a Service-Oriented Architecture (SOA) with portable components. The primary advantage of this SOA is that most components can be deployed unchanged either on the server or on the PC. Only the Application Adapter, the Resource Adapter, the Legacy Applications, Standard Applications, and the Persistency Service exist in two versions. In this way, the entire suite of applications can be made available both online and offline.

Figure 6
Fig. 6: Service-Oriented Architecture

After five years of development with an average team of 15 developers, about half of the desired new applications are in production. The first have been rolled out more than two years ago in server-based configuration for internal employees. For nine months now, applications have been delivered to the 6000 field agents that can use them both over the Internet and in stand-alone configuration.

Experience has shown that RIA technology is truly an ideal partner for SOA. RIA enables both high-end UIs for professionals that require top-notch usability and cost-effective multiple deployment configurations. Combined with an SOA approach that separates functional code from infrastructural code, RIA enables unprecedented leverage of applications and streamlining of business processes across different business units and user groups.

References

[1] Marc Domenig: Rich Internet Applications and AJAX – Selecting the best product, www.javalobby.org/articles/ajax-ria-overview
[2] Thomas Studer: Rich Thin Clients in der Praxis – am Beispiel von Canoo ULC. Java Magazin 1, 2005.
[3] www.canoo.com/ulc
[4] Bernhard Wagner: Server-Side Swing for Rich Internet Applications, http://javadesktop.org/articles/canoo