Content deleted Content added
Amomchilov (talk | contribs) Replace a list described with a paragraph with a bullet point list. |
m oops, fix duplicate ref |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 1:
{{Short description|Type of object in Java programming language}}
In [[software engineering]], a '''plain old Java object''' ('''POJO''') is an ordinary [[Java (programming language)|Java]] [[object (computer science)|object]], not bound by any special restriction. The term was coined by [[Martin Fowler (software engineer)|Martin Fowler]], Rebecca Parsons and Josh MacKenzie in September 2000:<ref name="bliki">{{cite web |url=http://www.martinfowler.com/bliki/POJO.html |title=MF Bliki: POJO |work=MartinFowler.com }}</ref>
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.{{Citation needed|date=April 2013}}
Line 9 ⟶ 8:
The term continues an [[acronym]] pattern to coin [[retronym | retronyms]] for constructs that do not use fancy new features:
*
*
*
* [[Plain old CLR object]] (POCO)<ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/cc681329.aspx |title=POCO Support |work=microsoft.com |access-date=2012-05-27 }}
</ref> in the [[.NET Framework]]
*
</ref> in [[PHP]]
* [[Plain old telephone service]] (POTS) in [[telephony]]
Line 40 ⟶ 39:
The definition of the POJO can be as follows:
<syntaxhighlight lang="java">public class MyBean {
public class MyBean {▼
private String someProperty;
Line 52 ⟶ 50:
this.someProperty = someProperty;
}
}</syntaxhighlight>▼
▲</syntaxhighlight>
Because of the JavaBean naming conventions the single "someProperty" reference can be automatically translated to the "getSomeProperty()" (or "isSomeProperty()" if the property is of [[Boolean type]]) method for getting a value, and to the "setSomeProperty(String)" method for setting a value.
The [https://projectlombok.org/ lombok] library allows to change the code dynamically to integrate those conventions without the hassle to write them. The following code would generate the same bean, with the addition of an empty constructor :<syntaxhighlight lang="java">@NoArgsConstructor
▲public class MyBean {
@Getter @Setter
private String someProperty;
}</syntaxhighlight>Other libraries or framework generate code (or bytecode) with those conventions directly. The addition of those tools help alleviate the [[Boilerplate code|boilerplate]], which in turn reduces the bugs frequency and maintenance cost .
===Transparently adding services===
|