Plain old Java object explained

In software engineering, a plain old Java object (POJO) is an ordinary Java object, not bound by any special restriction. The term was coined by Martin Fowler, Rebecca Parsons and Josh MacKenzie in September 2000:

"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."[1]

The term "POJO" initially denoted a Java object which does not follow any of the major Java object models, conventions, or frameworks. It has since gained adoption as a language-agnostic term, because of the need for a common and easily understood term that contrasts with complicated object frameworks.

The term continues an acronym pattern to coin retronyms for constructs that do not use fancy new features:

Definition

Ideally speaking, a POJO is a Java object not bound by any restriction other than those forced by the Java Language Specification; i.e. a POJO should not have to

  1. Extend prespecified classes, as inpublic class Foo extends javax.servlet.http.HttpServlet

Notes and References

  1. Web site: MF Bliki: POJO . MartinFowler.com .
  2. Web site: Return of the POJO: Plain 'Ole JavaScript . dead . https://web.archive.org/web/20140913151352/http://ajaxian.com/archives/return-of-the-pojo-plain-ole-javascript . 2014-09-13 . Almaer . Dion . Ajaxian . 2006-07-17 . 2014-08-19 .
  3. Web site: POCO Support . microsoft.com . 2012-05-27 .
  4. Web site: typesafe objects in PHP . Jan . Kneschke . 2007-02-19 . kneschke.de . 2012-05-27 . dead . https://web.archive.org/web/20120326195616/http://jan.kneschke.de/2007/2/19/typesafe-objects-in-php/ . 2012-03-26 .
  5. Web site: Controller with bare-bone Plain Old PHP Object aka POPO . Jym . Cheong . 2011-06-26 . jym.sg . 2012-05-27 . dead . https://web.archive.org/web/20120326195611/http://jym.sg/controller-with-bare-bone-plain-old-php-objec . 2012-03-26 .