<chapter id="term">

   <title>Terminology</title>

   <sect1 id="overview" revision="1">
      <title>Overview</title>

      <para>
         The section lists some basic terminology that will be used throughout this guide.
      </para>

      <para>

         <variablelist spacing="compact">
            <varlistentry>
               <term>Aop</term>
               <listitem>
                  <para>
                     Aspect-Oriented Programming (AOP) is a new paradigm that allows you to organize
                     and layer your software applications in ways that are impossible with traditional
                     object-oriented approaches. Aspects allow you to transparently glue functionality together
                     so that you can have a more layered design. AOP allows you to intercept any event in a Java
                     program and trigger functionality based on those events.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>JBossAop</term>
               <listitem>
                  <para>
                     JBossAop is an open-source Aop framework library developed by JBoss. It is 100% Java based and can be run
                     either
                     as a standalone or inside an application server environment. More details can be found at
                     www.jboss.com.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>Dynamic Aop</term>
               <listitem>
                  <para>
                     Dynamic Aop is a feature of JBossAop that provides a hook so that a caller can insert event
                     interception on the POJO at runtime. PojoCache currently uses this feature to perform
                     field level interception.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>JGroups</term>
               <listitem>
                  <para>
                     JGroups is a reliable Java group messaging library that is open-source and LGPL. In addition to reliable
                     messaging transport, it also performs group membership management. It has been a de facto
                     replication layer used by numerous open-source projects for clustering purposes. It is also used by
                     JBossCache for replication layer.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>TreeCache</term>
               <listitem>
                  <para>
                     TreeCache is a component of JBossCache that is a plain cache system. That is, it stores a straight
                     Java object reference and requires an object to be serializable to perform binary-wide replication.
                     It is Java-based, in-memory, replicated,
                     and persistent. PojoCache currently is a sub-class of TreeCache.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>POJO</term>
               <listitem>
                  <para>
                     Plain old Java object.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>Annotation</term>
               <listitem>
                  <para>
                     Annotation is a new feature in JDK5.0. It introduces metadata along side the Java code that can
                     be accessed at runtime. PojoCache currently use both JDK1.4 and JDK50 annotation to support POJO
                     instrumentation.
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>Prepare</term>
               <listitem>
                  <para>
                     Prepare is a keyword in JBossAop pointcut language used to specify which POJO needs to be
                     instrumented. It appears in a <literal>jboss-aop.xml</literal> file. However, if you can
                     use annotation to specify the POJO instrumentation, there is no
                     need for a <literal>jboss-aop.xml</literal> listing. Note that
                   When a POJO is declared properly either through the xml or annotation, we consider it "aspectized".
                  </para>
               </listitem>
            </varlistentry>

            <varlistentry>
               <term>Instrumentation</term>
               <listitem>
                  <para>
                     Instrumentation is an Aop process that basically pre-processes (e.g., performing byte-code
                     weaving)
                     on the POJO. There are two modes: compile- or load-time. Compile-time weaving can be done with
                     an Aop precompiler (<literal>aopc</literal>) while load-time is done to specify a special classloader
                     in the run script.
                     This step is necessary for an Aop system to intercept events that are interesting to users.
                  </para>
               </listitem>
            </varlistentry>
         </variablelist>
      </para>
   </sect1>

</chapter>

