# Plain Old Java Object

POJO és un acrònim de Plain Old Java Object, que es refereix als objectes Java que no es veuen carregats per especificacions que incrementen la seva estructura d'atributs o mètodes, especialment, no segueixen l'especificació dels Enterprise JavaBeans, que es va popularitzar tot i la seva complexitat i que presumptament posava en perill la difusió de Java. Aquest concepte va ser encunyat per Martin Fowler, Rebecca Parsons i Josh MacKenzie i rep el suport dels qui defensen que com més simple és el disseny, millor.
| « | Ens preguntàvem per què la gent estava tan en contra d'usar objectes regulars als seus sistemes i vam concloure que és a causa de no tenir un nom elegant Així que li'n vàrem donar un i va ser molt ben acollit. | » |
El terme continua el patró de termes més antics per tecnologies que no usen funcionalitats elegants noves com els POTS (Plain Old Telephone Service) en telefonia i PODS (Plain Old Data Structures) que es defineixen en C++ però només usen les característiques del llenguatge C.
El terme probablement ha aconseguit acceptació arreu a causa de la necessitat d'un terme de comprensió comuna i fàcil que contrasta amb entorns complicats d'objectes. Un JavaBean és un POJO que és serialitzable, té un constructor sense argument i permet l'accés a propietats usant mètodes de tipus getter o setter. Un Enterprise JavaBean no és una classe simple sinó que és un component de model complet (un cop més, EJB 3 redueix la complexitat dels Enterprise JavaBeans).
El terme serveix com a recordatori que dissenys més simples poden ser millors que incorporar un entorn complex en l'arquitectura d'un sistema sense motius de prou pes. Com que dissenyar amb POJOs ha esdevingut més habitual, els sistemes han tret al descobert que cal donar als POJOs algunes de les funcionalitats usades en entorns complexos i més possibilitat de tria sobre quines funcionalitats calen realment. Hibernate i Spring en són exemples.

## Variacions contextuals

Des de novembre de 2005, el terme "POJO" s'usa principalment per denotar un objecte Java que no segueix cap dels principals models, convencions o entorns d'objectes Java, com els EJB. Tots els objectes Java són POJOs. Més estrictament, és un objecte que no està lligat a cap restricció més que les que imposa l'especificació del Llenguatge Java. Per tant, un POJO no hauria de:
    1. Estendre classes preespecificades, com a
    2. Implementar interfícies preespecificades, com a
    3. Contenir anotacions preespecificades, com a
Malgrat tot, degut a dificultats tècniques i d'altres raons, molts productes de programari o entorns descrits com POJO-compliant, de fet encara requereixen l'ús d'anotacions preespecificades per funcionalitats com persistència per funcionar correctament.

## Generació de projectes POJO
### OpenXava

    Entorn per desenvolupar aplicacions de negoci J2EE ràpida i fàcilment. Està basat en components definits en XML. Ric en funcionalitats i flexible, perquè ha estat usat durant anys per a crear aplicacions de negoci. Genera POJO Hibernate EJB2 i EJB3 JPA ...

### PlainXML

    Genera POJO per DTD; mapeig XML-POJO via anotacions de Java5 o DTD; manipulacions XML usant POJO sense SAX/DOM; Preprocessat de documents XML usant llenguatge d'expressions; XML Binari; RMI amigable amb XML; Exporta a JSON; ordenació XML ...

### PAT

    llibreria de persistència AOP (JBossAOP). Proveeix de persistència la capa sobre Prevayler (1.02). Permet que els usuaris escriguin el seu codi sense preocupar-se de la persistència. Usa anotacions...

### Java Object Relation

    Eina de mapeig. Per la majoria de les bases de dades...

### AutoPersistJ

    Assiteix els desenvolupadors en el desenvolupament de la capa de persistència EE...

### PojoGen

    Petita eina per generar codi Java.

### Apache Felix iPOJO Arxivat 2007-11-19 a Wayback Machine.

    Nou tipus de component en temps d'execució per arquitectures orientades al servei.

### JBoss Microcontainer Arxivat 2007-12-15 a Wayback Machine.

    El Microcontenidor JBoss és un refactoring del Microkernel JMX de JBoss JMX per donar suport directe a implantació de POJO i ús standalone fora del JBoss.