User Documentation

One minute description
Two minute tutorial
Five minute introduction
Advanced Topics
FAQ
Container
Components
Terminology
Mock Objects
Inversion of Control Types

Patterns

Inversion of Control 
Dependency Injection 
Constructor Injection 
Setter Injection 
Interface Implementation Separation 
Lifecycle 
Antipatterns

Developer Documentation

 Current build status
How To Contribute
Relative Volunteering
Release Process

Project Information

Slogan
Mailing lists
Source Repositories
Open Issues
Blog entries 
Statistics
Team
Sister Projects
TShirts

Miscellaneous

Differentiators
Nirvana

Full Sitemap

Feeds


Site
News
Terminology

Authors: Paul Hammant, Others

Also known as Picosaurus

h2 Terms

These can be arrived at from the definitions.

  • Everything is an object
  • Everything which is not a type-1 component nor a domain-specific object is a POJO
  • A type-2 component is a JavaBean, and a JavaBean is a type-2 component
  • A type-3 Component is not a JavaBean, but is a POJO
  • A JavaBean can be any of the three types of IoC and domain-specific all at the same time
  • Spring, PicoContainer, XWork and other frameworks all support both Components and Data Objects to some extend. Avalon tries real hard to not support Data Objects, but that is nearly impossible.

h3 Object / Instance

An "object" as per the Java Language Specification.

h3 Class

A "class" as per the Java Language Specification.

h3 POJO (Plain Old Java Object)

An object that does not use nor support any other kind of component/bean specification. It does not implement any lifecycle or marker interfaces, it does not provide any kind of metadata. Will usually follow the minimum requirements for classifying it as a JavaBean though.

h3 Javabean / Bean

An object that is a "valid java bean" according to the JavaBean Specification. That is, an object that has a public default constructor, and that supports setting and/or retrieving all or a part of its state using so-called setter and getter methods, which are named getXXX(), setXXX() or isXXX(), where XXX identifies part of its state. The JavaBean specification defines a metadata framework, an event framework, and some other things which are less relevant in this context. A JavaBean may represent both data and functionality.

h3 Data Object / Entity Bean / Data Bean / PODO

An object that only represents data, but contains no 'logic' or any kind of other functionality (except for perhaps some utility methods that transform the data into some other form, like getXXXasString(). Will often override equals() and hashCode(); will often be serializable. Does not create threads, does not keep references to non-data objects.

h3 Component / Service

An object that only represents functionality. It is a "unit of logic", that can "do work". In a well-designed application, the work that a component can do is specified in a work interface. Will usually not override equals() or hashCode().

h3 Passive Component

A component that does not use threads (not even indirectly).

h3 Active Component

A component that uses threads (possibly indirectly through the use of a Thread Pool or Executor component).

h3 Contextualized Dependancy Lookup Component

A component that has a public default constructor and that usually has its state set up and/or modified through the use of some kind of framework-specific mechanism.

h3 Setter Injection Component

A component that has a public default constructor and that has its state set up through the use of setter methods.

h3 Constructor Injection Component

A component that has one or more public constructors and that has its state set up through the arguments provided in one of these constructors.

h3 Constructor/Setter Dependency Injection Component

A component that has a public constructor and that has its state set up through the arguments provided in that constructor and through the use of setter methods.

h3 IoC Component

A component that does not implement any kind of logic to set up its own state, but completely depends on other parties to provide that state to it.

h3 Non-IoC Component

A component that implements some kind of logic to set up its own state. Examples: a component that reads an XML file; a component that looks up dependencies in JNDI; a component that queries system properties.

h3 Domain-Specific Object

An object that implements a specification that is less generic than Java itself in its applicability. Example: EJB, Servlets.

h3 Spring-supported Object

An object that can be 'natively' used in the Spring Framework. Any JavaBean (with some extensions to that specification like "initialization completion" support), any object with a public default constructor that does not require any method calls to set up its state.

h3 PicoContainer-supported Object

An object that can be 'natively' used in PicoContainer. Any Type-3 component.

h3 XWork-supported Object

An object that can be 'natively' used in the XWork Framework. Any object with a public default constructor that has its state set up through XXXAware interfaces.

h3 Fail Fast


An object that fails fast is an object that indicates as early as possible if it is in an inconsistent or unusable state (by throwing a fatal exception). The fastest possible way to FailFast is to do so during instantiation. This can be handled in an elegant way if the class is a GoodCitizen.

h3 PicoComponent
A component designed to work in a PicoContainer.

h3 PicoCompatible


A component compatible with PicoContainer. Is likely to be a PicoComponent.

h3 Pico Powered
A product is said to be "PicoPowered" if it embeds or uses PicoContainer internally.

h2 Jovial Terms

h3 Picoification
The act of refactoring a codebase to turn existing components into Pico compatible ones.

h3 Picosicate


The art of dithering with respect to a pending Picoification.

h3 Picant
The often false declaration that a component cannot be turned into a pico component. Leaves an unsavoury taste in mouth.

h3 Picography


A retrospective article by a developer on the subject of Picoification of a set of components to the PicoComponent design. Usually a tool that the developer is fond of. Usually to a blog.

h3 Piconate
See Picoification.

h3 Picoscate


Inept Picoification. Code being messy as a result.

h3 Picofile
A developer who rapidly believes PicoContainer to be the greatest thing ever.

h3 Picosistance


The movement against Picoification and PicoContainer. This divided into two camps (who hate each other). There is the StaticIsKing group (many of whom hate each other as well as themselves). There are also fellow IoC believers who hold a candle for alternate IoC designs. Usually Setter Injector or Contextualized Lookup of which there are many. We have not identified any other groups in the Contructor Injector IoC space - could be something to do with Picovelation.

h3 Picovelation
The realisation that there is no more simple or elemental IoC design for component composition than PicoContainer.