Channels ▼

Eric Bruno

Dr. Dobb's Bloggers

The Bowl of Jello Theory

July 07, 2008

I've worked on projects where, if you touch just one small part of the code, other developers cringe because it's so fragile. The sub-system works almost on accident, and any changes to it run the risk of total application collapse. I call this the "bowl of jello theory," because if you touch it in one place, the whole thing jiggles and wobbles, so to speak. Go too far, and the whole thing will collapse.

This is a sign of poor application architecture, and Java can help in so many ways here. For instance, Java's use of classes, data hiding, and abstraction, offer obvious ways to avoid this. But the strict use of interfaces, and the JavaBean programming model for business logic, go a long way towards helping avoid the Jello disaster.

I wrote an article years ago ( on using an event agent in Java to help hide the classes that implement interfaces and source events. This is an easy pattern to implement, and helps to reduce the rippling effect changes often have in applications.

Another way to help avoid the Jello Effect, albeit a more complex one, is to use a messaging sub-system such as JMS. This also allows you to transparently distribute your application across servers, and better take advantage of multiple cores even on one server. 

This works by separating the components of your application using a more abstract concept than interfaces: the message. Some call this an event-driven architecture, but having application components live their lives in silos, happily sending a receiving messages (events) to do all of their work, helps to achieve an extremely robust system.

To learn more about these patterns and approaches, read the following:

  • The Java Event Agent:
  • The Java Message Service (JMS):
  • Lightweight JMS Provide: 
  • Event-drive Programming:, or

Happy coding!


Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.