Welcome!

Java Authors: Jason Bloomberg, Shelly Palmer, Greg Smith, Fiona McNeill, Noel Wurst

Related Topics: AJAX & REA, Java

AJAX & REA: Article

Developing Rich Client Applications Using Swing

Part 1 - A comparison of available solutions

Before describing solutions available for rich client application development, it would be a good idea to explain what exactly a rich client application is and which rich client topologies can feasibly be built using the Java platform.

In the main, a rich client is a part of a software system that contains a user interface (UI) and whose front end is "rich," i.e., the user interface has rich graphical content and is highly interactive; a rich client application is also called a desktop application, since it provides content and functionalities that are usually provided by applications on the desktop of your own PC (access to local resources, complex user interface, the capability to connect to remote services, etc.).

Enterprise applications are an example of applications that require a "rich" front end, that is, applications employed in enterprises to manage some business process and data, such as CRM and SCM; in that context, having a "rich" front end becomes a determining and critical factor to ensure business productivity.

The term "client" indicates the existence of another layer in the software system, the "server" that usually provides services to the client side. The two layers used together compose a client/server application. A client/server application can usually combine two or three layers, so it is possible to distinguish several rich-client topologies:

•  Two-layered client/server applications, where the client side includes both the presentation (user interface) and the business logic (that is, the part of the application that contains data access and manipulation logic); the server side is usually made up of an information system layer, such as a database.

This kind of client is also called a fat client or thick client, because the client could operate independently from other systems, in some cases without depending on a server-side component.

Applications developed using Visual Basic or Delphi are examples of two-layered rich clients. Using the Java platform, it is possible to realize these kinds of applications using, for instance, the Swing toolkit for the user interface and some other technology for database access and manipulation; the latter can be developed using different solutions:

  • Using the JDBC directly to access the database
  • Using an ORM tool (Object-to-Relational Mapping) or a more simple data mapper tool whose purpose is to abstract the entity-relational model of the database by mapping it to objects and relations between objects
  • Using an entity persistence layer, based on JPA, a recent technology based on J2SE 1.5/1.6 having features similar to the ones supplied by an ORM tool

•  Three-layered client/server applications, where the client side includes only the presentation (user interface), the server side is focused on the business logic, and the third layer is related to the information system tier, i.e., the database; the server side has the task of providing services to the client side, so it must be accessible from the client side using some kind of communications protocol.

More Stories By Mauro Carniel

Mauro Carniel is a Software Architect at Sinesy. He has more than 10 years of enterprise software development experience utilizing JEE technologies, including JSP, JSF, Swing, EJB, JPA. He started focusing more on GUI-based client/server Java applications since 1998, then moved to web rich applications, including Sencha ExtJS and recently Mobile applications and Data Integration. He has a MSc in Information Technology from Udine University, Italy.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
pettevi 10/30/08 08:31:25 AM EDT

Thanks Mauro, don't forget Flamingo Swing component suite (https://flamingo.dev.java.net) or SwingX (https://swingx.dev.java.net) either. Or the other dozen toolkits out there that don't really raise to the same quality level.