Files
spring-plugin/src/doc/hera-reference.xml
Oliver Gierke b3fe7340f7 * updated version
* added revision entry for order change in core.xml

git-svn-id: svn+ssh://svn.synyx.de/var/svn/synyx/opensource/hera/trunk@5050 5a64d73e-33d6-4ccc-9058-23f8668ecac9
2009-03-23 15:43:44 +00:00

204 lines
5.4 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book [
<!ENTITY core SYSTEM "../../hera-core/src/doc/core.xml">
<!ENTITY metadata SYSTEM "../../hera-metadata/src/doc/metadata.xml">
]>
<!-- PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -->
<book>
<bookinfo>
<title>Hera</title>
<subtitle>The smallest plugin system ever</subtitle>
<authorgroup>
<author>
<firstname>Oliver</firstname>
<surname>Gierke</surname>
<affiliation>
<jobtitle>Software Architect</jobtitle>
<orgname>Synyx GmbH &amp; Co. KG</orgname>
</affiliation>
<email>gierke@synyx.de</email>
<address>Karlstraße 68, 76137 Karsruhe, Germany</address>
</author>
</authorgroup>
<releaseinfo>V0.4</releaseinfo>
<pubdate>23.03.2009</pubdate>
<copyright>
<year>2009</year>
<holder>Synyx GmbH &amp; Co. KG</holder>
</copyright>
<revhistory>
<revision>
<date>04.11.2008</date>
<author>
<firstname>Oliver</firstname>
<surname>Gierke</surname>
</author>
<revremark>Initial draft</revremark>
</revision>
<revision>
<date>05.11.2008</date>
<author>
<firstname>Oliver</firstname>
<surname>Gierke</surname>
</author>
<revremark>Added metadata module documentation</revremark>
</revision>
<revision>
<date>24.01.2009</date>
<author>
<firstname>Oliver</firstname>
<surname>Gierke</surname>
</author>
<revremark>Added remark to inner bean usage</revremark>
</revision>
<revision>
<date>23.03.2009</date>
<author>
<firstname>Oliver</firstname>
<surname>Gierke</surname>
</author>
<revremark>Added section on plugin ordering</revremark>
</revision>
</revhistory>
</bookinfo>
<preface>
<title>Preface</title>
<section>
<title>Introduction</title>
<para>Building extensible architectures nowadays is a core principle to
create maintainable applications. This is why fully fledged plugin
environments like <glossterm><abbrev>OSGi</abbrev></glossterm> are so
poular these days. Unfortunately the introduction of
<glossterm><abbrev>OSGi</abbrev></glossterm> introduces a lot of
complexity to projects.</para>
<para>Hera provides a more pragmatic approach to plugin development by
providing the core flexibility of having plugin implementations
extending a core system's functionality but of course not delivering
core <abbrev>OSGi</abbrev> features like dynamic class loading or
runtime installation and deployment of plugins. Although Hera thus is
not nearly as powerful as <abbrev>OSGi</abbrev>, it servers little man's
requirements to build a modular extensible application.</para>
</section>
<section id="preface.context">
<title>Context</title>
<para><itemizedlist spacing="compact">
<listitem>
<para>You want to build an extensible architecture minimizing
overhead as much as possible</para>
</listitem>
<listitem>
<para>You cannot use OSGi as fully fledged plugin architecture for
whatever reasons</para>
</listitem>
<listitem>
<para>You want to express extensibility by providing dedicated
plugin interfaces</para>
</listitem>
<listitem>
<para>You want to extend the core system by simply providing an
implementation of the plugin interface bundled in a JAR file and
available in the classpath.</para>
</listitem>
<listitem>
<para>(You use Spring in your application)</para>
</listitem>
</itemizedlist></para>
<para>The last point actually is not essential although Hera gains a lot
of momentum in collaborative use with Spring.</para>
</section>
<section>
<title>Technologies</title>
<simplesect>
<title>Spring</title>
<para>Spring is the defacto standard application framework for Java
applications. Its consistent programming model, easy configuration and
wide support for all kinds of third party libraries makes it the first
class citizen of application frameworks. Hera tightly integrates into
Spring's component model and extends the core container with some
custom functionality.</para>
</simplesect>
</section>
</preface>
&core;
&metadata;
<glossary>
<glossdiv>
<title>O</title>
<glossentry>
<glossterm>OSGi</glossterm>
<glossdef>
<para>Open Services Gateway Initiative - a fully fledged plugin
runtime environment on top of the Java VM - <ulink
url="http://en.wikipedia.org/wiki/OSGi">http://en.wikipedia.org/wiki/OSGi</ulink>.</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>X</title>
<glossentry>
<glossterm>XML</glossterm>
<glossdef>
<para>eXtensible Markup Language</para>
</glossdef>
</glossentry>
<glossentry>
<glossterm>XSD</glossterm>
<glossdef>
<para>Xml Schema Definition</para>
</glossdef>
</glossentry>
</glossdiv>
</glossary>
</book>