I proposed this talk as I think there is not a lot of information available for people setting out to build large swing applications. So I wanted to share what I have learned from working on several and building one from scratch. Hope to see you there 🙂

Why Spaghetti Is Not Tasty: Architecting Full-Scale Swing Apps
This presentation tackles the biggest issue in building medium- to large-scale Swing applications: if they are not architected from the beginning, there is a high possibility of the interconnections and communication (events/listeners) becoming the biggest pile of spaghetti you have ever seen. This leads to unmanageable application code; slipping project deadlines; spiraling development costs, and in bad cases, project failure. The presentation sets out to explain the main issues a developer is likely to come across in trying to build a full-scale Swing application.

• Wiring – how does one part of the application gets access to another part—for example, how does the Open action in the File menu get access to the main panel to change its content or how does a dialog box access the main frame?
• Communication – when something changes in the application’s state, how do you notify all the interested parts of the application? For example, if you change the selection of items in the main view of your application, how many parts of the application will need to know about that selection change. For starters, there are bound to be a load of actions for Select All, Copy, and Paste that might want to be enabled/disabled, based on the selection. You may have detail panels that show the details of the selected item that need to change their content and so on.
• Modularity – How do you break a large application down into manageable parts that can also make it easy to manage and split within a team.

The session also explains the common ways of handling these issues and discusses the pros and cons of each, including introducing open-source solutions such as Eclipse OSGi, NetBeans software, and Platonos. It finishes up with a fully realized example architecture for large Swing applications that the speaker developed for Imagery (www.xerto.com/imagery) and some hands-on demonstrations of how to get started and code a simple application with this framework. Attendees receive a URL for downloading the framework so they can try it themselves.

The presentation aims to guide the attendees through gaining a understanding of the issues to having a good idea of how to solve them at a code level, so they don’t end up with a pile of spaghetti.