Plain old Java object: Difference between revisions

Content deleted Content added
changed "if the object (actually class) <b>was</b> a POJO before any annotations were added" to "if the object (actually class) <b>were</b> a POJO before any annotations were added" because it is subjunctive mood (ref: <ref>https://en.wikipedia.org/wiki/Subjunctive_mood</ref>).
fix sect WP:ORDER , links, fix case, def acros
Line 1:
In [[software engineering]], a '''Plainplain Oldold Java Objectobject''' ('''POJO''') is an ordinary [[Java (programming language)|Java]] [[Objectobject (computer science)|object]], not bound by any special restriction and not requiring any class path. The term was coined by [[Martin Fowler (software engineer)|Martin Fowler]], Rebecca Parsons and Josh MacKenzie in September 2000:<ref name="bliki" />
<blockquote>
"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."<ref name="bliki">{{cite web |url=http://www.martinfowler.com/bliki/POJO.html |title=MF Bliki: POJO |work=MartinFowler.com }}</ref>
</blockquote>
 
The term "POJO" initially denoted a Java object which does not follow any of the major Java object models, conventions, or frameworks; nowadays "POJO" may be used as an acronym for "Plain[[plain Oldold ''JavaScript'' Object"object]] as well, in which case the term denotes a [[JavaScript]] object of similar pedigree.<ref>{{cite web |url=http://ajaxian.com/archives/return-of-the-pojo-plain-ole-javascript |title=Return of the POJO: Plain ‘Ole JavaScript |last=Almaer |first=Dion |work=Ajaxian |date=2006-07-17 |accessdate=2014-08-19 }}</ref>
 
The term continues the pattern of older terms for technologies that do not use fancy new features, such as PORO ([[Plainplain Oldold Ruby Objectobject]] (PORO) in [[Ruby (programming language)|Ruby]], POTS ([[Plainplain Oldold Telephonetelephone Serviceservice]] (POTS) in [[telephony]] and Pod ([[Plain Old Documentation]] (pod) in [[Perl]]. The equivalent to POJO on the [[.NET framework]] is [[Plainplain Old CLR Objectobject]] (POCO).<ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/cc681329.aspx |title=POCO Support |work=microsoft.com |accessdate=2012-05-27 }}
</ref> For [[PHP]], it is Plain[[plain Oldold PHP Objectobject]] (POPO).<ref>{{cite web |url=http://jan.kneschke.de/2007/2/19/typesafe-objects-in-php/ |title=typesafe objects in PHP |first=Jan |last=Kneschke |date=2007-02-19 |work=kneschke.de |accessdate=2012-05-27 |url-status=dead |archiveurl=https://web.archive.org/web/20120326195616/http://jan.kneschke.de/2007/2/19/typesafe-objects-in-php/ |archivedate=2012-03-26 }}</ref><ref>{{cite web |url=http://jym.sg/controller-with-bare-bone-plain-old-php-objec |title=Controller with bare-bone Plain Old PHP Object aka POPO |first=Jym |last=Cheong |date=2011-06-26 |work=jym.sg |accessdate=2012-05-27 |url-status=dead |archiveurl=https://web.archive.org/web/20120326195611/http://jym.sg/controller-with-bare-bone-plain-old-php-objec |archivedate=2012-03-26 }}
</ref>
 
Line 102:
 
With the annotation as given above the bean isn't a truly pure POJO anymore, but since annotations are merely passive metadata this has far fewer harmful drawbacks compared to the invasiveness of having to extend classes and/or implement interfaces.<ref name="Martin2008" /> Accordingly, the programming model is still very much like the pure POJO model.
 
==Related Acronyms==
==={{Anchor|POJI}}Plain old Java Interface===
A Plain old Java Interface (POJI) is a basic form of [[Interface (Java)|Java interface]] and acceptable at points where more complex Java interfaces are not permitted.<ref name="RAD"/>{{rp|57,572,576,579,1340}}
 
==See also==
* [[Data transfer object]] (DTO)
* [[Anemic ___domain model]]
 
==Related Acronyms==
 
==={{Anchor|POJI}}Plain old Java Interface===
A Plain old Java Interface (POJI) is a basic form of [[Interface (Java)|Java interface]] and acceptable at points where more complex Java interfaces are not permitted.<ref name="RAD"/>{{rp|57,572,576,579,1340}}
 
==References==
{{Reflist|2|refs=
 
<ref name="RAD">{{cite book|title=Rational Application Developer V7.5 Programming Guide|first1=Ueli|last1=Wahli|first2=Miguel|last2=Vieira|first3=Ferreira Lopes|last3=Gomes|first4=Brian|last4=Hainey|first5=Ahmed|last5=Moharram|first6=JuanPablo|last6=Napoli|first7=Marco|last7=Rohr|first8=Henry|last8=Cui|first9=Patrick|last9=Gan|first10=Celso|last10=Gonzalez|first11=Pinar|last11=Ugurlu|first12=Lara|last12=Ziosi|publisher=IBM Redbooks|isbn=978-0738432892 }}</ref>