| A '''POJO Application Server''' is a
container that hosts entire [[Java]] Applications in contrast to
Java Beans.
==Product features==
* The Java application is built ''outside'' of the
container, as a normal [[POJO]] application.
* It is capable of running any Java Application.
* ''Complete'' Java Applications are hosted by the
container, including the User Interface.
* Simplicity of design, is attained through a
design pattern.
==Theory==
A POJO container is able to move some classes out
of a [[POJO]] application and run them remotely.
This gives it the ability to move the User
Interface out of a running application to a remote machine.
Although the application is identical to the
stand-alone (independent) application, the running version of the
application is split, with some classes running remotely and some
classes running on the server.
A POJO container uses an extended
[[Model-view-controller]] design pattern idea.
The technique used to do this has been coined
"Coherent Diffusion".
The way this works is the container is able to
mine the wiring internal to a [[POJO]] application.
When one Java class calls another Java class in an
application, effectively there is a wire or conduit from the one
class to the other. This is what the POJO container is able to
intercept and extend across a network.
==Concept==
The concept of splitting an application into
client and server side components is radically different from most
other application server methodologies. Most apply the technique of
starting with components such as beans and then applying the
required infrastructure to weave it into a net workable application.
The splitting technique "Coherent
Diffusion", recognizes that a stand alone [[POJO]] application
is already a coherent whole application, and ''externalizes'' the
internal class linkages (wiring).
The idea of splitting a [[POJO]] application is an
ingenious technique, because the classes left behind in the
container, immediately become web services, and behave as a server.
This all happens without changing a single line of
code in the original stand-alone [[POJO]] application. This is why
it is also known as the Plug and Play application server.
==Coherent Diffusion==
This technique is applied to the stand-alone
application outside of the container.
The [[Model-view-controller | M.V.C]] technique is
almost identical to this design pattern.
Typically the main server class and main client
class are given Java Interfaces.
These classes are then instantiated in a
''controller'' class.
In the [[Model-view-controller | M.V.C]] model it
is used to divorce client side from server side. The idea is that
the server side may be changed with no affect on the client side.
In the '''POJO Application Server''' this is also
true, however the ''controller'' class also represents the place
where all the class linkages, wires or main arteries of the
application come together.
Its then a simple matter to tell the '''POJO
Application Server''' which classes must be run remotely, and which
must be run on the server. The wires that connect these classes are
already exposed in the ''controller'', and the server extends the
linkages that connect remote and server classes across the network.
Once this technique has been applied, the stand-alone application
may be deployed to the server.
|