You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by le...@apache.org on 2003/01/29 17:06:17 UTC
cvs commit: jakarta-avalon-site/site/history/images server-01.gif server-02.gif server-03.gif server-04.gif
leosimons 2003/01/29 08:06:17
Modified: site/history index.html
Added: site/history call-to-vote.html changes.html
need-for-avalon.html what-is-a-server.html
site/history/images server-01.gif server-02.gif
server-03.gif server-04.gif
Log:
look! ancient history! :D
Revision Changes Path
1.2 +168 -1 jakarta-avalon-site/site/history/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-avalon-site/site/history/index.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- index.html 27 Jan 2003 19:51:38 -0000 1.1
+++ index.html 29 Jan 2003 16:06:16 -0000 1.2
@@ -1 +1,168 @@
-<html><head><title>Resource not Found</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1" noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> <u>Page Not Available.</u></p><p><b>description</b> <u>The requested resource couldn't be found.</u></p><p><b>sender</b> org.apache.cocoon.Main</p><p><b>source</b> Cocoon commandline (Main.java)</p><p><b>request-uri</b><pre>history/index.html</pre></p><p><b>missing-file</b><pre>site\history\index.html</pre></p><hr size="1" noshade="true"/></body></html>
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel="stylesheet" href="../skin/tigris.css" type="text/css">
+<link rel="stylesheet" href="../skin/site.css" type="text/css">
+<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
+<title>History of Avalon</title>
+</head>
+<body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
+<!--================= start Banner ==================-->
+<div id="banner">
+<table width="100%" cellpadding="8" cellspacing="0" border="0">
+<tbody>
+<tr>
+<!--================= start Group Logo ==================-->
+<td align="left">
+<div class="groupLogo">
+<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache" src="../images/group-logo.gif"></a>
+</div>
+</td>
+<!--================= end Group Logo ==================-->
+<!--================= start Project Logo ==================--><td align="right">
+<div class="projectLogo">
+<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache Avalon" src="../images/project-logo.gif"></a>
+</div>
+</td>
+<!--================= end Project Logo ==================-->
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Banner ==================-->
+<!--================= start Main ==================-->
+<table width="100%" cellpadding="0" cellspacing="0" border="0" id="breadcrumbs">
+<tbody>
+<!--================= start Status ==================-->
+<tr class="status">
+<td>
+<!--================= start BreadCrumb ==================--><a href=""></a><a href=""></a><a href=""></a>
+<!--================= end BreadCrumb ==================--></td><td id="tabs">
+<!--================= start Tabs ==================-->
+<div class="tab">
+<span class="selectedTab"><a href="../index.html"><font color="#000000">Home</font></a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/framework/">Framework</a></span> | <span class="unselectedTab"><a href="../components/index.html">Components</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> | <span class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
+</div>
+<!--================= end Tabs ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+<!--================= end Status ==================-->
+<table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
+<tbody>
+<tr valign="top">
+<!--================= start Menu ==================-->
+<td id="leftcol">
+<div id="navcolumn">
+<div class="menuBar">
+<div class="menu">
+<span class="menuLabel">About</span>
+
+<div class="menuItem">
+<span class="menuSelected">Introduction</span>
+</div>
+
+<div class="menuItem">
+<a href="call-to-vote.html">Call To Vote</a>
+</div>
+
+<div class="menuItem">
+<a href="need-for-avalon.html">Need For Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="what-is-a-server.html">What is a Server?</a>
+</div>
+
+</div>
+</div>
+</div>
+</td>
+<!--================= end Menu ==================-->
+<!--================= start Content ==================--><td>
+<div id="bodycol">
+<div class="app">
+<div align="center">
+<h1>History of Avalon</h1>
+<h2></h2>
+</div>
+<div class="h3">
+
+
+
+
+
+
+<div class="h3">
+<h3>History</h3>
+</div>
+
+
+
+<p>
+ This document tracks the history of the Avalon project. Avalon was originally started with
+ a realisation that Java is a great platform for developing server products and a
+ <a href="call-to-vote.html">call to vote</a>. There was a lot of work
+ formalizing what exactly a <a href="what-is-a-server.html">server</a> consists
+ of and why this project was <a href="need-for-avalon.html">needed</a>. These
+ discussions led to the initial development of the Java Apache Server Framework.
+</p>
+
+
+<p>
+ Over time the Java Apache Server Framework project was renamed Avalon. This was in
+ recognition that the original ideas have evolved over time. Avalon became a
+ repository of general utility code, a design and testing ground for component based
+ solutions, a micro kernel and set of generalized server oriented services. This combined
+ with a move from the Java Apache project to the Jakarta project prompted the revision.
+ At this time the kernel code was repackaged under the name Phoenix, core services
+ under the name Cornerstone and the general components was packaged under name Excalibur.
+</p>
+
+
+
+
+
+<div id="authors" align="right">by Avalon Documentation Team, Peter Donald</div>
+</div>
+</div>
+</div>
+</td>
+<!--================= end Content ==================-->
+</tr>
+</tbody>
+</table>
+<!--================= end Main ==================-->
+<!--================= start Footer ==================-->
+<div id="footer">
+<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
+<tbody>
+<tr>
+<!--================= start Copyright ==================-->
+<td colspan="2">
+<div align="center">
+<div class="copyright">
+ Copyright © 2002 The Apache Software Foundation.. All rights reserved.
+ </div>
+</div>
+</td>
+<!--================= end Copyright ==================-->
+</tr>
+<tr>
+<td align="left">
+<!--================= start Host ==================-->
+<!--================= end Host ==================--></td><td align="right">
+<!--================= start Credits ==================-->
+<div align="right">
+<div class="credit"></div>
+</div>
+<!--================= end Credits ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Footer ==================-->
+</body>
+</html>
1.1 jakarta-avalon-site/site/history/call-to-vote.html
Index: call-to-vote.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="../skin/tigris.css" type="text/css">
<link rel="stylesheet" href="../skin/site.css" type="text/css">
<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
<title>History</title>
</head>
<body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
<!--================= start Banner ==================-->
<div id="banner">
<table width="100%" cellpadding="8" cellspacing="0" border="0">
<tbody>
<tr>
<!--================= start Group Logo ==================-->
<td align="left">
<div class="groupLogo">
<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache" src="../images/group-logo.gif"></a>
</div>
</td>
<!--================= end Group Logo ==================-->
<!--================= start Project Logo ==================--><td align="right">
<div class="projectLogo">
<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache Avalon" src="../images/project-logo.gif"></a>
</div>
</td>
<!--================= end Project Logo ==================-->
</tr>
</tbody>
</table>
</div>
<!--================= end Banner ==================-->
<!--================= start Main ==================-->
<table width="100%" cellpadding="0" cellspacing="0" border="0" id="breadcrumbs">
<tbody>
<!--================= start Status ==================-->
<tr class="status">
<td>
<!--================= start BreadCrumb ==================--><a href=""></a><a href=""></a><a href=""></a>
<!--================= end BreadCrumb ==================--></td><td id="tabs">
<!--================= start Tabs ==================-->
<div class="tab">
<span class="selectedTab"><a href="../index.html"><font color="#000000">Home</font></a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/framework/">Framework</a></span> | <span class="unselectedTab"><a href="../components/index.html">Components</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> | <span class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
</div>
<!--================= end Tabs ==================-->
</td>
</tr>
</tbody>
</table>
<!--================= end Status ==================-->
<table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
<tbody>
<tr valign="top">
<!--================= start Menu ==================-->
<td id="leftcol">
<div id="navcolumn">
<div class="menuBar">
<div class="menu">
<span class="menuLabel">About</span>
<div class="menuItem">
<a href="index.html">Introduction</a>
</div>
<div class="menuItem">
<span class="menuSelected">Call To Vote</span>
</div>
<div class="menuItem">
<a href="need-for-avalon.html">Need For Avalon</a>
</div>
<div class="menuItem">
<a href="what-is-a-server.html">What is a Server?</a>
</div>
</div>
</div>
</div>
</td>
<!--================= end Menu ==================-->
<!--================= start Content ==================--><td>
<div id="bodycol">
<div class="app">
<div align="center">
<h1>History</h1>
<h2></h2>
</div>
<div class="h3">
<div class="h3">
<h3>Introduction</h3>
</div>
<p>
I spent some time thinking about some of the issues that were discussed on this
list in the last month, after the first release of Apache JServ 1.0b and after the
development pressure was reduced.
</p>
<p>
It is clear, to me and to others on this list, that Apache JServ 1.0 just barely
scratched the potentials of this project in sharing IQ and ideas aiming to fill
those gaps the advent of the Java technology on the server world produced.
</p>
<p>
It is also clear, from different perspectives (users, developers, software
engineers, management people), that servers are a big part of the present/future
of everyday work and that Java allows the creation of performance oriented, solid and
rapid-delivered server solutions. Other languages do not perform as good when
all these three "forces" are evaluated together (besides, maybe, SmallTalk, but
this is another issue).
</p>
<p>
Java is trendy, that's true, but we all know that Java is a well-designed object
oriented language. May not be the best, I grant that, but it's the only one that came
to please all those people I listed above.
</p>
<p>
Following this direction, and feeling the lack of professional Java server
solutions on many fields, the Java Apache Project was created to fill this gap
using the power of open source. We don't want to compete with Apache or with
any other server implementation. We are betting on Java for the server side, but
we will never "rewrite" some server implementation in Java, unless this can
lead to significant improvements and doesn't go against other open source
projects.
</p>
<p>
The final goal is a family of 100% pure server solutions for the Java Virtual
Machine.
</p>
<p>
Since server applications share lots of logic/code between them, it is obvious
that a common server framework, along with design rules and abstract
implementations, would allow faster time-to-market, easier code management,
parallel development, bug fix reflection on all projects and tight integration
between the different server solutions.
</p>
<p>
I do believe that the time taken to design and develop such a framework will be
"invested" by this project and its developers. The creation of this project doesn't
mean other projects can't continue to evolve: the final goal is to integrate
existing server solutions (JServ) into the framework but this is not a short term
goal so this doesn't influence it's evolution/time-to-market for future
releases/features.
</p>
<div class="h3">
<h3>Request For Vote</h3>
</div>
<p>
For the reasons above, I propose the creation of a new project to handle the
design of a the Java Apache Server Framework that will be the foundation on
which all server projects hosted by the Java Apache Project will be based on.
</p>
<p>
This project goals are:
</p>
<ol>
<li>
Design and documentation of the Java Apache Server Framework.
</li>
<li>
Creation and implementation of this framework (interfaces, abstract classes,
and shared modules).
</li>
<li>
Centralized management of the evolution/fixing/patching of both the shared
code and the framework design.
</li>
</ol>
<div class="h3">
<h3>What the Java Apache Server Framework Is</h3>
</div>
<p>
It's a design methodology that allows design reuse as well as code reuse between
different server projects. These projects gain the advantage of software reuse
and the simplicity of developing/managing only the different logic.
</p>
<p>
This framework will be based on Java technology and would allow:
</p>
<ol>
<li>
Partition of shared logic context into polymorphic modules that are used
through their public interfaces and not through their actual implementation (Log
systems, Object stores, Virtual File Systems, Configuration repository,
Concurrency Strategies, etc..)
</li>
<li>
Creation of a common lifecycle for server operations (the Service
interface)
</li>
<li>
Creation of a ServiceManager for service management (maybe both internal
or external the JVM: native wrapping and control via JNI would allow
better fault tolerance for the JVM through process separation)
</li>
<li>
Shared resources can be either centralized or duplicated for each service,
allowing the use of a single JVM for multiple servers and common logic
sharing (i.e. common thread pools, log systems and configuration
repositories...)
</li>
<li>
A central access point for configuration (via HTTP, SMTP, voice, RMI,
SNMP, IIOP, depending on the services implemented)
</li>
<li>
Reduced effort in service development since they become plugins for this
framework and reuse big parts of the code base. The design and behavior is
also documented and shared between different services.
</li>
</ol>
<div id="authors" align="right">by Stefano Mazzocchi</div>
</div>
</div>
</div>
</td>
<!--================= end Content ==================-->
</tr>
</tbody>
</table>
<!--================= end Main ==================-->
<!--================= start Footer ==================-->
<div id="footer">
<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
<tbody>
<tr>
<!--================= start Copyright ==================-->
<td colspan="2">
<div align="center">
<div class="copyright">
Copyright © 2002 The Apache Software Foundation.. All rights reserved.
</div>
</div>
</td>
<!--================= end Copyright ==================-->
</tr>
<tr>
<td align="left">
<!--================= start Host ==================-->
<!--================= end Host ==================--></td><td align="right">
<!--================= start Credits ==================-->
<div align="right">
<div class="credit"></div>
</div>
<!--================= end Credits ==================-->
</td>
</tr>
</tbody>
</table>
</div>
<!--================= end Footer ==================-->
</body>
</html>
1.1 jakarta-avalon-site/site/history/changes.html
Index: changes.html
===================================================================
<html><head><title>Resource not Found</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1" noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> <u>Page Not Available.</u></p><p><b>description</b> <u>The requested resource couldn't be found.</u></p><p><b>sender</b> org.apache.cocoon.Main</p><p><b>source</b> Cocoon commandline (Main.java)</p><p><b>request-uri</b><pre>history/changes.html</pre></p><p><b>missing-file</b><pre>C:\gump\cvs\jakarta-avalon-site\build\site\history\changes.html</pre></p><hr size="1" noshade="true"/></body></html>
1.1 jakarta-avalon-site/site/history/need-for-avalon.html
Index: need-for-avalon.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="../skin/tigris.css" type="text/css">
<link rel="stylesheet" href="../skin/site.css" type="text/css">
<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
<title>History</title>
</head>
<body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
<!--================= start Banner ==================-->
<div id="banner">
<table width="100%" cellpadding="8" cellspacing="0" border="0">
<tbody>
<tr>
<!--================= start Group Logo ==================-->
<td align="left">
<div class="groupLogo">
<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache" src="../images/group-logo.gif"></a>
</div>
</td>
<!--================= end Group Logo ==================-->
<!--================= start Project Logo ==================--><td align="right">
<div class="projectLogo">
<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache Avalon" src="../images/project-logo.gif"></a>
</div>
</td>
<!--================= end Project Logo ==================-->
</tr>
</tbody>
</table>
</div>
<!--================= end Banner ==================-->
<!--================= start Main ==================-->
<table width="100%" cellpadding="0" cellspacing="0" border="0" id="breadcrumbs">
<tbody>
<!--================= start Status ==================-->
<tr class="status">
<td>
<!--================= start BreadCrumb ==================--><a href=""></a><a href=""></a><a href=""></a>
<!--================= end BreadCrumb ==================--></td><td id="tabs">
<!--================= start Tabs ==================-->
<div class="tab">
<span class="selectedTab"><a href="../index.html"><font color="#000000">Home</font></a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/framework/">Framework</a></span> | <span class="unselectedTab"><a href="../components/index.html">Components</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> | <span class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
</div>
<!--================= end Tabs ==================-->
</td>
</tr>
</tbody>
</table>
<!--================= end Status ==================-->
<table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
<tbody>
<tr valign="top">
<!--================= start Menu ==================-->
<td id="leftcol">
<div id="navcolumn">
<div class="menuBar">
<div class="menu">
<span class="menuLabel">About</span>
<div class="menuItem">
<a href="index.html">Introduction</a>
</div>
<div class="menuItem">
<a href="call-to-vote.html">Call To Vote</a>
</div>
<div class="menuItem">
<span class="menuSelected">Need For Avalon</span>
</div>
<div class="menuItem">
<a href="what-is-a-server.html">What is a Server?</a>
</div>
</div>
</div>
</div>
</td>
<!--================= end Menu ==================-->
<!--================= start Content ==================--><td>
<div id="bodycol">
<div class="app">
<div align="center">
<h1>History</h1>
<h2></h2>
</div>
<div class="h3">
<div class="h3">
<h3>Hardware vs. Software</h3>
</div>
<p>
One thing that always puzzled me is the different quality meters used
on hardware and software by users: little flaws in software systems
are accepted as inevitable, while hardware flaws (even small ones) may
even create market panic if discovered. It's hard to tell why this is
so, but today's software quality standards are becoming more and more
selective, especially when monopolies are broken and users are able to
judge the differences between products and solutions.
</p>
<div class="h3">
<h3>Open Source as Quality Management</h3>
</div>
<p>
The open source development model has emerged as a powerful way to
control and improve software quality. The most important assumption,
in this case, is the fact that debugging and code testing are
parallelizable tasks. For this reason, different individuals are able
to track down problems right into the source code, independently from
one another. In open source projects, compared to closed source ones,
the complexity of the software system grows slower than the ability to
debug it, due to this parallelizable effort.
</p>
<p>
Open source processes are auto-organizative: when a seed of ideas
and goals is thrown in the right place at the right time, it catalyzes
the development process. Usually, when this happens, the user base
expands, the complexity of the software system grows to meet the
requirements of this bigger user base, incorporating new ideas,
solutions and code and creating a positive feedback that keeps the
process going.
</p>
<div class="h3">
<h3>Software Engineering and Open Source</h3>
</div>
<p>
Software engineering doesn't fit well into an auto-organized system
driven by user requirements. Still, I believe that careful software
design may allow the development process to <em>know</em> the ability
of its developers and to provide them guidelines to reduce the work
and to increase parallel capabilities. Of course, due to the extreme
flexibility that open source projects show, software engineers should
carefully design the system to match this flexibility and to avoid any
restriction that may create friction with users and developers.
</p>
<p>
It is evident how the use of modern object oriented programming
languages like Java helps the development and reduces the debugging
efforts because most error prone tasks are handled automatically by
the language itself. Still, the most important object oriented
solutions (such as Interfaces and abstract classes) are very much
unused in auto-organized project, where the work is usually done with
the smallest possible effort to get something working.
</p>
<p>
The incredible improvement in time-to-market offered by these
programming languages that reduce the debugging process to logical
bugs rather than developer's programming mistakes, is a great feature
and it's well appreciated, but it may lead, on the longer term, to
code maintenance problems.
</p>
<p>
In all software systems, the maintenance costs greatly exceed the
first development ones. In open source software systems, the cost is
measured in terms of <em>time</em> and <em>energy</em> spent by
developers to meet the new requirements and to expand the complexity
of the software system. It has been shown (in the Apache JServ
project) that the wrong use of object oriented features may lead to
project stall and create friction between developers and users about
the need for <em>revolutions</em> instead of <em>evolutions</em>
driven by the need of a complete code redesign.
</p>
<p>
The rules "if it works it's good enough" and "if it
works don't change it" may fit well in those programming contexts
where developers need to design the code on their own to make it work.
In object oriented systems, more than ever, working code is not
automatically good code.
</p>
<div class="h3">
<h3>Frameworks and Patterns</h3>
</div>
<p>
The solution I propose is the introduction of coding guidelines to
place new requirements to meet the "working" state: by
introducing the use of software frameworks and design patterns, we are
able to <em>shape</em> the work of developers without restricting
their creativity. While object oriented languages don't pose such
limitations or guidelines, the introduction of carefully designed
engineering rules, contracts and patterns would create some additional
requirements to the development process, but will allow better code
maintenance, a more coherent parallel development process and, in the
longer run, easier maintenance.
</p>
<div class="h3">
<h3>Conclusions</h3>
</div>
<p>
The use of development guidelines and frameworks is proposed as a way
to reduce internal tensions that produce revolutionary development
processes rather than evolutionary ones. Even if such ability is yet
to be demonstrated, it has been shown how object oriented languages
require different approaches and more careful design stages to be
successful in the long run.
</p>
<div id="authors" align="right">by Stefano Mazzocchi</div>
</div>
</div>
</div>
</td>
<!--================= end Content ==================-->
</tr>
</tbody>
</table>
<!--================= end Main ==================-->
<!--================= start Footer ==================-->
<div id="footer">
<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
<tbody>
<tr>
<!--================= start Copyright ==================-->
<td colspan="2">
<div align="center">
<div class="copyright">
Copyright © 2002 The Apache Software Foundation.. All rights reserved.
</div>
</div>
</td>
<!--================= end Copyright ==================-->
</tr>
<tr>
<td align="left">
<!--================= start Host ==================-->
<!--================= end Host ==================--></td><td align="right">
<!--================= start Credits ==================-->
<div align="right">
<div class="credit"></div>
</div>
<!--================= end Credits ==================-->
</td>
</tr>
</tbody>
</table>
</div>
<!--================= end Footer ==================-->
</body>
</html>
1.1 jakarta-avalon-site/site/history/what-is-a-server.html
Index: what-is-a-server.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="../skin/tigris.css" type="text/css">
<link rel="stylesheet" href="../skin/site.css" type="text/css">
<link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
<title>History</title>
</head>
<body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
<!--================= start Banner ==================-->
<div id="banner">
<table width="100%" cellpadding="8" cellspacing="0" border="0">
<tbody>
<tr>
<!--================= start Group Logo ==================-->
<td align="left">
<div class="groupLogo">
<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache" src="../images/group-logo.gif"></a>
</div>
</td>
<!--================= end Group Logo ==================-->
<!--================= start Project Logo ==================--><td align="right">
<div class="projectLogo">
<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache Avalon" src="../images/project-logo.gif"></a>
</div>
</td>
<!--================= end Project Logo ==================-->
</tr>
</tbody>
</table>
</div>
<!--================= end Banner ==================-->
<!--================= start Main ==================-->
<table width="100%" cellpadding="0" cellspacing="0" border="0" id="breadcrumbs">
<tbody>
<!--================= start Status ==================-->
<tr class="status">
<td>
<!--================= start BreadCrumb ==================--><a href=""></a><a href=""></a><a href=""></a>
<!--================= end BreadCrumb ==================--></td><td id="tabs">
<!--================= start Tabs ==================-->
<div class="tab">
<span class="selectedTab"><a href="../index.html"><font color="#000000">Home</font></a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/framework/">Framework</a></span> | <span class="unselectedTab"><a href="../components/index.html">Components</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> | <span class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
</div>
<!--================= end Tabs ==================-->
</td>
</tr>
</tbody>
</table>
<!--================= end Status ==================-->
<table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
<tbody>
<tr valign="top">
<!--================= start Menu ==================-->
<td id="leftcol">
<div id="navcolumn">
<div class="menuBar">
<div class="menu">
<span class="menuLabel">About</span>
<div class="menuItem">
<a href="index.html">Introduction</a>
</div>
<div class="menuItem">
<a href="call-to-vote.html">Call To Vote</a>
</div>
<div class="menuItem">
<a href="need-for-avalon.html">Need For Avalon</a>
</div>
<div class="menuItem">
<span class="menuSelected">What is a Server?</span>
</div>
</div>
</div>
</div>
</td>
<!--================= end Menu ==================-->
<!--================= start Content ==================--><td>
<div id="bodycol">
<div class="app">
<div align="center">
<h1>History</h1>
<h2></h2>
</div>
<div class="h3">
<div class="h3">
<h3>Introduction: Servers and Services?</h3>
</div>
<p>
It's somehow difficult to give a proper definition of "server",
due to the confusion created in the time so far by the different meanings
that term had, facing the different evolution of the technologies.
</p>
<p>
The term "server" is commonly used with at least three different
meanings:
</p>
<ul>
<li>
<strong>"Server" as computer:</strong> With this meaning the
server term is intended to be the computer sharing resources.
<br>
<em>
Ex. Our corporate "server" is a double Pentium II
running at 450 MHz with 12 GB of SCSI hard disk running Linux.
</em>
</li>
<li>
<strong>"Server" as a program:</strong> With this meaning the
server term is intended to be the application that enables the
resource sharing, not caring about the network protocols it
implements.
<br>
<em>
Ex. Our Mail server is FlosieTek FTGate release 2.1 which
implements the SMTP and POP3 protocols.
</em>
</li>
<li>
<strong>"Server" as a protocol handler:</strong> With this meaning
the server term is intended to be the application that enables
the access to shared resources via a specified protocol.
<br>
<em>
Ex. Our HTTP server is Apache 1.3.4.
</em>
</li>
</ul>
<p>
While we can clearly see the difference between the first definition of
"server" (computer) and the other two (applications), it's hard
to see the difference between the second definition ("server" as
a multi-protocol handler) and the third ("server" as a single
protocol handler).
</p>
<p>
Since it's crucial for all developers involved in the Avalon project to
share the same common idea of "server", I would like to define
a server as a <strong>protocol handler</strong>. We would, then, have HTTP servers,
SMTP servers or POP3 servers, but we cannot use the term MAIL server.
</p>
<p>
What we called the mail server is in fact the union of two (or more)
different "server"s (in our example the union of a SMTP and a
POP3 server).
</p>
<p>
We can clearly see, anyway, that a POP3 and an SMTP server will have to
share most resources and code to build up a complete mailing system, like,
for example, a central repository where messages could be stored. We would
then define the union of the SMTP server, the POP3 server and the central
messages repository (we could call it <strong>Mail Engine</strong>) as a Mail
"service". To clarify things a little bit, maybe a picture would
help:
</p>
<div align="center">
<img class="figure" alt="Server 1" src="images/server-01.gif"></div>
<div class="h3">
<h3>Dividing the code</h3>
</div>
<p>
We can clearly see, however, how this approach to the problem brings to
a monolithic implementation of the code, not allowing, or making really
difficult, for other persons to add features, for example, integrating an
IMAP server within our Mail Service.
</p>
<p>
In fact, if we don't clearly separate the code (and a good developer
should always keep in mind his server expansion) adding a feature like an
IMAP server into our service could become hell, and, most developers will
try to find other solutions already in the market rather than using and
improving what we have done.
</p>
<p>
The solution would be to have a sort of "in-core" modularization of our
server.... To be continued...
</p>
<div align="center">
<img class="figure" alt="Server 2" src="images/server-02.gif"></div>
<div align="center">
<img class="figure" alt="Server 3" src="images/server-03.gif"></div>
<div class="h3">
<h3>The concept of a Block</h3>
</div>
<div align="center">
<img class="figure" alt="Server 4" src="images/server-04.gif"></div>
<div class="h3">
<h3>The Avalon Framework</h3>
</div>
<div class="frame fixme">
<div class="label">Fixme (
PF
)</div>
<div class="content">We need some info in here.</div>
</div>
<div id="authors" align="right">by Pierpaolo Fumagalli</div>
</div>
</div>
</div>
</td>
<!--================= end Content ==================-->
</tr>
</tbody>
</table>
<!--================= end Main ==================-->
<!--================= start Footer ==================-->
<div id="footer">
<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
<tbody>
<tr>
<!--================= start Copyright ==================-->
<td colspan="2">
<div align="center">
<div class="copyright">
Copyright © 2002 The Apache Software Foundation.. All rights reserved.
</div>
</div>
</td>
<!--================= end Copyright ==================-->
</tr>
<tr>
<td align="left">
<!--================= start Host ==================-->
<!--================= end Host ==================--></td><td align="right">
<!--================= start Credits ==================-->
<div align="right">
<div class="credit"></div>
</div>
<!--================= end Credits ==================-->
</td>
</tr>
</tbody>
</table>
</div>
<!--================= end Footer ==================-->
</body>
</html>
1.1 jakarta-avalon-site/site/history/images/server-01.gif
<<Binary file>>
1.1 jakarta-avalon-site/site/history/images/server-02.gif
<<Binary file>>
1.1 jakarta-avalon-site/site/history/images/server-03.gif
<<Binary file>>
1.1 jakarta-avalon-site/site/history/images/server-04.gif
<<Binary file>>
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-cvs-help@jakarta.apache.org