Java coders have lost their POJO

In an interview about Java programming, author Bruce Tate uses a term several times without explanation: POJO.

The same acronym is popular on the Apache Geronimo developer's list, so I looked for a definition. It stands for "plain old Java objects," simple classes that are implemented as an alternative to Enterprise Java Beans and other complex methodologies.

It appears to have been coined by Martin Fowler in the book Patterns of Enterprise Application Architecture:

The alternative is to use normal Java objects. This always causes surprise because it's amazing how many people think you can't run regular Java objects in an EJB container. I've come to the conclusion that people forget about regular Java objects because they haven't got a fancy name -- so I've given them one: POJOs (Plain Old Java Objects). A POJO domain model is easier to put together, quick to build, can run and test outside of an EJB container, and isn't dependent on EJB (maybe that's why EJB vendors don't encourage you to use them).


Thanks for the correction -- I've updated the item. (For those who didn't see the error, I got my Java book authoring Bruces confused.)

The Bitter EJB author is Bruce Tate not Bruce Eckel (Thinking in Java fame)

I ran into the same question a few days back and then found this

Etymology: at The Phone Company (back when it was "The"), they made a distinction between the way phones used to work (copper wires; basic calling services) versus the newer services (like Call Waiting, or Three-Way Conference calls) and the newer wireless transport technologies. The former were called "Plain Old Telephone Service", or POTS.

Now, fast forward to the C++ standards meetings, where the need arose to distinguish between data structures of the sort that could possibly be compatible with C, versus the newer C++ data structures that required all sorts of hidden language extras. What to call the former? Well, guess where Bjarne Stroustrup and Andrew Koenig worked at the time: Bell Labs. The slang POTS so perfectly fit this application, that they used "PODS" ... "Plain Old Data Structures". This was in common use within the committee while I was still attending meetings. That places it no later than 1995.

I think the term even made it into the C++ standard somewhere.

It certainly seems to me that this is where POJO came from, though I haven't traced down the coinage.

That's probably the inspiration for these plain ol' acronyms. I can remember lots of POTS references when I used to read 2600 Magazine regularly.

Add a Comment

All comments are moderated before publication. These HTML tags are permitted: <p>, <b>, <i>, <a>, and <blockquote>. This site is protected by reCAPTCHA (for which the Google Privacy Policy and Terms of Service apply).