Hi,

I saw several messages passing concerning HTTP servers versus 
application servers.

[* 1 *]. HTTP servers communicate responses to client requests over HTTP 
protocol. This protocol was initially conceived for exchanging documents 
and easily access bibliography (using hyperlinks) through text messages 
over TCP/IP. An HTTP server is, thus, supposed to be able to deliver 
static HTML pages (or other static resources) at client request. Several 
HTTP servers, most of them commercial ones (you had to pay to get them) 
were built, but the community of webmasters, unsatisfied, conceived one 
as an open sources project. It was knew as "A Patchy server" or "Apache 
server", it became the most widespreaded HTTP server and it is at the 
origin of the Apache fondation. As the Apache fondation hosts today very 
many projects, the server is called today "Apache httpd server".

Application servers execute some application code, on a centralized 
server machine and communicate with client code through some protocole.

Application servers arose pushed by two kinds of needs:
-- [* 2 *] Web development made useful to have dynamic (i.e. computed on 
request) content sent in response to a HTTP request, implying extracting 
data from some persistency repository (such as a database) and 
processing them. This kind of application servers complement the 
facilities of a HTTP server (1)
-- [* 3 *] Enterprise class applications became too heavy to be executed 
on end user desktops. The solution would be to isolate heavy business 
rules data process and to execute them on a big centralized server, 
leaving the end user desktops to execute only the necessary code for 
managing the user interface (that implies heavy data processing too)

Different technologies allow to build and use application servers. Java 
technologies use "servlet containers" for (2) and "EJB containers" for (3).

Servlet containers (2) are able to execute "servlets": Java code 
(respecting some - more or less - simple conventions) that produce HTTP 
output. The servlets may be implicitely generated from scripting code 
(such as Java Server Pages).

EJB containers (3) are able to manage "Enterprise Java Beans": Java code 
(respecting some - more or less - simple conventions) that encapsulates 
business objects. The EJB containers are supposed to process the 
business logic, leaving the user interface code to just display data or 
gather the data entered by the user.

A complex n-Tiers architectures may include
-- a database server,
-- an EJB container (3) that access the database and process data 
according to the business rules,
-- a servlet container (2) that gets the EJB from the EJB container and 
composes the HTML dynamic pages (manages the user interface),
-- an HTTP server (1) that sends the HTML dynamically generated pages by 
the servlet container to the end user web explorer.
(all the components are not essentially necessary for /any/ application)

The Apache fondation also hosts Open Sources projects for (2) and (3).

Apache Tomcat is a server combining a HTTP server (I think the original 
project was called Coyote) and a servlet container (Catalina servlet 
container). It allows to execute servlets (2) and to deliver the 
response through the HTTP protocol (1). As everything is written in 
Java, it is a very compact and easy to deploy application server of the 
(2)nd kind. It is possible to use Apache Tomcat's servlet container with 
a more powerful and more flexible Apache httpd server. As Apache httpd 
is not written in Java, the deployment of such a solution is more 
complicated, although very interesting for performance tuning purposes, 
but there is no change from the point of view of the application - no 
need to bother: Apache Tomcat is enough for learning servlet and JSP 
programming.

Apache Geronimo is an application server that combines an Apache Tomcat 
server (1 and 2) with a EJB container (3), also available from the 
Apache fondation. Apache Geronimo (and implicitely Tomcat) code is 
included in the code of other commercial or free application servers on 
the market.

If Apache httpd is the mose widespreated HTTP server (1) in the world, 
Apache Tomcat is one of the mostly used as embedded application server 
(2). Whenever you install an application that allows a stand alone HTTP 
user interface, then there must probably be an embeded Tomcat server 
silently installed somewhere there (unless the application provider is 
Microsoft Itself and the embeded server is IIS). When there is no need 
for a distinct EJB container, Apache Tomcat is the perfect tool, for 
training in particular.

As far as I know, Apache Geronimo is not as widespreaded as Tomcat, 
although the derived commercial servers are largely used. Complete (1 + 
2 + 3) servers well known on the market are: JBoss (Open Source 
project), WebSphere (from IBM, including a free community version), 
Glassfish (Open Source project from SUN), ...

Application servers also include supplementary goodies, such as tools 
for managing named resources like databases or facilities for defining 
the security options.

NetBeans can be downloaded (from www.netbeans.org) with already embedded 
Apache Tomcat (V6.something I think) and Glassfish (V2 and V3) servers. 
Servlet and JSP exemples and homeworks can be executed on any of them, 
at least in theory. More sophisticated exemples (such as ones using 
database access) may find more facilities (such as embedded tools for 
the "Java Database") on Glassfish servers. EJB-based training need 
Glassfish servers. Of course, other servers can be added to the NetBeans 
platforms, but for the training purposes I think Apache Tomcat and 
Glassfish are sufficient.

Hope it helps
mihai

diegosouza.br a écrit :
> JBoss implements the whole Java EE Specification. It's not interesting
> to you if you are a beginner.
>
>
> On Oct 7, 7:17 pm, tedpottel <tedpot...@gmail.com> wrote:
>   
>> Hi,
>> I was thinking about installin tomcat to do jsp pages and learn j2ee.
>> If I understand it JBoss is tomcat and other stuff added to it.
>>
>> Would I be better of to install JBOss instad of tomcat?
>>     
>
> >
>
>
>   

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Java EE (J2EE) Programming with Passion!" group.
To post to this group, send email to
java-ee-j2ee-programming-with-passion@googlegroups.com
To unsubscribe from this group, send email to
java-ee-j2ee-programming-with-passion+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/java-ee-j2ee-programming-with-passion?hl=en?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to